Skip to content
S1ngS1ng edited this page Apr 7, 2017 · 1 revision

基本布尔类型检查

问题解释

  • 这个 function 接收一个参数 bool,为待判断的值。返回值为 Boolean,若传入的 bool 是布尔类型,就返回 true,否则返回 false
  • 比如,传入 true 或者 false,由于他们都是布尔类型,所以应该返回 true。如果传入 1,由于这是数字,所以返回 false

基本解法

思路提示

  • 讲真,这道题的难度真不应该算是中级,但如果展开来说,还是有一些东西值得多说几句的
  • 首先,复习一下基本知识吧,在 JavaScript 中,数据类型总共有两大类和七种:
    • Primitive Type (原始类型)
      • Boolean
      • Null
      • Undefined
      • Number
      • String
      • Symbol (ES6 加入的)
    • Non-primitive Type (非原始类型)
      • Object
  • 需要说明一点,在这里,Null 类型其实就是 nullUndefined 类型就是 undefined。首字母大写,可以理解为是一个"抽象类"
  • 还需要知道的,就是 typeof 运算符。注意,之所以叫它运算符,是因为它的调用方式有别于其他方法。typeof foo 就可以获取变量 foo 的类型,而不是像我们常见的通过括号来传参
  • 至于 typeof 的返回值,是一开始很容易踩的一个坑。首先,它的返回值是字符串,而且都是小写字符
    • 比如,typeof 1 会返回 "number"
    • 再比如,typeof undefined 会返回 "undefined"
  • 更有意思的是,虽然 nullObject 是完全不同的两个类型,但 typeof 来检测他们,都会返回 "object"。你可以试试 typeof nulltypeof {a:1}
  • 而且,typeof 一个数组,你不会得到 "array",而是也会得到 "object"
  • 对于这道题,你只需要知道 typeof 对于布尔值会返回 "boolean" 就够了

参考链接

代码

function boo(bool) {
    return typeof bool === 'boolean';
}

也可以这样

function boo(bool) {
    return bool === Boolean(bool);
}

解释

  • 两种写法都不难理解。如果你看不明白,是时候去补一波基础了
  • 对于想在这道题目中深挖的,建议你可以去了解一下 JavaScript 的传参方式。以下是几个我觉得很有用的链接:

参考链接

Clone this wiki locally