|
導讀網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立... 網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立在超文本基礎之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。 本篇文章給大家帶來的內容是關于ES6中var、let、const、塊級作用域以及暫存死區的介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。var語法 var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]]; 使用 var a, b=2 // 聲明多個變量,可以賦值,也可以不賦值 a=1 // 先聲明,再賦值 var變量提升 使用var聲明的變量將會被提升到函數的頂部 console.log(a) // undefined var a =2 console.log(a) // 2 console.log(b) //Uncaught ReferenceError: b is not defined... 以上代碼相當于 var a console.log(a) // undefined a=2 console.log(a) // 2 console.log(b) //Uncaught ReferenceError: b is not defined... 0x002 let語法 let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]]; 使用 let a, b = 2 // 聲明多個變量,賦值不賦值無所謂 a = 2 // 聲明之后再賦值 不再提升 console.log(a) // Uncaught ReferenceError: a is not defined... let a=1 注意:猜測, 使用 不能重復聲明 let a=1 let a=2 // Uncaught SyntaxError: Identifier 'a' has already been declared const語言 const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]]; 使用 const a=1, b=2 // 不能省略的值 不能省略的值 const c // Uncaught SyntaxError: Missing initializer in const declaration 不能重復賦值 const d=4 d=5 // Uncaught TypeError: Assignment to constant variable. 可以修改的引用 const e=[] e[0]=0 console.log(e) //[0] 塊級作用域塊級作用域是隨著let、const而來最有用的特性了,在之前的js中,js的作用域是函數級的,由此帶來的幾個臭名昭著的問題: 意外被修改的值 function varTest() {
var x = 1;
if (true) {
var x = 2; // 同樣的變量!
console.log(x); // 2
}
console.log(x); // 2
}可以使用 function letTest() {
let x = 1;
if (true) {
let x = 2; // 不同的變量
console.log(x); // 2
}
console.log(x); // 1
}萬惡的for循環和點擊事件 var list = document.getElementById("list");
for (var i = 0; i < 5; i++) {
var item = document.createElement("LI");
item.appendChild(document.createTextNode("Item " + i));
item.onclick = function (ev) {
console.log("Item " +i + " is clicked.");
};
list.appendChild(item);
}
console.log(i) // 5如果點擊上面,不管點擊哪個,顯示出來的都是 let list = document.getElementById("list");
for (let i = 0; i < 5; i++) {
let item = document.createElement("LI");
item.appendChild(document.createTextNode("Item " + i));
item.onclick = function (ev) {
console.log("Item " +i + " is clicked.");
};
list.appendChild(item);
}作用域規則很簡單
{
const f=6
}
console.log(f) // Uncaught ReferenceError: f is not defined
for (let i = 0; i < 10; i++) {
console.log(i);
}
console.log(i) // Uncaught ReferenceError: i is not defined
switch (x) {
case 0:
let foo;
break;
case 1:
let foo;
break;
}
// Uncaught SyntaxError: Identifier 'foo' has already been declared暫存死區-Temporal Dead Zone-TDZ隨著let和const的引入,也引入了暫存死區的概念。使用var的時候,作用域內(函數作用域),在還沒使用var聲明一個變量的時候,訪問該變量,將會獲得undefined。但是如果使用let,作用域(塊級作用域)內,在還沒使用let聲明一個變量的時候,訪問該變量,將會獲得ReferenceError,從作用域開始到let語句之間,就是暫存死區。 {
console.log(a) // Uncaught ReferenceError: a is not defined
console.log(b) // Uncaught ReferenceError: b is not defined
console.log(c) // undefined
// 暫存死區
let a =1
const b=2
var c=3
}注意:猜測, 使用babel翻譯一下代碼發現,只是 以上就是ES6中var、let、const、塊級作用域以及暫存死區的介紹的詳細內容,更多請關注php中文網其它相關文章! 網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。 |
溫馨提示:喜歡本站的話,請收藏一下本站!