摘要:學(xué)習(xí)筆記在學(xué)習(xí)的過程中做的一些記錄,用于未來的快速回憶。數(shù)組成員為時,默認值仍會生效因為在內(nèi)部使用嚴格相等運算符,判斷一個位置是否有值,所以當一個數(shù)組成員嚴格等于默認值才會生效。
ES6學(xué)習(xí)筆記
在學(xué)習(xí)ES6的過程中做的一些記錄,用于未來的快速回憶。let&const 作用域的概念
ES6新增塊級作用域的概念(一個大括號括起來的部分就是一個塊作用域)
let與const用于在塊級作用域中聲明變量,該變量僅在當前塊級作用域有效
ES6強制啟用嚴格模式,變量未聲明不允許使用
如何使用let與constlet關(guān)鍵詞用于聲明變量
const關(guān)鍵詞用于聲明常量,聲明時必須賦值
let&const關(guān)鍵詞不能在同一個塊級作用域內(nèi)重復(fù)聲明一個變量
const定義的基本類型常量不能被修改,但是引用類型常量內(nèi)部的值能被修改,只要不改變常量的引用即可
解構(gòu)賦值ES6允許按照一定模式,從數(shù)組和對象中提取值,對變量進行賦值。
數(shù)組解構(gòu)賦值// 完全解構(gòu) //本質(zhì)上這種寫法屬于‘模式匹配‘,只要等號兩邊的模式相同,左邊的變量就會被賦予對應(yīng)的值 let [a,b,c] = [1,2,3]; // a=1,b=2,c=3 let [a,[b]] = [1, [2]]; // a=1,b=[2] let [,,a] = [1,2,3]; // a=3 let [d,...rest] = [1,2,3,4,5,6]; // d=1,rest=[2,3,4,5,6] // 解構(gòu)不成功 // 如果解構(gòu)不成功,變量的值就等于undefined let [x,y] = ["xy"] //x="xy",y=undefined // 不完全解構(gòu) let [i,j] = [1,2,3]; // i=1,j=2 //如果等號的右邊不是數(shù)組,或者說不是可遍歷的結(jié)構(gòu),那么將會報錯 let [a] = 1; // 這里會報錯:Uncaught TypeError: 1 is not iterable默認值
解構(gòu)賦值允許有默認值。
let [x,y="b"] = ["a"]; console.log(y); //b let [x,y = "b"] = ["a",undefined]; console.log(y); //b // 數(shù)組成員為undefined時,默認值仍會生效 // 因為在ES6內(nèi)部使用嚴格相等運算符‘===‘,判斷一個位置是否有值, // 所以當一個數(shù)組成員嚴格等于undefined,默認值才會生效。 let [x,y = "b"] = ["a",null]; console.log(y); //null // 如果一個數(shù)組成員是null,默認值就不會生效,因為null不嚴格等于undefined對象解構(gòu)賦值
對象的解構(gòu)與數(shù)組有一個重要的不同,數(shù)組的元素是按次序排列的,變量的取值由它的位置決定;而對象的屬性沒有次序,變量必須與屬性同名,才能取到正確的值。
// 變量名與屬性名一致的情況下 let {foo,bar} = {foo : "aaa",bar : "bbb"} console.log(foo); //aaa console.log(bar); //bbb // 實際上 對象的解構(gòu)賦值是以這樣的形式簡寫的 let {foo : foo ,bar : bar} = {foo : "aaa",bar : "bbb"} // 變量名與屬性名不一致的情況下,必須這樣寫 let {a : name, b : age} = {a : "zhangsan", b : 33}; console.log(name); //zhangsan console.log(age); //33
對象的解構(gòu)賦值的內(nèi)部機制,是先找到同名屬性,然后再賦值給對應(yīng)的變量,真正被賦值的是后者,而不是前者,第一個foo/bar 是匹配的模式,對應(yīng)的foo/bar屬性值才是變量,真正被賦值的是屬性值(也就是第二個foo/bar)。
字符串解構(gòu)賦值const [a,b,c,d,e] = "hello"; console.log(a); //h console.log(b); //e console.log(c); //l console.log(d); //l console.log(e); //o let { length : len} = "yahooa"; console.log(len); //類似數(shù)組的對象都有一個length屬性,還可以對這個屬性解構(gòu)賦值布爾值/數(shù)值解構(gòu)賦值
解構(gòu)賦值時,如果等號右邊是數(shù)值和布爾值,則會先轉(zhuǎn)為對象,但是等號右邊為undefined 和 null時無法轉(zhuǎn)為對象,所以對他們進行解構(gòu)賦值時,都會報錯。
let {prop : x } = undefined; console.log(x); //報錯:Uncaught TypeError: Cannot destructure property `prop` of "undefined" or "null"函數(shù)參數(shù)解構(gòu)賦值
function move({x = 0,y = 0} = { }){ return [x,y]; } console.log(move({x : 3,y : 4})); //[3,4] console.log(move({x : 3})); //[3,0] console.log(move({})); //[0,0] console.log(move()); //[0,0] // move()的參數(shù)是一個對象,通過對這個對象進行解構(gòu),得到變量x、y的值,如果解構(gòu)失敗,x和y 等于默認值 function move2({x,y} = {x : 1, y : 2 }){ return [x,y]; } console.log(move2({x : 6,y : 8})); //[6,8] console.log(move2({})); //[undefined,undefined] console.log(move2()); //[1,2] // move2() 是為函數(shù)move的參數(shù)指定默認值,而不是為變量x和y指定默認值, // 所以與前一種寫法的結(jié)果不太一樣,undefined 就會觸發(fā)函數(shù)的默認值解構(gòu)作用
改變變量的值
let x = 1; let y = 2; [x,y] = [y,x]; // x=2, y=1
從方法返回多個值
function example(){ return { foo : "a", bar : "b" } } let {foo,bar} = example(); // foo="a",bar="b" function example222(){ return [1,2,3,4,5]; } let [a,,...b] = example222(); // a=1, b=[3,4,5]
函數(shù)參數(shù)的定義
//參數(shù)是一組有次序的值 function example([x,y,z]){ return x + y + z; } example([1,2,3]) console.log(example([1,2,3])); //6 //參數(shù)是一組無次序的值 function f({x,y,z}){ return x + y + z; } f({x : "a", z : "b", y : "c" }); console.log(f({x : "a", z : "b", y : "c" })); //acb
提取JSON數(shù)據(jù)
函數(shù)參數(shù)的默認值
輸入模塊的指定用法
正則擴展 構(gòu)造函數(shù)的變化// ES5 的方式 let reg = new RegExp("xyz", "i"); let reg2 = new RegExp(/xyz/i); reg.test("xyz123"); // true reg.test("xyz123"); // true // ES6 方式的變化,可以有第二個參數(shù)用作修飾符 // 這種方式,第二個參數(shù)的修飾符會覆蓋第一個正則表達式的修飾符 let reg3 = new RegExp(/xyz/ig, "i") reg3.flags // iu修飾符
// u -> unicode,用于處理unicode編碼的正則匹配 // unicode中4個字節(jié) = 一個字母 /^uD83D/.test("uD83DuDC2A"); // true uD83DuDC2A 被當做兩個字母來處理 /^uD83D/u.test("uD83DuDC2A"); // false,uD83DuDC2A 被當作一個字母來處理 // 正則中,大括號里面若是unicode編碼,需添加u修飾符才能被識別 /u{61}/.test("a"); // false /u{61}/u.test("a"); // true // 用"."操作符識別大于兩個字節(jié)的字符需要加上u修飾符 // "."操作符不能處理換行符/回車符/行分隔符/段分隔符 /^.$/.test("吉"); // false /^.$/u.test("吉"); // true /吉{2}/.test("吉吉"); // false /吉{2}/u.test("吉吉"); // true // 凡是超過兩個字節(jié)的匹配都需要添加 u 修飾符y修飾符
let s = "bbb_bb_b"; let a1 = /b+/g; let a2 = /b+/y; a1.exec(s); // g修飾符全局匹配,不強調(diào)從下一個字符開始匹配,只要接下來的字符能匹配成功就ok a2.exec(s); // y修飾符全局匹配,必須緊跟著下一個字符開始匹配 // sticky屬性用于判斷是否開啟了y修飾符 a1.sticky; // false a2.sticky; // trues修飾符
未實現(xiàn),僅作為提案
// "."操作符不能處理換行符/回車符/行分隔符/段分隔符 // 但添加 s 修飾符就可以字符串擴展 Unicode表示法
console.log(`u0061`); // a console.log(`u20887`); // []7,會將20087拆成2008 / 7 console.log(`u{20887}`); //
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/99562.html
摘要:學(xué)習(xí)筆記頂層對象雖然是筆記但是基本是抄了一次大師的文章了頂層對象頂層對象,在瀏覽器環(huán)境指的是對象,在指的是對象。之中,頂層對象的屬性與全局變量是等價的。的寫法模塊的寫法上面代碼將頂層對象放入變量。參考引用頂層對象實戰(zhàn) es6學(xué)習(xí)筆記-頂層對象_v1.0 (雖然是筆記,但是基本是抄了一次ruan大師的文章了) 頂層對象 頂層對象,在瀏覽器環(huán)境指的是window對象,在Node指的是gl...
摘要:本筆記為閱讀阮老師的文章自己的總結(jié),僅作自用,感謝阮老師的技術(shù)分享。字符串的遍歷器接口新增判斷字符串的包含情況返回值,表示是否找到了字符串。返回值表示參數(shù)字符串是否在原字符串的頭部。 本筆記為閱讀http://es6.ruanyifeng.com/ 阮老師的文章自己的總結(jié),僅作自用,感謝阮老師的技術(shù)分享。 1.超過uFFFF的字符ES5無法正確顯示,會顯示成前面的uFFFF的碼點符號加...
摘要:最近買了深入理解的書籍來看,為什么學(xué)習(xí)這么久還要買這本書呢主要是看到核心團隊成員及的創(chuàng)造者為本書做了序,作為一個粉絲,還是挺看好這本書能給我?guī)硪粋€新的升華,而且本書的作者也非常厲害。 使用ES6開發(fā)已經(jīng)有1年多了,以前看的是阮一峰老師的ES6教程,也看過MDN文檔的ES6語法介紹。 最近買了《深入理解ES6》的書籍來看,為什么學(xué)習(xí)ES6這么久還要買這本書呢?主要是看到Daniel A...
摘要:新搭建的個人博客,本文地址學(xué)習(xí)筆記用重寫在一開始的時候配置中我們就加入了的支持,就是下面的配置,但之前的學(xué)習(xí)筆記都使用的完成,所以專門作一篇筆記,記錄使用完成創(chuàng)建相關(guān)文件修改,增加該入口文件修改,引入該文件做個簡單的測試,看下瀏覽器全部用來 新搭建的個人博客,本文地址:React學(xué)習(xí)筆記3:用es2015(ES6)重寫CommentBox在一開始的時候webpack配置中我們就加入了e...
摘要:彩票項目實戰(zhàn)學(xué)習(xí)記錄一完整走了一遍課程,覺得還不錯。支持正版人人有責零基礎(chǔ)教學(xué)解析彩票項目下面是項目課程的目錄路線一個項目分為三部分業(yè)務(wù)邏輯,自動構(gòu)建系統(tǒng),模擬數(shù)據(jù)和真實數(shù)據(jù)接口處理。 彩票項目實戰(zhàn)學(xué)習(xí)記錄(一) 完整走了一遍課程,覺得還不錯。 總結(jié): es6的知識點說得還算清楚,主要是為了了解和使用,不是深究,所以淺嘗即止即可,所以覺得還不錯。 完整還原了項目開發(fā)的代碼設(shè)計和開發(fā)過...
閱讀 1012·2021-11-23 10:11
閱讀 3854·2021-11-16 11:50
閱讀 921·2021-10-14 09:43
閱讀 2713·2021-10-14 09:42
閱讀 2710·2021-09-22 16:02
閱讀 1056·2019-08-29 10:57
閱讀 3378·2019-08-29 10:57
閱讀 2268·2019-08-26 13:52