我有一個簡單的程序,我第一次在瀏覽器中運行。我在行6。當我試圖找出a,b的值 - 瀏覽器以值'undefined'響應。但是,當我試圖找出價值c,當然哪些不存在它給我一個錯誤。通過簡單的程序JS的變量識別
我的問題是,當我在線6調試 - b & C的狀態必須是相同的 - 要麼兩個「未定義」或兩個「給錯誤」,因爲在線路程序中沒有6,a存在 - 但是都是 - b & c是處於這種程序狀態的幽靈,那麼它是如何給b定義爲undefined和c爲錯誤(哪個粗略是正確的)。但是,程序何時發現我使用哪些變量,哪些不是,當我還在中間時,在程序的前半部分,首次運行它。
任何標準的鏈接,文檔? – Deadpool
如果你想閱讀規範:http://www.ecma-international.org/ecma-262/6.0/index.html#sec-globaldeclarationinstantiation第16步的全球環境和http://www.ecma-international .org/ecma-262/6.0/index.html#sec-functiondeclarationinstantiation步驟27和28的功能。否則,各種資源提供更容易理解的解釋,例如https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var#var_hoisting或https:// github。com/getify/You-Dont-Know-JS/blob/master/scope%20&%20closures/ch4.md,但它們不是「標準」的。 –