了解 ES6 中 var、let 和 const 的範圍
了解 ES6 中的全局、本地和塊級作用域
發病前 ES2015(ES6) , 這
曾是
statement 是在 JavaScript 中聲明變量的唯一選項。然而,由于
讓
和
常量
在 ES6 中添加,這已經改變,并且
曾是
現在很少使用了。此外,使用還有一些好處
讓
和
常量
超過
曾是
我們将在這篇文章中通過檢查它們在範圍方面的差別來進行介紹。
範圍
範圍隻是指使用這些變量的區域。在 ES6 之前,隻有兩個作用域: 全局和局部/功能範圍 .然而, 塊範圍 ,這是範圍
讓
和
常量
現在可以在 ES6 中使用。讓我們用一個例子來進一步了解這三個作用域。
全球範圍
變量的範圍被稱為 全球的 如果
曾是
變量被聲明 在函數之外 .
**變量年齡 = 28;** 功能問候(){
var message = “你好”;
控制台.log(消息); // 你好
} **控制台.log(年齡); // 28**
這裡,
年齡
是 全球 作用域是因為它是在函數外部聲明和定義的,是以可以從整個視窗中的任何位置通路。
本地/功能範圍
一個
曾是
變量有 功能範圍 如果它是在函數内部定義的。
變量年齡 = 28; 功能問候(){
**var message = “你好”;**
控制台.log(消息); // 你好
} **控制台.log(消息); // ReferenceError: 消息未定義**
在上面的代碼中,如果我們嘗試通路
資訊
變量外
迎接
函數然後是 參考誤差 被退回。這是因為變量的範圍僅限于定義它的函數。是以,它不能從函數外部通路。雖然,在函數中,它确實列印了消息 功能範圍 .
塊範圍
塊是由 {} 分隔的一段代碼,代碼所在的位置。
**讓年齡= 28;** 如果真實) {
**讓年齡= 30;**
**讓消息=“你好”;**
控制台.log(年齡); // 30
} 控制台.log(年齡); // 28
控制台.log(消息); // ReferenceError: 消息未定義
在 ES6 中,
讓
和
常量
兩者都有 塊級作用域 .在上面的例子中,我們有兩個
讓
聲明的變量 一樣的名字 IE
年齡,
内部和外部
如果
堵塞。
什麼時候我們
控制台日志
同樣,我們看到兩者都列印不同的值。這是因為兩者都有自己的 塊範圍 .
此外,該
資訊
内部聲明的變量
如果
堵塞 不能在塊外通路 并傳回錯誤。這表明該範圍
資訊
變量是 限制在
**如果**
僅塊,它是塊級範圍 .當我們聲明一個
讓
或者
常量
函數内部或作為函數一部分的代碼塊内部的變量。
“var”的問題
有 一個問題 我們看到的
曾是
.你能在下面的代碼中識别它嗎?
**變量年齡 = 28;** 如果真實) {
**變量年齡 = 30;**
控制台.log(年齡); // 30
} 控制台.log(年齡); // 30
如果我們檢視上面的示例,它與我們使用的代碼相同
讓
我們的變量 塊範圍 例子。但是,這裡的輸出是不同的,因為兩者
控制台日志
印刷
30
代替
28
&
30
不像
讓
變量。
這是我們看到的主要問題之一
曾是
在哪裡 覆寫 下一個
曾是
用 聲明的變量 一樣的名字 在不屬于函數的塊内。 這是因為
**曾是**
在不屬于函數的塊内聲明的變量将獲得全局範圍 .
是以,在 ES6 之後,使用
曾是
大部分被避免,并且
讓
和
常量
被使用。雖然,
曾是
ES6 仍然支援不支援最新 ES6 功能的舊代碼和浏覽器。
感謝您的閱讀。
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結和本聲明
本文連結:https://www.qanswer.top/20720/39100700