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

資訊專欄INFORMATION COLUMN

ES6小記

王晗 / 1398人閱讀

摘要:命令改變了這個(gè)行為,必須要在聲明后使用,否則報(bào)錯(cuò)。值為臨時(shí)鎖區(qū)保證了命令不會(huì)受到外部影響?;臼褂寐暶饕粋€(gè)只讀的常量。默認(rèn)值解構(gòu)允許指定默認(rèn)值內(nèi)部嚴(yán)格使用來判斷是否有值,所以只有當(dāng)一個(gè)數(shù)組成員嚴(yán)格等于,默認(rèn)值才會(huì)生效。

ES6

ES6 就是ECMAScript 6是新版本JavaScript語言的標(biāo)準(zhǔn)。

1. let 和 const

ES6 新增了 let 和 const 來聲明變量和常量,它們的用法類似var, 但只在代碼塊中有效。

1.1 let 的基本使用
    {
        var a = "hello";
        let b = "world";
    }
    
    a // hello
    b // Uncaught ReferenceError: a is not defined

上述代碼表明,let只在他所在的代碼塊中有效。

1.2 不能重復(fù)定義

let不允許在相同作用域內(nèi),重復(fù)聲明同一個(gè)變量。

    let a = "hello";
    let a = "world"; // Uncaught SyntaxError: Identifier "a" has already been declared
    
    function s1(arg){
        let arg;  // Uncaught SyntaxError: Identifier "arg" has already been declared
    }
1.3 不存在變量提升

var 命令會(huì)存在變量提升的問題,在定義之前使用,值為 undefined。
let 命令改變了這個(gè)行為,必須要在聲明后使用,否則報(bào)錯(cuò)。

    console.log(a); // Uncaught ReferenceError: a is not defined
    let a = "hello world"; 
    
    console.log(b); // 值為 undefined
    var b = "hello kitty" 
1.4 臨時(shí)鎖區(qū)(Temporal Distonrtion Zone)

保證了let 命令不會(huì)受到外部影響。

    var a = 123;
    function s1(){
        a = "hello world";  // Uncaught ReferenceError: a is not defined
        let a = "hello kitty";
    }
1.5 const 基本使用

const聲明一個(gè)只讀的常量。一旦聲明,常量的值就不能改變。

    const a = "hello world!";
    console.log(a) // hello world!
    
    a = "hello kitty"; // Uncaught SyntaxError: Identifier "a" has already been declared

const實(shí)際上并不是保證變量的值不能變,而是變量指向的那個(gè)內(nèi)存地址不得改動(dòng)。

    const arr = [];
    arr[0] = "hello";
    arr[1] = "world";
    console.log(arr); // ["hello", "world"]
    
    arr = []; // Uncaught SyntaxError: Identifier "arr" has already been declared
    
    const json = {};
    json.name = "LiMing";
    console.log(json.name)  // LiMing
    
    json = {} Uncaught SyntaxError: Identifier "json" has already been declared

常量 arr, json 儲(chǔ)存的是一個(gè)地址,只是保證了地址不可變,但數(shù)組和對(duì)象本身是可變的,所以依然可以為其添加新屬性。

2 解構(gòu) 2.1 數(shù)組解構(gòu)賦值
    var name = "LiMing";
    var age = 12;
    // ES5 變量賦值
    
    let [name, age] = ["LiMing", 12];
    // 解構(gòu)賦值

以前為變量賦值,只能直接指定值。ES6中可以按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)。

    let a = ["LiMing", 12];
    let [name, age] = a;
    console.log(name, age) // LiMing 12
    
    let [,,b] = ["hello", "world", "hello kitty"];
    console.log(b) // hello kitty
    
    let [one, , two] = [1, 2, 3];
    console.log(one, two) // 1 3
    
    let [s1, ...s2] = [1, 2, 3, 4, 5];
    console.log(s1, s2)  // 1  [2, 3, 4, 5]
    
    let b = [];
    console.log(b) // undefined
    
    let [a1, a2 ,a3] = [1];
    console.log(a1, a2)  // 1 undefined

如果解構(gòu)不成功,變量的值就等于undefined。
如果右邊的數(shù)據(jù)不是數(shù)組將會(huì)報(bào)錯(cuò)。

    let [a] = true; // TypeError: true is not iterable
    
    let [a] = NaN; // TypeError: NaN is not iterable
    
    let [a] = 1; // TypeError: 1 is not iterable
    
    let [a] = null; // TypeError: null is not iterable
    
    let [a] = undefined; // TypeError: undefined is not iterable
    
    let [a] = {}; // TypeError: {} is not iterable
2.2 默認(rèn)值

解構(gòu)允許指定默認(rèn)值

    let [a = "hello"] = [];
    console.log(a) // hello 

ES6內(nèi)部嚴(yán)格使用 === 來判斷是否有值,所以只有當(dāng)一個(gè)數(shù)組成員嚴(yán)格等于undefined,默認(rèn)值才會(huì)生效。

    let [a = "hello world"] = [undefined];
    console.log(a) // hello world
    
    let [a = "hello world"] = [null];
    let [b = "hello kitty"] = [""];
    console.log(a, b)  // null "" 
2.3 對(duì)象解構(gòu)

