成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ES6學(xué)習(xí)筆記

mengbo / 2669人閱讀

摘要:學(xué)習(xí)筆記在學(xué)習(xí)的過程中做的一些記錄,用于未來的快速回憶。數(shù)組成員為時(shí),默認(rèn)值仍會(huì)生效因?yàn)樵趦?nèi)部使用嚴(yán)格相等運(yùn)算符,判斷一個(gè)位置是否有值,所以當(dāng)一個(gè)數(shù)組成員嚴(yán)格等于默認(rèn)值才會(huì)生效。

ES6學(xué)習(xí)筆記
在學(xué)習(xí)ES6的過程中做的一些記錄,用于未來的快速回憶。
let&const 作用域的概念

ES6新增塊級(jí)作用域的概念(一個(gè)大括號(hào)括起來的部分就是一個(gè)塊作用域)

let與const用于在塊級(jí)作用域中聲明變量,該變量僅在當(dāng)前塊級(jí)作用域有效

ES6強(qiáng)制啟用嚴(yán)格模式,變量未聲明不允許使用

如何使用let與const

let關(guān)鍵詞用于聲明變量

const關(guān)鍵詞用于聲明常量,聲明時(shí)必須賦值

let&const關(guān)鍵詞不能在同一個(gè)塊級(jí)作用域內(nèi)重復(fù)聲明一個(gè)變量

const定義的基本類型常量不能被修改,但是引用類型常量內(nèi)部的值能被修改,只要不改變常量的引用即可

解構(gòu)賦值

ES6允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值。

數(shù)組解構(gòu)賦值
// 完全解構(gòu)
//本質(zhì)上這種寫法屬于‘模式匹配‘,只要等號(hào)兩邊的模式相同,左邊的變量就會(huì)被賦予對(duì)應(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
//如果等號(hào)的右邊不是數(shù)組,或者說不是可遍歷的結(jié)構(gòu),那么將會(huì)報(bào)錯(cuò)
let [a] = 1;    // 這里會(huì)報(bào)錯(cuò):Uncaught TypeError: 1 is not iterable
默認(rèn)值

解構(gòu)賦值允許有默認(rèn)值。

let [x,y="b"] = ["a"];
console.log(y); //b

let [x,y = "b"] = ["a",undefined];
console.log(y); //b 
// 數(shù)組成員為undefined時(shí),默認(rèn)值仍會(huì)生效
// 因?yàn)樵贓S6內(nèi)部使用嚴(yán)格相等運(yùn)算符‘===‘,判斷一個(gè)位置是否有值,
// 所以當(dāng)一個(gè)數(shù)組成員嚴(yán)格等于undefined,默認(rèn)值才會(huì)生效。

let [x,y = "b"] = ["a",null];
console.log(y); //null
// 如果一個(gè)數(shù)組成員是null,默認(rèn)值就不會(huì)生效,因?yàn)閚ull不嚴(yán)格等于undefined
對(duì)象解構(gòu)賦值

對(duì)象的解構(gòu)與數(shù)組有一個(gè)重要的不同,數(shù)組的元素是按次序排列的,變量的取值由它的位置決定;而對(duì)象的屬性沒有次序,變量必須與屬性同名,才能取到正確的值。

// 變量名與屬性名一致的情況下
let {foo,bar} = {foo : "aaa",bar : "bbb"}
console.log(foo); //aaa
console.log(bar); //bbb
// 實(shí)際上 對(duì)象的解構(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

對(duì)象的解構(gòu)賦值的內(nèi)部機(jī)制,是先找到同名屬性,然后再賦值給對(duì)應(yīng)的變量,真正被賦值的是后者,而不是前者,第一個(gè)foo/bar 是匹配的模式,對(duì)應(yīng)的foo/bar屬性值才是變量,真正被賦值的是屬性值(也就是第二個(gè)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ù)組的對(duì)象都有一個(gè)length屬性,還可以對(duì)這個(gè)屬性解構(gòu)賦值
布爾值/數(shù)值解構(gòu)賦值

