es6小記


title: es6小記

變量與常量

let 定義變量, const 定義常量,常量定義一次后,不可更改

let r = 2
r = 4
console.log(r)   r =====> 4

const pi = 3.14
pi = 3.2
console.log(pi)  報(bào)錯(cuò)Assignment to constant variable.

不可重復(fù)定義

var foo = 1
var foo = 2
console.log(foo)  foo =====> 2

let foo = 1
let foo = 2
console.log(foo)  報(bào)錯(cuò)Identifier 'foo' has already 

塊級(jí)定義域

事例 1:
if (true) {
    var test = 1
}
console.log(test)   test =====> 1

if (true) {
    let test1 = 1
}
console.log(test1)  報(bào)錯(cuò)ReferenceError: test1 is not defined

事例 2:
let arr = [1, 2, 3, 4]
for (var i = 0; i < arr.length; i++) {
    // do nothing
}
console.log(i)  i =====> 4

for (let j = 0; j < arr.length; j++) {
    // do nothing
}
console.log(j)  j =====> ReferenceError: j is not defined

不存在變量提升

console.log(names)
var names = 'pig' 
names ======> undefined
因?yàn)関ar存在變量提示,實(shí)際代碼操作如下:
var names;
console.log(names)
names = 'pig'

console.log(age)
let age = 10
age =====> Identifier 'age' has already been declared

箭頭函數(shù)

參數(shù) => 表達(dá)式/語句

let value1 = 1;
let double = x => 2 * x;  // x為參數(shù)
let treble = x => {
    return 3 * x;
}
console.log(double(value1))  =====> 2
console.log(treble(value1))  =====> 3

繼承外層作用域,沒有自己的this指針,沒有獨(dú)立作用域

var obj = {
    commonFn: function () {
        console.log(this)
    },
    arrowFn: () => {
        console.log(this)
    }
}
obj.commonFn() // this指向obj
    輸出: {
        commonFn: function () {
        },
        arrowFn: () => {
        }
    }
obj.arrowFn() // // this指向obj的作用域,也就是windows
    輸出: {
        window {
            ...
        }
    }

不能用作構(gòu)造函數(shù),不能用new生成一個(gè)對(duì)象

let Animai = function () {
}
let animai = new Animai()
animai =====> Animai {}

let Animai1 = () => {
}
let animai1 = new Animai1()
animai1 =====> 報(bào)錯(cuò):Animai1 is not a constructor

沒有prototype屬性

let commonFn = function () {}
let arrowFn = () => {}

console.log(commonFn.prototype)  =====> { constructor }
console.log(arrowFn.prototype)  =====> undefined

模版字符串

基本用法

let str = `
    <div>
        <h1 class="title">123</h1>
    </div>
`
document.querySelector('body').innerHTML = str //html頁面顯示模版字符串的內(nèi)容

添加變量

let name = 'pig'
let str = `
    <div>
        <h1>${name}</h1>
    </div>
`
document.querySelector('body').innerHTML = str //html頁面顯示pig

添加方法

let getName = () => {
    return 'my pig'
}
let str = `
    <div>
        <h1>${getName()}</h1>
    </div>
`
document.querySelector('body').innerHTML = str //html頁面顯示my pig

循環(huán)遍歷

let arr = ['pig', 'dog', 'duck']
let str = `
    <ul>
        ${
            arr.map(name => `<li>I am ${name}</li>`).join('')
        }
    </ul>
`
document.querySelector('body').innerHTML = str 
//html頁面顯示三個(gè)li,分別輸出語句 I am pig / I am dog / I am duck

promise

基礎(chǔ)用法

new Promise((resolve, reject) => {
    // 異步函數(shù)
    if (4 == 2) {
        resolve()
    } else {
        reject()
    }
}).then((res) => {
    // resolve
    console.log('success', res)
}, (err) => {
    // reject
    console.log('fail', err)
})

控制臺(tái)輸出:fail undefined

