摘要:入門一前言由于最近本人在學(xué)習(xí),做一些筆記能夠更好的熟悉,就趁此機(jī)會來寫一篇關(guān)于的新人學(xué)習(xí)摘要吧。的作用域與命令相同只在聲明所在的塊級作用域內(nèi)有效。塊級作用域新增方式和實際上為新增了塊級作用域。同時,函數(shù)聲明還會提升到所在的塊級作用域的頭部。
ECMAScript6/ES6 入門 一、前言
由于最近本人在學(xué)習(xí)ES6,做一些筆記能夠更好的熟悉,就趁此機(jī)會來寫一篇關(guān)于ES6的新人學(xué)習(xí)摘要吧。希望大佬可以給出一些意見,也希望和我一樣的新人能更好更快的了解和熟悉ES6。
首先在這邊我要感謝阮大大~有這么好的入門教程(搬運(yùn)工,部分內(nèi)容不講述)。
其次注明本文只用于本人和其他新手了解熟悉ES6,非其他用途。
下面就開始我們簡單的學(xué)習(xí)吧~
不多贅述,ES6兼容性
三、let和const命令在學(xué)習(xí)let和const之前,我們先來了解一下塊級作用域,塊級作用域主要適用兩種場景,一種是內(nèi)層變量覆蓋外層變量;第二種場景是用來計數(shù)的循環(huán)變量泄露為全局變量。
// 第一種場景 var tmp = new Date(); function f() { console.log(tmp); if (false) { var tmp = "hello world"; } } f(); // undefined // 第二種場景 var s = "hello"; for (var i = 0; i < s.length; i++) { console.log(s[i]); } console.log(i); // 5
塊級作用域能很好的解決這兩方面的問題,如何增加塊級作用域呢?等我們學(xué)習(xí)完let和const再來詳述。
1、let和var一樣,用來聲明變量,差別在于let申明的變量的作用域只針對于let命令所在的代碼塊內(nèi)。
{ let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1
在代碼塊中我們分別以let和var申明了a,b兩個變量,在打印a,b兩個變量的時候發(fā)現(xiàn)用var聲明的變量b的值是能正確打印的,但是用let申明的a變量報錯,這表面兩者申明的作用域不同。
用let申明的變量無變量提升
// var 的情況 console.log(foo); // 輸出undefined var foo = 2; // let 的情況 console.log(bar); // 報錯ReferenceError let bar = 2;
上面的代碼中同樣在聲明變量前打印出該變量,var申明的變量輸出undefined,而let報錯,即變量bar不存在,所以使用let一定要在申明后進(jìn)行使用。
暫時性死區(qū)
暫時性死區(qū)是什么意思呢,簡單來說就是從一開始就形成了封閉作用域。凡是在聲明之前就使用這些變量,就會報錯。
var tmp = 123; if (true) { tmp = "abc"; // ReferenceError let tmp; }
不允許重復(fù)聲明
let不允許在相同作用域內(nèi),重復(fù)聲明同一個變量。
// 報錯 function func() { let a = 10; let a = 1; }
2、const聲明一個只讀的常量。一旦聲明,常量的值就不能改變。
const聲明的變量不得改變值,這意味著,const一旦聲明變量,就必須立即初始化,不能留到以后賦值。
const的作用域與let命令相同:只在聲明所在的塊級作用域內(nèi)有效。
const命令聲明的常量也是不提升,同樣存在暫時性死區(qū),只能在聲明的位置后面使用。
const foo; // SyntaxError: Missing initializer in const declaration const PI = 3.1415; PI // 3.1415 PI = 3; // TypeError: Assignment to constant variable. if (true) { const MAX = 5; } MAX // Uncaught ReferenceError: MAX is not defined
3、塊級作用域
新增方式:
let和const實際上為 JavaScript 新增了塊級作用域。
使用{}創(chuàng)建塊級作用域(可以任意嵌套)
{{{{ let insane = "Hello World"; {let insane = "Hello World"} }}}};
優(yōu)點:使得獲得廣泛應(yīng)用的立即執(zhí)行函數(shù)表達(dá)式(IIFE)不再必要了。
// IIFE 寫法 (function () { var tmp = ...; ... }()); // 塊級作用域?qū)懛?{ let tmp = ...; ... }
注意:只有在ES6中,允許以下三條規(guī)則(ES5不可)
允許在塊級作用域內(nèi)聲明函數(shù)。
函數(shù)聲明類似于var,即會提升到全局作用域或函數(shù)作用域的頭部。
同時,函數(shù)聲明還會提升到所在的塊級作用域的頭部。
4、do表達(dá)式(提案)
不贅述,使得塊級作用域可以變?yōu)楸磉_(dá)式,也就是說可以返回值
let x = do { let t = f(); t * t + 1; };
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/90312.html
摘要:字符的表示法允許采用形式表示一個字符,其中表示字符的碼點。方法,用來將字符的不同表示方法統(tǒng)一為同樣的形式,這稱為正規(guī)化。,默認(rèn)參數(shù),表示標(biāo)準(zhǔn)等價合成,返回多個簡單字符的合成字符。返回布爾值,表示參數(shù)字符串是否在原字符串的頭部。 ECMAScript6/ES6 入門 let和const命令變量的解構(gòu)賦值 五、字符串的擴(kuò)展 注:這章沒什么可以理解的,看過一遍就行,所以大體上我把有用的一些東...
摘要:默認(rèn)值同時,對象解構(gòu)賦值也允許設(shè)置默認(rèn)值,默認(rèn)值生效的判斷條件同數(shù)組,只有在對應(yīng)值嚴(yán)格等于時會生效。報錯如果要將一個已經(jīng)聲明的變量用于解構(gòu)賦值,必須非常小心。的規(guī)則是,只要有可能導(dǎo)致解構(gòu)的歧義,就不得使用圓括號。 ECMAScript6/ES6 入門 let和const命令 四、變量的解構(gòu)賦值 在ES6之前,數(shù)組和對象屬性賦值只能直接指定固定值,ES6 允許按照一定模式,從數(shù)組和對象中...
摘要:眾所周知,前端近幾年鬧了一場革命。這些問題反應(yīng)了什么現(xiàn)象確實前端很火,引來了一批批新人。前端小白們?nèi)缁鹑巛钡膶W(xué)習(xí)著現(xiàn)在前端流行的新技術(shù)棧。寫在最后所以啊,在目睹了很多白癡問題后,我終于發(fā)出了一聲吶喊,答題救不了前端新人。 眾所周知,前端近幾年鬧了一場革命。前端在編程領(lǐng)域也掀起了學(xué)習(xí)潮。至少在中國,從2013年下半年至今,在搜索指數(shù)上,有著爆炸式的增長??梢钥聪聰?shù)據(jù):百度指數(shù),Googl...
摘要:眾所周知,前端近幾年鬧了一場革命。這些問題反應(yīng)了什么現(xiàn)象確實前端很火,引來了一批批新人。前端小白們?nèi)缁鹑巛钡膶W(xué)習(xí)著現(xiàn)在前端流行的新技術(shù)棧。寫在最后所以啊,在目睹了很多白癡問題后,我終于發(fā)出了一聲吶喊,答題救不了前端新人。 眾所周知,前端近幾年鬧了一場革命。前端在編程領(lǐng)域也掀起了學(xué)習(xí)潮。至少在中國,從2013年下半年至今,在搜索指數(shù)上,有著爆炸式的增長。可以看下數(shù)據(jù):百度指數(shù),Googl...
摘要:介紹簡單點來說就就是一個配置文件,所有的魔力都是在這一個文件中發(fā)生的。一安裝全局安裝在文件夾里面也需要安裝這個是在你根目錄下進(jìn)行的全局安裝記得加太慢,推薦用的鏡像安裝方法一樣。二創(chuàng)建項目新建文件夾命令行輸入命令。 介紹:webpack簡單點來說就就是一個配置文件,所有的魔力都是在這一個文件中發(fā)生的。 這個配置文件主要分為三大塊 entry 入口文件 讓webpack用哪個文件作為項目的...
閱讀 1788·2021-09-22 15:10
閱讀 1283·2021-09-07 09:58
閱讀 2350·2019-08-30 15:44
閱讀 1650·2019-08-26 18:29
閱讀 2050·2019-08-26 13:35
閱讀 771·2019-08-26 13:31
閱讀 733·2019-08-26 11:42
閱讀 1076·2019-08-23 18:39