// ES6 — let
let a = 1;
if (1 === a) {
let b = 2;
}
for (let c = 0; c < 3; c++) {
// …
}
function letsDeclareAnotherOne() {
let d = 4;
}
console.log(a); // 1
console.log(b); // ReferenceError: b is not defined
console.log (c); // ReferenceError: c is not defined
console.log(d); // ReferenceError: d is not defined
// window
console.log(window.a) ; // 1
console.log(window.b); // undefined
console.log(window.c); // undefined
console.log(window.d); // undefined
As we can see, this time only variable a is declared as a global. let gives us a way to declare block scoped variables, which is undefined outside it.
var name = 'shitu91'
var name = 'shituketang'
console.log(name) //shituketang
}
使用var 兩次輸出都是shituketang,你現在看到的內層變數覆蓋外層變數, 這是因為ES5只有全域作用域(scope)和函數作用域,沒有區塊級作用域。
if (true) {
let name = 'shituketang'
console.log(name) //shituketang
#}
demo2 計數的循環變數洩漏為全域變數
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a6; // 10
在上面程式碼中,變數i是var聲明的,在全域範圍內都有效。所以每一次循環,新的i值都會覆蓋舊值,導致最後輸出的是最後一輪的i的值。
而使用let則不會出現這個問題。
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i );
};
}
a6; // 6
demo3
var clickBoxs = document.querySelectorAll('.clickBox')
for (var i = 0; i < ; clickBoxs.length; i++){
clickBoxs[i].onclick = function(){
console.log(i)
}
function iteratorFactory(i){
var onclick = function(e){
console.log(i)
}
return onclick;
}
var clickBoxs = document .querySelectorAll('.clickBox')
for (var i = 0; i < clickBoxs.length; i++){
clickBoxs[i].onclick = iteratorFactory(i)
}
const也用來聲明變量,但是聲明的是常數。一旦聲明,常量的值就不能改變。
const PI = Math.PI
當我們試著去改變用const聲明的常數時,瀏覽器就會報錯。 const有一個很好的應用場景,就是當我們引用第三方函式庫的時宣告的變量,用const來宣告可以避免未來不小心重命名而導致出現bug:+
// todo
let 和const 宣告只在最靠近的一個區塊中(花括號內)有效
當使用常數const 宣告時,請使用大寫變量,如:CAPITAL_CASING
const 在宣告時必須被賦值
Let:
console.log(name;
console.log (new_name);
Console:
"Max"
Here we see that both let and var do the same thing So what is the difference?
let age = 24; // in the scope of the 'if' statment
}
console .log(age); // not in scope of the 'if' statement
Console:
"Reference Error: age is not defined
As another example, when using variables in a for loop, the index won't be used outside of the loop anymore!
以上是JavaScript--ES6講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!