首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

JScript 變數作用域完整解析:全域 vs 局部、無區塊作用域、提升機制

     編輯:Java 程式設計入門

兩大作用域

  • 全域:函數外宣告,整個程式存續期可存取修改。
  • 局部:函數內宣告,每次呼叫建立、結束銷毀,外部不可存取。

無區塊作用域

{} 不建立新作用域(C++/Java 有)。if/for/while 區塊內 var 宣告實為函數作用域。

同名變數遮蔽

var a = "global";
function f() {
    var a = "local";
    a += " modified";
}
// 外部 a 不受影響

變數提升

  • 函數執行前,引擎掃描所有 var 宣告,建立變數並初始化為 undefined。
  • 賦值語句留在原位,宣告被「提升」至函數頂部。
  • 條件區塊內的 var 同樣提升,無論條件真假。

隱性全域變數陷阱

function f() {
    x = 10; // 未用 var → 隱性全域變數(嚴格模式拋錯)
}

嚴格模式 ("use strict") 禁用隱性全域,強制宣告。

完整範例追蹤

var a = 100;
function tweak() {
    var b = 0;
    b = a;      // 此時 a 為 undefined(局部 a 已提升但未賦值)
    var a = 42; // 實際賦值在這行
    if (false) { var a = 123; } // 提升發生,但不執行
}
tweak();
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved