typeof 的特别之处 —— 不报错

遇到了一个题目,很基础,但是也很容易犯错,看下呗。

        var x = 1;
        if (function f() {}) {
            x += typeof f;
        }
        console.log(x);

你认为结果是什么?

当时我的第一反应是“1Function”。但是正确答案是 1undefined字符串。

这个题目主要是考查两个基础点:第一,ifl语句里面放的是表达式;第二,typeof的返回值是字符串,typeof是在任何情况下都不会报错的唯一的一个标识符。

这就可以解释了,if语句把函数声明变成了表达式,所以函数f就消失了,没有定义。任何未定义就直接使用的变量会报错,但是typeof是唯一不报错的时候,返回undefined字符串,使用+连接字符串返回的还是字符串,最后结果就得1undefined。

就是一道简单得题,但是不容易解释清楚里面的原理。成哥分享的,我也分享给大家,考查的很基础很基础。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章