兩個(gè)請(qǐng)求,一個(gè)請(qǐng)求成功后觸發(fā)第二個(gè)請(qǐng)求,第二個(gè)請(qǐng)求成功后輸出值

var promise1 = new Promise((resolve, reject) => {
    if (6 > 2) {
        resolve()
    } else {
        reject()
    }
})

var promise2 = new Promise((resolve, reject) => {
    if (3 > 2) {
        resolve()
    } else {
        reject()
    }
})

promise1.then(() => {
    return promise2
}).then(() => {
    console.log('promise2 success')
})

控制臺(tái)輸出:promise2 success

面向?qū)ο?類

基礎(chǔ)用法

class Animal {
    constructor (name) {
        this.name = 'animal'
        this.myname = name
    }
    getName () {
        return this.name + ',' + this.myname
    }
}

let animal = new Animal('pig') // 實(shí)例化Animal的類
console.log(animal.getName()) // 控制臺(tái)輸出:animal,pig

類的繼承

class Animal {
    constructor () {
        this.name = 'animal'
    }
    getName () {
        return this.name
    }
}
class Cat extends Animal{
    constructor () {
        super() // 如果不加這行代碼,會(huì)報(bào)錯(cuò)Must call super constructor in derived class             before accessing 'this' or returning from derived 
        this.name = 'cat'
    }
}

let animal = new Animal()
let cat = new Cat()
console.log(animal.getName())  =====> animal
console.log(cat.getName())  =====> cat

對(duì)象的寫法

原本es5的寫法
var name = 'pig',
    age  = 18
var obj = {
    name: name,
    age: age,
    getName: function () {
        return this.name
    },
    getAge: function () {
        return this.age
    }
}
console.log(obj.getName())  =====> pig

現(xiàn)在es6的寫法
let name = 'pig',
    age  = 18
let obj = {
    name, //變量名可以直接用作對(duì)象的屬性名稱
    age,
    getName () { //方法可以簡(jiǎn)寫
        return this.name
    },
    ['get' + 'Age'] () { //表達(dá)式作為屬性名或者方法名
        return this.age
    }
}
console.log(obj.getName())   =====> pig
console.log(obj.getAge())   =====> 18
  • Object.keys // 獲取對(duì)象的所有屬性名,放回的是一個(gè)數(shù)組

    Object.keys(obj) =====> ['name', 'age', 'getName', 'getAge']

  • Object.assign // 對(duì)象的整合

    Object.assign({a: 1, b: 2}, {a: 3, b: 3, c: 5}) =====> {a: 3, b: 3, c: 5}

模塊化

基本用法

export: 導(dǎo)出模塊的內(nèi)容
let str = 'string'
let obj = {
    name: 'pig'
}
export {
    str,
    obj
}

import: 在其他js文件獲取模塊的內(nèi)容
import {str, obj, fn} from './module.js'
console.log('name', obj.name)   =====> 'pig'
console.log('str', str)         =====> 'string'

默認(rèn)輸出/引用

輸出默認(rèn)值:
export default {a: 1}

引用默認(rèn)值:(引用時(shí)可以使用任意名稱接受傳遞過來的值)
import foo from './module.js'
console.log('foo', foo)

補(bǔ)充知識(shí)點(diǎn)

image.png

image.png
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,665評(píng)論 1 32
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 30,246評(píng)論 8 265
  • 感恩大恩上師及諸佛菩薩護(hù)佑我加持我,感恩上師慈悲傳授正法,祈愿上師永駐我心,謝謝,謝謝,謝謝! 感恩爸媽公婆對(duì)我和...
    曉筱竹閱讀 183評(píng)論 0 0
  • 趙雷說不想長(zhǎng)大就別學(xué)別人去掙扎。不想長(zhǎng)大是性格原因,我們喜歡的是別人身上的特質(zhì),其實(shí)我們喜歡的是自己。 從今往后,...
    半理閱讀 1,353評(píng)論 3 2
  • 飛鳥之翼閱讀 184評(píng)論 0 0

友情鏈接更多精彩內(nèi)容