es6語(yǔ)法詳解

什么是ECMAScript震捣?

ECMAScript是瀏覽器腳本語(yǔ)言的規(guī)范蒲稳,而我們熟知的js語(yǔ)言氮趋,如JavaScript則是規(guī)范的具體實(shí)現(xiàn)。es6就好比Java的jdk江耀。

一剩胁、es6語(yǔ)法詳解:let聲明變量

1、var聲明的變量往往會(huì)越域祥国;let聲明的變量有嚴(yán)格局部作用域

    {
      var a = 1;
      let b = 2;
    }
    console.log(a)  // 1
    console.log(b)  // Uncaught ReferenceError: b is not defined

2昵观、var 可以聲明多次;let只能聲明一次

    var m = 1;
    var m = 2;
    let n = 1;
    let n = 2;
    console.log(m) //2
    console.log(n) //Uncaught SyntaxError: Identifier 'n' has already been declared

3舌稀、var會(huì)變量提升啊犬;let不存在變量提升

    console.log(x);
    var x = 10; // undefined
    console.log(y);
    let y = 12; // Uncaught ReferenceError: Cannot access 'y' before initialization

注意:以后要習(xí)慣使用let聲明變量

二、es6語(yǔ)法詳解:const聲明變量 相當(dāng)于聲明了一個(gè)常量

1壁查、聲明之后不允許改變

    const a = 1;
    console.log(a) //1
    a = 2;
    console.log(a) // Uncaught TypeError: Assignment to constant variable.

2觉至、一旦聲明必須初始化,否則會(huì)報(bào)錯(cuò)

  const a;
  a = 1; 
  console.log(a) //Uncaught SyntaxError: Missing initializer in const declaration

三睡腿、es6語(yǔ)法詳解:解構(gòu)表達(dá)式

1语御、數(shù)組解構(gòu)

 let arr = [1, 2, 3];
 let [a, b, c] = arr;
 console.log(a, b, c) //1,2,3

2、對(duì)象解構(gòu)

    const person = {
      name: "qiyue",
      age: 23,
      language: ['java', 'js', 'css']
    }
    const { name, age, language } = person 
    console.log(name, age, language) //qiyue 23 (3) ["java", "js", "css"]

    const person = {
      name: "qiyue",
      age: 23,
      language: ['java', 'js', 'css']
    }
    //從person里解析出name的值在賦值給abc
    const { name:abc, age, language } = person
    console.log(abc, age, language) //qiyue 23 (3) ["java", "js", "css"]

四席怪、es6語(yǔ)法詳解: 字符串?dāng)U展

    let str = "hello.vue";
    console.log(str.startsWith("hello")) //true
    console.log(str.endsWith("vue")) //true
    console.log(str.includes("e")) //true
    console.log(str.includes("hello")) //true

五应闯、es6語(yǔ)法詳解: 字符串模板

let str = `<span>hello world</span>`
console.log(str) // <span>hello world</span>

六、es6語(yǔ)法詳解: 字符串插入變量和表達(dá)式挂捻。變量寫在<math><semantics><annotation encoding="application/x-tex">{}中碉纺,</annotation></semantics></math>中,{}中可以放入js表達(dá)式

let info = `我是${abc},今年${age}`
console.log(info) //我是qiyue,今年23

let info = `我是${abc},今年${age}`
console.log(info) //我是qiyue,今年23

let info = `我是${abc},今年${age}`
console.log(info) //我是qiyue,今年23

   function fun() {
      return "這是一個(gè)函數(shù)";
    }
    let info = `我是${abc},今年${age + 10},我想說:${fun()}`
    console.log(info) //我是qiyue,今年33,我想說:這是一個(gè)函數(shù)

七刻撒、es6語(yǔ)法詳解: 函數(shù)優(yōu)化

1骨田、函數(shù)默認(rèn)值:直接給參數(shù)寫上默認(rèn)值,沒傳就會(huì)自動(dòng)使用默認(rèn)值

function add(a, b = 1) {
      return a + b;
    }
    console.log(add(10)) //11

