FreeCodeCamp 中级算法题 - 基本布尔类型检查

基本布尔类型检查 (Boo Hoo)

题目链接

问题解释

  • 这个 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" 就够了

参考链接

代码

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

也可以这样

1
2
3
function boo(bool) {
return bool === Boolean(bool);
}

解释

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

参考链接

文章目录
  1. 1. 基本布尔类型检查 (Boo Hoo)
    1. 1.1. 题目链接
    2. 1.2. 问题解释
  2. 2. 基本解法
    1. 2.1. 思路提示
    2. 2.2. 参考链接
    3. 2.3. 代码
    4. 2.4. 也可以这样
    5. 2.5. 解释
    6. 2.6. 参考链接
,