摘要:注意不再是安全的操作不允許重復(fù)聲明塊級作用域匿名函數(shù)寫法塊級作用域?qū)懛ǖ膰?yán)格模式規(guī)定,函數(shù)只能在頂層作用域和函數(shù)內(nèi)聲明,其他情況比如代碼塊循環(huán)代碼塊的聲明都會報錯。
塊級作用域
for(var i = 0; i < 10; i++){} console.log(i); //10 for(let j = 0; j < 10; j++){} console.log(j); //"ReferenceError: j is not defined
疑問: https://segmentfault.com/q/1010000004643248
不存在變量提升console.log(a); // 輸出undefined console.log(b); // 報錯ReferenceError console.log(c); // 報錯ReferenceError var a = 2; let b = 2;
注意區(qū)別undefined和ReferenceError
暫時性死區(qū)(TDZ)只要進(jìn)入當(dāng)前塊級作用域,所使用的變量已經(jīng)存在了,但在聲明之前都屬于死區(qū),不可進(jìn)行操作。
注意: typeof不再是100%安全的操作
typeof x; // ReferenceError typeof y // undefined let x;不允許重復(fù)聲明
let x = 1; let x; // "SyntaxError: Identifier "x" has already been declared var y = 2; var y = 3; // y = 3塊級作用域
// 匿名函數(shù)寫法 (function () { var tmp = ...; ... }()); // 塊級作用域?qū)懛?{ let tmp = ...; ... }
ES5的嚴(yán)格模式規(guī)定,函數(shù)只能在頂層作用域和函數(shù)內(nèi)聲明,其他情況(比如if代碼塊、循環(huán)代碼塊)的聲明都會報錯。
// ES5 "use strict"; if (true) { function f() {} // 報錯 }
ES6由于引入了塊級作用域,這種情況可以理解成函數(shù)在塊級作用域內(nèi)聲明,因此不報錯,但是構(gòu)成區(qū)塊的大括號不能少
// 報錯 "use strict"; if (true) function f() {}聲明的全局變量不再是window的屬性
"use strict"; var a = 1; console.log(window.a) // 1 let b = 1; console.log(window.b) // undefined
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/79008.html
摘要:但是一直沒有在語言層面支持模塊,直到的出現(xiàn)。相信在不久的將來,的模塊一定會全面取代和。的模塊提供了個新的語法,分別是和。就是模塊用來對外暴露數(shù)據(jù)的接口,具體用法如下。 本文同步自我得博客:http://www.joeray61.com 簡介 在當(dāng)今的Javascript程序中,模塊的作用不言而喻,目前廣泛應(yīng)用的主要有AMD(瀏覽器端)和CommonJS(服務(wù)器端)。但是Javascri...
摘要:消除字符串頭部空格消除尾部空格從頭部補(bǔ)全字符串從尾部補(bǔ)全字符串 let和const var關(guān)鍵字定義變量的特點: 可以重復(fù)定義 不能定義常量 不支持塊級作用域 let的特點 不可以重復(fù)定義 變量不能提升,在變量定義之前,不能使用 在大括號當(dāng)中定義的變量(塊級作用域中),在作用域外無法訪問 解決一些ES5當(dāng)中需要閉包實現(xiàn)的功能,比如:每隔1秒循環(huán)輸出一個當(dāng)前的值 const的特點...
摘要:一新增了命令和一樣都是用來聲明標(biāo)量,但所聲明的變量只在聲明的代碼塊內(nèi)及聲明之后有效命令適合在循環(huán)中使用在循環(huán)內(nèi)有效在全局內(nèi)有效命令暫時性死區(qū)大括號中的使用了聲明,所以在大括號中暫時只能在聲明之后有效不允許在同一作用域內(nèi)重復(fù)聲明變量,因此不能 一、ES6新增了let命令 let 和 var 一樣都是用來聲明標(biāo)量,但let所聲明的變量只在【聲明的代碼塊內(nèi)】及【聲明之后】有效 { c...
摘要:另外對于已經(jīng)聲明的變量進(jìn)行解構(gòu)賦值時,要非常小心。因此在行首加,將其強(qiáng)制轉(zhuǎn)化為表達(dá)式執(zhí)行。由于和無法轉(zhuǎn)為對象,所以對它們進(jìn)行解構(gòu)賦值,都會報錯。 let和const let和const是es6新增的兩個變量聲明關(guān)鍵字,與var的不同點在于: (1)let和const都是塊級作用域,在{}內(nèi)有效,這點在for循環(huán)中非常有用,只在循環(huán)體內(nèi)有效。var為函數(shù)作用域。 (2)使用let和con...
閱讀 1371·2023-04-25 16:45
閱讀 1917·2021-11-17 09:33
閱讀 2306·2021-09-27 14:04
閱讀 915·2019-08-30 15:44
閱讀 2633·2019-08-30 14:24
閱讀 3411·2019-08-30 13:59
閱讀 1691·2019-08-29 17:00
閱讀 887·2019-08-29 15:33