日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS中的变量提升

發布時間:2025/3/21 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS中的变量提升 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于JS引擎的工作方式,是先獲取所有被聲明的變量再逐一執行,所以變量的聲明語句都會被提升到當前代碼塊的頭部。

例1:

var a = 1;function test1(){alert(a);var a = 2;alert(a);}test1();//undefined,2

輸出結果是undefined,2,并不是1,2,實際執行順序:

var a = 1;function test1() {var a; //變量提升,先聲明a(當局部變量與全局變量重名時,局部變量優先級高于全局變量,所以會覆蓋全局變量,此時的a只有聲明卻未定義)alert(a);//所以執行alert值為undefineda = 2;alert(a);//此時a=2}test1();

例2:

function test2() {alert("before for scope:" + i); //不會報錯,undefined,變量提升i已聲明未賦值for (var i = 0; i < 3; i++) { //for不存在作用域之說alert("in for scope:" + i); // i的值是 0、1、2, 當i為3時跳出循環}alert("after for scope:" + i); // i的值是3,注意,此時已經在for scope以外,但i的值仍然保留為3while (true) {var j = 1;break;}alert(j); // j的值是1,注意,此時已經在while scope以外,但j的值仍然保留為1if (true) {var k = 1;}alert(k); //k的值是1,注意,此時已經在if scope以外,但k的值仍然保留為1}test2();alert(i); //此處報錯,i指的是全局變量,is not defined(未定義),程序中斷

注意:

1.當局部變量與全局變量重名時,局部變量優先級高于全局變量,所以會覆蓋全局變量;

2.全局變量是指在函數外定義,全局可訪問;局部變量是指函數內定義,外部不能正常訪問;

3.函數作用域是指function的作用域,像if/while等并沒有作用域;

4.is not defined是指變量未定義(未聲明),undefined則是指變量已經聲明但可能未賦值等其他原因;

5.undefined不影響運行,is not undefined會直接報錯,中斷運行;

6.在函數內部定義變量時,如果不加var而是直接如i = 1這種,實際相當于定義了一個全局變量;

總結

以上是生活随笔為你收集整理的JS中的变量提升的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。