typeof 的特別之處 —— 不報錯

遇到了一個題目,很基礎,但是也很容易犯錯,看下唄。

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

你認爲結果是什麼?

當時我的第一反應是“1Function”。但是正確答案是 1undefined字符串。

這個題目主要是考查兩個基礎點:第一,ifl語句裏面放的是表達式;第二,typeof的返回值是字符串,typeof是在任何情況下都不會報錯的唯一的一個標識符。

這就可以解釋了,if語句把函數聲明變成了表達式,所以函數f就消失了,沒有定義。任何未定義就直接使用的變量會報錯,但是typeof是唯一不報錯的時候,返回undefined字符串,使用+連接字符串返回的還是字符串,最後結果就得1undefined。

就是一道簡單得題,但是不容易解釋清楚裏面的原理。成哥分享的,我也分享給大家,考查的很基礎很基礎。

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