解構(gòu)賦值時(shí),如果等號(hào)右邊是數(shù)值和布爾值,則會(huì)先轉(zhuǎn)為對(duì)象,但是等號(hào)右邊為undefined 和 null時(shí)無法轉(zhuǎn)為對(duì)象,所以對(duì)他們進(jìn)行解構(gòu)賦值時(shí),都會(huì)報(bào)錯(cuò)。

let {prop : x } = undefined;
console.log(x);
//報(bào)錯(cuò):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è)對(duì)象,通過對(duì)這個(gè)對(duì)象進(jìn)行解構(gòu),得到變量x、y的值,如果解構(gòu)失敗,x和y 等于默認(rèn)值
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ù)指定默認(rèn)值,而不是為變量x和y指定默認(rèn)值,
// 所以與前一種寫法的結(jié)果不太一樣,undefined 就會(huì)觸發(fā)函數(shù)的默認(rèn)值
解構(gòu)作用

改變變量的值

let x = 1;
let y = 2;
[x,y] = [y,x];    // x=2, y=1

從方法返回多個(gè)值

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ù)的默認(rèn)值

輸入模塊的指定用法

正則擴(kuò)展 構(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 方式的變化,可以有第二個(gè)參數(shù)用作修飾符
// 這種方式,第二個(gè)參數(shù)的修飾符會(huì)覆蓋第一個(gè)正則表達(dá)式的修飾符
let reg3 = new RegExp(/xyz/ig, "i")
reg3.flags        // i
u修飾符
// u -> unicode,用于處理unicode編碼的正則匹配
// unicode中4個(gè)字節(jié) = 一個(gè)字母
/^uD83D/.test("uD83DuDC2A");         // true uD83DuDC2A 被當(dāng)做兩個(gè)字母來處理
/^uD83D/u.test("uD83DuDC2A");    // false,uD83DuDC2A 被當(dāng)作一個(gè)字母來處理
// 正則中,大括號(hào)里面若是unicode編碼,需添加u修飾符才能被識(shí)別
/u{61}/.test("a");        // false
/u{61}/u.test("a");    // true
// 用"."操作符識(shí)別大于兩個(gè)字節(jié)的字符需要加上u修飾符
// "."操作符不能處理換行符/回車符/行分隔符/段分隔符
/^.$/.test("吉");    // false
/^.$/u.test("吉");    // true
/吉{2}/.test("吉吉");    // false
/吉{2}/u.test("吉吉");    // true
// 凡是超過兩個(gè)字節(jié)的匹配都需要添加 u 修飾符
y修飾符
let s = "bbb_bb_b";
let a1 = /b+/g;
let a2 = /b+/y;
a1.exec(s);        // g修飾符全局匹配,不強(qiáng)調(diào)從下一個(gè)字符開始匹配,只要接下來的字符能匹配成功就ok
a2.exec(s);        // y修飾符全局匹配,必須緊跟著下一個(gè)字符開始匹配
// sticky屬性用于判斷是否開啟了y修飾符
a1.sticky;        // false
a2.sticky;        // true
s修飾符

未實(shí)現(xiàn),僅作為提案

// "."操作符不能處理換行符/回車符/行分隔符/段分隔符
// 但添加 s 修飾符就可以
字符串?dāng)U展 Unicode表示法
console.log(`u0061`);            // a
console.log(`u20887`);            // []7,會(huì)將20087拆成2008 / 7
console.log(`u{20887}`);        //            
               
                                           
                       
                 

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99562.html

