javascript 中為什麼要用typeof x ===‘undefined’

來源:互聯網
上載者:User
0. undefined  本身的介紹     undefined is a property of the  global object, i.e. it is a variable in global scope.    JavaScript 1.8.5 note

Starting in JavaScript 1.8.5 (Firefox 4), undefined is non-writable, as per the ECMAScript 5 specification.

1.關於undefined值的判斷: 有 a:x== undefined,b: x===undefined,c:typeof x == 'undefined';d:typeof x === 'undefined'a方式 的缺陷:x=null,時x== undefined 返回true;why???原因是==符號隱含了一次類型轉換操作。。。很不幸 null能轉成undefined(反之亦可).b方式的缺陷:當x未聲明時,b會報變數未聲明的錯誤。。。也可以通過window.x===undefined來表示。。。這時候你就得記著你判斷的成員是屬於哪個對象的了c,d方式避免了b的缺陷。。。不必考慮x是全域還是本域了 此外考慮下面代碼:function foo(){    if(!bool){     alert(bool);       }    var bool = true;} 是不是會認為會報變數未聲明的錯誤?很遺憾,沒有。。。原因在於js中變數的特殊建立邏輯:js引擎做文法分析,發現顯示聲明時。js引擎做代碼執行,發現試圖寫一個未被建立的變數時。 js中代碼的運行實際上包含兩個階段,第一階段是文法解釋階段(注意不是文法檢測階段),第二階段就是執行階段。當調用foo函數(foo())時,實際上js引擎先對foo函數進行了文法解釋,此時由於語句中用var關鍵字顯示聲明了bool,按照js的變數建立邏輯,實際上在fool函數真實執行時bool已經存在,其值為undefined了。同樣按照上述邏輯,代碼中去掉var 關鍵字,馬上就會出現變數未聲明的錯誤了。 關於js變數的生命週期,詳細參見javascript 語言精髓與編程實踐 第二版 p154 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.