基本布尔类型检查 (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 章节
- 这个系列,不谈了,看过都说好。建议有空的话把其他几本也看完