js的變數作用域 ,變數提公升

2022-04-23 09:08:26 字數 666 閱讀 3672

(function())();
結果: undefined 10

**等同於下面

var a = undefined;   //定義全域性變數

(function())();

分析:

1.在產生乙個作用域的時候,會預編譯一次裡面的變數,其中的動作是將所有的變數名,函式名,提前定義,然後在賦予當前的變數的所在作用域,執行。

2.變數名的定義會覆蓋函式名,可是函式名(見下面)

var a;

function a()

a(); //alert(12)

a = 10;

a(); //uncaught typeerror: a is not a function

a的定義,function的定義 換個順序

(function()

alert(a);

alert(a());//uncaught typeerror: a is not a function

})();

//分析:a() 的函式名並不會覆蓋變數名

function a()

(function())();

js變數作用域 變數提公升

1 js作用域 在es5中,js只有兩種形式的作用域 全域性作用域和函式作用域,在es6中,新增了乙個塊級作用域 最近的大括號涵蓋的範圍 但是僅限於let方式申明的變數。2 變數宣告 1 var x 變數宣告 2var x 1 變數宣告並賦值 3 x 1 定義全域性變數並賦值 3 函式宣告 func...

變數提公升 作用域

console.log a undefined console.log window.a undefined console.log a in window true 在變數提公升階段,在全域性作用域中宣告了乙個變數a,此時就已經把a當做屬性賦值給window了,只不過此時還沒有給a賦值,預設值un...

JS變數提公升,函式宣告提公升及變數作用域的理解

在一般情況下,js 都是自上而下執行的,對於同乙個變數,可以通過如下方式來修改 var a 1 a 2 console.log a 2 a function console.log a function console.log a var a 1 console.log b var b functi...