ECMAScript是一種由Ecma國際(前身為歐洲電腦製造商協會)在標準ECMA-262中定義的手稿語言規範。
ECMAScript 負責定義一些腳本語言所需遵守的標準及規範,JavaScript 即是按 ECMAScript的規範,所實現出來的語言,所以有時 ECMAScript 和 JavaScript 會被畫上等號,但其實兩者是不一樣的!
簡單來說,ECMAScript 是 JavaScript 的國際標準,JavaScript 是 ECMAScript 的實現。
let
& const
在ES6之前,JavaScript並沒有區塊域(block)的概念,更精確的說,之前版本所定義的變數,特性相當於全域變數
。
因此ES6之前使用”var”宣告所有的變數,但這樣的宣告方式可能會出現"區域變數覆蓋全域變數"的情況發生。而在ES6發佈之後,有了區塊域(block)的概念以及“let”的推出,上述的問題就可以避免了。
ES6 之前的宣告範例: var
從下面例子來看,輸出結果會是 5。雖然 x 是在 if { } 區塊裡面被宣告的,但卻因為有全域變數的特性,因此溢出大括號而成為後續程式碼的變數值。
(即不只在宣告的區塊或函數裡面有效,其變數值還會超出宣告區塊而影響到全部的範圍。)
if (true) {
var x = 5;
}
console.log(x); // x is 5
ES6 之後的宣告範例: let
接著舉一個 ECMAScript 2015 之後的宣告範例。當使用了 let 這個區域變數宣告方式,變數 y 的有效範圍只有在 if { } 的範圍內;因此超出{ }範圍時,輸出結果是 ReferenceError。
if (true) {
let y = 5;
}
console.log(y); // ReferenceError: y is not defined (y沒有被定義)
簡單來說, var 與 let 其實很類似,但使用 let 不會汙染全域變數;相較於 var 來說,let會更加提升程式的嚴謹性和安全性。
---- 今天先到這裡,決定留點扣打,明天再好好寫 var、let、const的用法及ES6的不同之處了哈哈哈哈 ----
參考來源:
https://es6.ruanyifeng.com/#docs/intro
https://www.fooish.com/javascript/ES6/
https://totoroliu.medium.com/javascript-var-let-const-%E5%B7%AE%E7%95%B0-e3d930521230
https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Guide/Grammar_and_types