Var Vs 離開 Javascript

| | |

隨著 ECMAScript6 (ES6) 的發布,JavaScript 語言中添加了新功能。這些特徵之一會影響我們聲明變量的方式。隨著 letconst 的加入,關於何時使用每個變量聲明都有各種各樣的問題。

在此在文章中,我們討論了每個選項,關於它們在 JavaScript 環境中的定義和使用。

Pre-ES6:Var

在 ES6 發布之前,用於variables 是 var 的聲明。

變量也可以重新聲明和更新而不會出錯

var 的第一個問題很明顯:如果變量已經被賦予了相同的名稱,重新聲明可能會導致代碼中的錯誤。如果再次聲明某些內容並且您沒有意識到變量名稱已在代碼庫中使用,則可能會產生意想不到的後果。除此之外,關於 範圍 和提升的其他特性也出現了。

範圍

範圍告訴我們什麼變量可供我們使用——我們有可以是全局或局部範圍的變量。如果我們有相同的變量聲明,但是是全局的而另一個是局部的呢?

當我們的 var 在函數外部聲明時,它對我們全局可用。當在函數中聲明“hello”時,它只對函數可用——具有函數作用域或局部作用域

當我們有一個相同的變量聲明,但作用域不同時,函數中的var不會改變全局var的賦值,即使調用了 helloWorld()。由於 var 在函數中聲明為“hello”,因此它似乎不在替代定義的全局範圍內。

Hoist

當一個變量在 JavaScript 中被提升時,函數和變量的聲明在代碼執行之前被移動到它們作用域的開頭。變量已聲明但未初始化,因此變量的初始值未定義。

在這裡,“你好”被吊起並聲明在你觸手可及的頂端。所以基本上計算機會這樣解釋代碼:

JavaScript 引擎看到 hello 存在,但直到下一步才知道 hello 是如何定義的。

最終幫助創建 ECMAScript 標準的開發人員意識到 var 存在一些小問題,可能會花費他們時間和金錢。所以他們決定創建更嚴格的關鍵字。這導致在 ES6 中創建了“leave”和“cost”

ES6:。 Let

let 關鍵字在很多方面與 var 關鍵字非常相似。主要區別在於返回錯誤的方式和定義每個關鍵字的範圍。

let關鍵字聲明和初始化的變量可以重新賦值,但不能重新聲明

當你在 JavaScript 控制台中運行上面的代碼時,最後一行返回一個錯誤:

SyntaxError: The identifier ` hello` 已被聲明

var 不同,使用 let 聲明變量將不允許聲明相同。變量名。但是,您可以根據需要重新分配,如上例所示。

Scope

Champ-wise, let 非常相似>var。除了全局或局部作用域給我們的規則之外,還有一個額外的約束條件是 let。在代碼塊中聲明的變量僅適用於該代碼塊。這類似於函數範圍,因為函數是代碼塊,可以通過在該函數中具有單獨的塊來進一步攜帶。

這段代碼沒有錯誤,因為hello 的兩個實例被視為單獨的變量,因為它們具有不同的作用域。

提升

提升是 let 和 var 聲明相似的另一個領域。 “Var”在引發時被初始化為未定義。但是,如果您在初始化之前嘗試使用“leave”,則會產生引用錯誤。

請注意,let 關鍵字是語法方面的最佳選擇。這是因為當你可以嘗試重新聲明一個變量或在初始化過程之前使用它時會產生錯誤。

ES6: Const

const關鍵字有比 let keyword 更嚴格的指導方針。使用 const,不能聲明或重新分配變量。如果您嘗試重新分配給 const,則會生成 TypeError。

也就是說,當使用對像或數組時,對像或數組的屬性可能會被更新。只要對像或表的基本結構不變,隨時可以更新。

如示例所示,將任務重新分配給一組新屬性會導致 TypeError: Assignment to constant variable. 錯誤。 const 不能重新分配或重新聲明,除非您更新對像中的唯一屬性

Scope 和 Lift

就像 let 關鍵字一樣,const 是作用域塊,在提升時不會初始化,所以如果你在初始化之前嘗試使用它會拋出一個錯誤。

const 關鍵字是理想的使用,直到你不能`t’不是使用更多 這是當你需要轉移或放置來更新你的變量時

結論

在本文中,我們研究了letvar成本。在我們目前擁有的所有關鍵字中,除非必要,最好不要使用var。而是使用letconst

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method