相關(guān)文章

  • es6學(xué)習(xí)筆記-頂層對(duì)象_v1.0_byKL

    摘要:學(xué)習(xí)筆記頂層對(duì)象雖然是筆記但是基本是抄了一次大師的文章了頂層對(duì)象頂層對(duì)象,在瀏覽器環(huán)境指的是對(duì)象,在指的是對(duì)象。之中,頂層對(duì)象的屬性與全局變量是等價(jià)的。的寫法模塊的寫法上面代碼將頂層對(duì)象放入變量。參考引用頂層對(duì)象實(shí)戰(zhàn) es6學(xué)習(xí)筆記-頂層對(duì)象_v1.0 (雖然是筆記,但是基本是抄了一次ruan大師的文章了) 頂層對(duì)象 頂層對(duì)象,在瀏覽器環(huán)境指的是window對(duì)象,在Node指的是gl...

    Meils 評(píng)論0 收藏0
  • ES6學(xué)習(xí)筆記

    摘要:本筆記為閱讀阮老師的文章自己的總結(jié),僅作自用,感謝阮老師的技術(shù)分享。字符串的遍歷器接口新增判斷字符串的包含情況返回值,表示是否找到了字符串。返回值表示參數(shù)字符串是否在原字符串的頭部。 本筆記為閱讀http://es6.ruanyifeng.com/ 阮老師的文章自己的總結(jié),僅作自用,感謝阮老師的技術(shù)分享。 1.超過uFFFF的字符ES5無法正確顯示,會(huì)顯示成前面的uFFFF的碼點(diǎn)符號(hào)加...

    zxhaaa 評(píng)論0 收藏0
  • 《深入理解ES6筆記——導(dǎo)讀

    摘要:最近買了深入理解的書籍來看,為什么學(xué)習(xí)這么久還要買這本書呢主要是看到核心團(tuán)隊(duì)成員及的創(chuàng)造者為本書做了序,作為一個(gè)粉絲,還是挺看好這本書能給我?guī)硪粋€(gè)新的升華,而且本書的作者也非常厲害。 使用ES6開發(fā)已經(jīng)有1年多了,以前看的是阮一峰老師的ES6教程,也看過MDN文檔的ES6語法介紹。 最近買了《深入理解ES6》的書籍來看,為什么學(xué)習(xí)ES6這么久還要買這本書呢?主要是看到Daniel A...

    Godtoy 評(píng)論0 收藏0
  • React學(xué)習(xí)筆記3:用es2015(ES6)重寫CommentBox

    摘要:新搭建的個(gè)人博客,本文地址學(xué)習(xí)筆記用重寫在一開始的時(shí)候配置中我們就加入了的支持,就是下面的配置,但之前的學(xué)習(xí)筆記都使用的完成,所以專門作一篇筆記,記錄使用完成創(chuàng)建相關(guān)文件修改,增加該入口文件修改,引入該文件做個(gè)簡單的測(cè)試,看下瀏覽器全部用來 新搭建的個(gè)人博客,本文地址:React學(xué)習(xí)筆記3:用es2015(ES6)重寫CommentBox在一開始的時(shí)候webpack配置中我們就加入了e...

    selfimpr 評(píng)論0 收藏0
  • ES6零基礎(chǔ)教學(xué)_解析彩票項(xiàng)目-學(xué)習(xí)筆記(一)

    摘要:彩票項(xiàng)目實(shí)戰(zhàn)學(xué)習(xí)記錄一完整走了一遍課程,覺得還不錯(cuò)。支持正版人人有責(zé)零基礎(chǔ)教學(xué)解析彩票項(xiàng)目下面是項(xiàng)目課程的目錄路線一個(gè)項(xiàng)目分為三部分業(yè)務(wù)邏輯,自動(dòng)構(gòu)建系統(tǒng),模擬數(shù)據(jù)和真實(shí)數(shù)據(jù)接口處理。 彩票項(xiàng)目實(shí)戰(zhàn)學(xué)習(xí)記錄(一) 完整走了一遍課程,覺得還不錯(cuò)。 總結(jié): es6的知識(shí)點(diǎn)說得還算清楚,主要是為了了解和使用,不是深究,所以淺嘗即止即可,所以覺得還不錯(cuò)。 完整還原了項(xiàng)目開發(fā)的代碼設(shè)計(jì)和開發(fā)過...

    blastz 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<