2声怔、不定參數(shù):不定參數(shù)用了表示不確定的參數(shù)個(gè)數(shù)态贤,形如…變量名,由…加上要給具名參數(shù)標(biāo)識(shí)符組成捧搞。具名參數(shù)只能放在參數(shù)列表的最后抵卫,并且有且只有一個(gè)不定參數(shù)

 function fun(...params) {
      console.log(params.length)
    }
    fun(1, 2) // 2
    fun(1, 2, 3, 4) //4

3、箭頭函數(shù)

//以前
var sum = function (a, b) {
      c = a + b
      return c
    }
console.log(sum(2, 3)) // 5
//箭頭函數(shù)
var sum2 = (a, b) => a + b;
console.log(sum2(2, 4)) // 6

4胎撇、箭頭函數(shù)結(jié)合解構(gòu)表達(dá)式

    //以前
    function hello(person) {
      console.log("hello" + person.name)
    }
    hello(person); //helloqiyue
    //箭頭函數(shù)
    let hello2 = params => console.log("hello" + person.name)
    hello2(person) //helloqiyue
    //箭頭函數(shù)加解構(gòu)表達(dá)式
    var hello3 = ({ name }) => console.log("hello" + name)
    hello3(person) //helloqiyue

八介粘、es6語(yǔ)法詳解: 對(duì)象優(yōu)化

1、es6給Object擴(kuò)展了許多新的方法晚树,如

  • key(obj):獲取對(duì)象的所有key形成的數(shù)組
  • value(obj):獲取對(duì)象的所有value形成的數(shù)組
  • entries(obj):獲取對(duì)象所有的key和value形成的二維數(shù)組
  const person = {
      name: "qiyue",
      age: 23,
      language: ["java", "js", "css"]
    }
    console.log(Object.keys(person)) //["name","age","language"]
    console.log(Object.values(person)) // ["qiyue",23,Array(3)]
    console.log(Object.entries(person)) //[Array(2),Array(2),Array(2)]

2姻采、Object.assign方法的第一個(gè)參數(shù)是目標(biāo)對(duì)象,后面的參數(shù)都是源對(duì)象爵憎;將源對(duì)象的屬性賦值到目標(biāo)對(duì)象中

    onst target = { a: 1 }
    const source1 = { b: 2 }
    const source2 = { c: 3 }
    Object.assign(target, source1, source2);
    console.log(target) //{a: 1, b: 2, c: 3}

3慨亲、 聲明對(duì)象簡(jiǎn)寫

    //以前
    const name = 'sanyue'
    const age = 21
    //將屬性值name婚瓜,age分別賦給person1對(duì)象的name,age,后面是屬性值
    const person1 = { name: name, age: age }
    console.log(person1) //{name: "sanyue", age: 21}

    //es6:屬性名和屬性值變量名一樣刑棵,可以省略
    const person2 = {name,age}
    console.log(person2) //{name: "sanyue", age: 21}

4巴刻、對(duì)象的函數(shù)屬性簡(jiǎn)寫

 let person3 = {
      name: "qiyue",
      //以前
      eat: function (food) {
        console.log(this.name + "在吃" + food);
      },
      //箭頭函數(shù)中this不能使用,用對(duì)象.屬性
      eat2: food => console.log(person3.name + "在吃" + food),
      eat3(food) {
        console.log(this.name + "在吃" + food)
      }
    }
    person3.eat("蘋果") //qiyue在吃蘋果
    person3.eat2("香蕉") // qiyue在吃香蕉
    person3.eat3("西瓜") //qiyue在吃西瓜

5蛉签、對(duì)象的擴(kuò)展運(yùn)算符

擴(kuò)展運(yùn)算符(…)用于取出參數(shù)對(duì)象所有可遍歷屬性然后拷貝到當(dāng)前對(duì)象

    //拷貝對(duì)象(深拷貝)
    let p1 = { name: "qiyue", age: 23 }
    let obj = { ...p1 }
    console.log(obj)//{name: "qiyue", age: 23}

    //合并對(duì)象
    let age1 = { age: 24 }
    let name1 = { name: "qiyue" }
    let p2 = {}
    p2 = { ...age1, ...name1 }
    console.log(p2) //{age: 24, name: "qiyue"}
    //如果p2中原本有name,age屬性會(huì)被覆蓋

