首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JavaScript 變量提升導致 undefined 經典案例解析

     編輯:程式設計疑難解答

代碼

var a = 'a';
say();
function say() {
    console.log(a); // undefined
    var a = 'b';
    console.log(a); // 'b'
}

原理

函數內 var a 被提升至函數頂部並初始化為 undefined,等價於:

function say() {
    var a = undefined; // 提升
    console.log(a);    // 訪問局部 a → undefined
    a = 'b';           // 賦值
    console.log(a);    // 'b'
}

關鍵點

  • var 聲明提升,賦值留在原處。
  • 外層 a 被內層同名變量遮蔽(Shadowing)。
  • ES6 let/const 有暫時性死區,直接報錯 ReferenceError,避免此陷阱。

理解提升機制是掌握 JS 作用域的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved