基本布尔类型检查 (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
- Primitive Type (原始类型)
- 需要说明一点,在这里,Null 类型其实就是
null,Undefined类型就是undefined。首字母大写,可以理解为是一个”抽象类” - 还需要知道的,就是
typeof运算符。注意,之所以叫它运算符,是因为它的调用方式有别于其他方法。typeof foo就可以获取变量foo的类型,而不是像我们常见的通过括号来传参 - 至于
typeof的返回值,是一开始很容易踩的一个坑。首先,它的返回值是字符串,而且都是小写字符- 比如,
typeof 1会返回"number" - 再比如,
typeof undefined会返回"undefined"
- 比如,
- 更有意思的是,虽然
null与Object是完全不同的两个类型,但typeof来检测他们,都会返回"object"。你可以试试typeof null和typeof {a:1} - 而且,
typeof一个数组,你不会得到"array",而是也会得到"object" - 对于这道题,你只需要知道
typeof对于布尔值会返回"boolean"就够了
参考链接
代码
1 | function boo(bool) { |
也可以这样
1 | function boo(bool) { |
解释
- 两种写法都不难理解。如果你看不明白,是时候去补一波基础了
- 对于想在这道题目中深挖的,建议你可以去了解一下 JavaScript 的传参方式。以下是几个我觉得很有用的链接:
参考链接
- 关于传值方式的讨论
- 第一个回答,我觉得解释的很好,例子也恰到好处
- 同样是关于传值方式的讨论
- 还是第一个回答,跟上面的有些类似,也很不错
- You Don’t Know JS 的 Types & Grammer 章节
- 这个系列,不谈了,看过都说好。建议有空的话把其他几本也看完