九胡陪、es6語(yǔ)法詳解:map和reduce方法

1、map():接收一個(gè)函數(shù)碍舍,將原數(shù)組中的所有元素用這個(gè)函數(shù)處理后放入新數(shù)組返回

 let arr = ["1", "3", "4", "23"]
    arr = arr.map(item => item * 2)
    console.log(arr) //[2, 6, 8, 46]

2柠座、reduce():為數(shù)組中的每一個(gè)元素依次執(zhí)行回調(diào)函數(shù),不包括數(shù)組中被刪除或未被賦值的元素

語(yǔ)法:arr.reduce(callbace,[initialValue])

callback(執(zhí)行數(shù)組中每個(gè)值的函數(shù)片橡,包含四個(gè)參數(shù))

  • previousValue(上一次調(diào)用回調(diào)返回的值妈经,或者是提供的初始值(initialValue))
  • currentValue(數(shù)組中當(dāng)前被處理的元素)、
  • index(當(dāng)前元素在數(shù)組中的索引)
  • array(調(diào)用reduce的數(shù)組)

initialValue(作為第一次調(diào)用callback的第一個(gè)參數(shù))

    let arr1 = [2, 40, -10, 6]
    let result = arr1.reduce((a, b) => {
      return a + b
    }, 10)
    console.log(result)//48

十捧书、es6語(yǔ)法詳解:模塊化

什么是模塊化:模塊化就是把代碼進(jìn)行拆分吹泡,方便重復(fù)利用。類似Java中的導(dǎo)包鳄厌,要使用一個(gè)包荞胡,必須先導(dǎo)包妈踊。二Js中沒有包的概念了嚎,換來的就是模塊

模塊的功能主要有兩個(gè)命令構(gòu)成:export和import

  • export命令用于規(guī)定模塊的對(duì)外接口,export不僅可以導(dǎo)出對(duì)象廊营,一切js變量都可以導(dǎo)出歪泳。比如:基本類型變量、函數(shù)露筒、數(shù)組呐伞、對(duì)象
  • import命令用于導(dǎo)入其他模塊提供的功能
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市慎式,隨后出現(xiàn)的幾起案子伶氢,更是在濱河造成了極大的恐慌,老刑警劉巖瘪吏,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件癣防,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡掌眠,警方通過查閱死者的電腦和手機(jī)蕾盯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓝丙,“玉大人级遭,你說我怎么就攤上這事望拖。” “怎么了挫鸽?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵说敏,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我丢郊,道長(zhǎng)像云,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任蚂夕,我火速辦了婚禮迅诬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘婿牍。我一直安慰自己侈贷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布等脂。 她就那樣靜靜地躺著俏蛮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪上遥。 梳的紋絲不亂的頭發(fā)上搏屑,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音粉楚,去河邊找鬼辣恋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛模软,可吹牛的內(nèi)容都是我干的伟骨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼燃异,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼携狭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起回俐,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤逛腿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后仅颇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體单默,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年灵莲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雕凹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖枚抵,靈堂內(nèi)的尸體忽然破棺而出线欲,到底是詐尸還是另有隱情,我是刑警寧澤汽摹,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布李丰,位于F島的核電站,受9級(jí)特大地震影響逼泣,放射性物質(zhì)發(fā)生泄漏趴泌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一拉庶、第九天 我趴在偏房一處隱蔽的房頂上張望嗜憔。 院中可真熱鬧,春花似錦氏仗、人聲如沸吉捶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)呐舔。三九已至,卻和暖如春慷蠕,著一層夾襖步出監(jiān)牢的瞬間珊拼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工流炕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留澎现,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓浪感,卻偏偏與公主長(zhǎng)得像昔头,于是被迫代替她去往敵國(guó)和親饼问。 傳聞我的和親對(duì)象是個(gè)殘疾皇子影兽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容