解構(gòu)當(dāng)然也可以用于對(duì)象

    let {name, age} = {name: "LiMing", age: 12}
    console.log(name, age)  // LiMing 12

對(duì)象解構(gòu)與數(shù)組解構(gòu)不同。 數(shù)組是有順序的,變量值有位置決定,而對(duì)象是無序的,所以變量名必須為對(duì)象的屬性名

    let json = {name: "zero"}
    let {name} = json
    let {a} = json
    console.log(name, a) // zero undefined

如果變量名與屬性名不一致,則需要:

    let {a: name} = {name: "zero"}
    console.log(a)  // zero
2.4 函數(shù)參數(shù)解構(gòu)

函數(shù)的參數(shù)當(dāng)然也可以解構(gòu)

    function s1([a, b]){
        return a + b
    }
    console.log(s1([1, 5])) // 6
    
    
    function add({a = 0, b = 0} = {}) {
      return a + b;
    }
    add({a: 3, b: 8}); // 11
    add({a: 3}); // 3
    add({}); // 0
    add(); // 0

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

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

相關(guān)文章

  • 小記ES6

    摘要:前言來自閱讀阮老師的入門的小結(jié)疑問先開個(gè)坑,慢慢填問題和循環(huán)先看書中的一段代碼這個(gè)我們知道,是因?yàn)槊總€(gè)都被賦予了一個(gè)函數(shù),輸出作用域的,而是在全局作用域下調(diào)用的,所以輸出的是全局變量,因?yàn)檠h(huán)沒有塊作用域,所以輸出。 前言 來自閱讀阮老師的《ES6入門》的小結(jié)+疑問~先開個(gè)坑,慢慢填 問題 Q:let和for循環(huán)?先看書中的一段代碼: var a = []; for (var i = ...

    amuqiao 評(píng)論0 收藏0
  • javascript小記

    摘要:模板字面量相當(dāng)于格式化字符串字符串用兩個(gè)包含起來并且內(nèi)部的占位符用標(biāo)識(shí)一般用于標(biāo)識(shí)多行文本或者配合函數(shù)使用與箭頭函數(shù)用于數(shù)組是用于讓數(shù)組每一個(gè)元素都調(diào)用函數(shù)的語法基本格式為其中為數(shù)組元素下標(biāo)為當(dāng)前元素所屬的數(shù)組對(duì)象在實(shí)際調(diào)用時(shí)只需要箭頭函數(shù) 1.模板字面量相當(dāng)于格式化字符串,字符串用兩個(gè)``包含起來,并且內(nèi)部的占位符用${variable}標(biāo)識(shí).一般用于標(biāo)識(shí)多行文本或者配合函數(shù)使用. ...

    waltr 評(píng)論0 收藏0
  • 前端小白的面經(jīng)小記

    摘要:前端小白最近面試幾家公司,寫點(diǎn)面經(jīng)分享給大家,同時(shí)記錄下自己的缺點(diǎn)以供后期補(bǔ)足,各個(gè)公司的開發(fā)方向不同,請(qǐng)各位理性看待。直接現(xiàn)場(chǎng)手敲觸發(fā)的樣式。數(shù)組去重如何實(shí)現(xiàn)如果用的話,里面如何寫排序算法。對(duì)象何時(shí)被修改心態(tài)需要調(diào)整好,不緊張不匆忙。 前端小白最近面試幾家公司,寫點(diǎn)面經(jīng)分享給大家,同時(shí)記錄下自己的缺點(diǎn)以供后期補(bǔ)足,各個(gè)公司的開發(fā)方向不同,請(qǐng)各位理性看待。 問題相關(guān) Css 布局方式有...

    FuisonDesign 評(píng)論0 收藏0
  • 前端小白的面經(jīng)小記

    摘要:前端小白最近面試幾家公司,寫點(diǎn)面經(jīng)分享給大家,同時(shí)記錄下自己的缺點(diǎn)以供后期補(bǔ)足,各個(gè)公司的開發(fā)方向不同,請(qǐng)各位理性看待。直接現(xiàn)場(chǎng)手敲觸發(fā)的樣式。數(shù)組去重如何實(shí)現(xiàn)如果用的話,里面如何寫排序算法。對(duì)象何時(shí)被修改心態(tài)需要調(diào)整好,不緊張不匆忙。 前端小白最近面試幾家公司,寫點(diǎn)面經(jīng)分享給大家,同時(shí)記錄下自己的缺點(diǎn)以供后期補(bǔ)足,各個(gè)公司的開發(fā)方向不同,請(qǐng)各位理性看待。 問題相關(guān) Css 布局方式有...

    MSchumi 評(píng)論0 收藏0
  • 知識(shí)點(diǎn)小記

    摘要:箭頭函數(shù)我們來看一下箭頭函數(shù)的效果箭頭函數(shù)是無法通過來修改作用域的這個(gè)需要切記。所以切記在需要的時(shí)候使用箭頭函數(shù)。 這是一些小問題的記錄和總結(jié): 1. vue serve和build 在vue-cli3.0中可以快速的開發(fā)原型。通過全局安全@vue/cli-service-global npm i -g @vue/cli-service-global 那么就可以使用vue serve ...

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

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

0條評(píng)論

王晗

|高級(jí)講師

TA的文章

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