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

歡迎訪問 生活随笔!

生活随笔

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

javascript

【JavaScript】比较 var 和 let 关键字的作用域

發布時間:2025/3/21 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【JavaScript】比较 var 和 let 关键字的作用域 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

比較 var 和 let 關鍵字的作用域

使用 var 關鍵字聲明變量時,它是全局聲明的,如果在函數內部聲明則是局部聲明的。

let 關鍵字的行為類似,但有一些額外的功能。 在代碼塊、語句或表達式中使用 let 關鍵字聲明變量時,其作用域僅限于該代碼塊、語句或表達式。

例如:

var numArray = []; for (var i = 0; i < 3; i++) {numArray.push(i); } console.log(numArray); console.log(i);

此處控制臺將顯示值 [0, 1, 2] 和 3。

使用 var 關鍵字,i 是全局聲明的。 所以當 i++ 被執行時,它會更新全局變量。 此代碼類似于以下內容:

var numArray = []; var i; for (i = 0; i < 3; i++) {numArray.push(i); } console.log(numArray); console.log(i);

此處控制臺將顯示值 [0, 1, 2] 和 3。

如果你創建一個函數,將它存儲起來,稍后在使用 i 變量的 for 循環中使用。這么做可能會出現問題。 這是因為存儲的函數將始終引用更新后的全局 i 變量的值。

var printNumTwo; for (var i = 0; i < 3; i++) {if (i === 2) {printNumTwo = function() {return i;};} } console.log(printNumTwo());

此處控制臺將顯示值 3。

可以看到,printNumTwo() 打印了 3 而不是 2。 這是因為賦值給 i 的值已經更新,printNumTwo() 返回全局的 i,而不是在 for 循環中創建函數時 i 的值。 let 關鍵字就不會出現這種現象:

let printNumTwo; for (let i = 0; i < 3; i++) {if (i === 2) {printNumTwo = function() {return i;};} } console.log(printNumTwo()); console.log(i);

在這里控制臺將顯示值 2 和一個錯誤提示 i is not defined。

i 未定義,因為它沒有在全局范圍內聲明。 它只在 for 循環語句中被聲明。 printNumTwo() 返回了正確的值,因為 let 關鍵字創建了三個具有唯一值(0、1 和 2)的不同 i 變量在循環語句中。

總結

以上是生活随笔為你收集整理的【JavaScript】比较 var 和 let 关键字的作用域的全部內容,希望文章能夠幫你解決所遇到的問題。

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