遇到了一个题目,很基础,但是也很容易犯错,看下呗。
var x = 1;
if (function f() {}) {
x += typeof f;
}
console.log(x);
你认为结果是什么?
当时我的第一反应是“1Function”。但是正确答案是 1undefined字符串。
这个题目主要是考查两个基础点:第一,ifl语句里面放的是表达式;第二,typeof的返回值是字符串,typeof是在任何情况下都不会报错的唯一的一个标识符。
这就可以解释了,if语句把函数声明变成了表达式,所以函数f就消失了,没有定义。任何未定义就直接使用的变量会报错,但是typeof是唯一不报错的时候,返回undefined字符串,使用+连接字符串返回的还是字符串,最后结果就得1undefined。
就是一道简单得题,但是不容易解释清楚里面的原理。成哥分享的,我也分享给大家,考查的很基础很基础。