ES6這一篇就夠了

1. let菇存、const

1.1 var存在的問題

  1. var有作用域問題(會(huì)污染全局作用域)
  2. var可已重復(fù)聲明
  3. var會(huì)變量提升預(yù)解釋
  4. var不能定義常量

1.2 let盾计、const特性

  1. let句各、const不可以重復(fù)聲明
  2. let寞缝、const不會(huì)聲明到全局作用域上
  3. let符欠、const不會(huì)預(yù)解釋變量
  4. const做常量聲明(一般常量名用大寫)

1.3 試一試

//1. 作用域
//var
var a = 5;
console.log(window.a); //5

//let、const
let a = 5;
console.log(window.a); //undefined
//有一個(gè)問題衙荐,let定義的a聲明到哪里了呢捞挥?歡迎解釋(:

//2. 重復(fù)聲明 
//var 
var a = 5;
var a = 6;

//let、const
let a = 5;
let a = 6; //Identifier 'a' has already been declared 不能重復(fù)聲明

//3. 預(yù)解釋
//var
console.log(a); //undefined  相當(dāng)于 var a;
var a = 5;

//let const
console.log(a)//Uncaught ReferenceError: a is not defined 語法錯(cuò)誤忧吟,沒有預(yù)解釋
let a = 5;

//4. 常量
//var
var a = 5;
a = 6;

//const
const a = 5;
a = 6;//Uncaught TypeError: Assignment to constant variable. 語法錯(cuò)誤

2.解構(gòu)

解構(gòu)是es6新特性砌函,可以對(duì)數(shù)組對(duì)象內(nèi)容直接解析。

//1.數(shù)組解構(gòu)
let [a1,a2,a3] = [1,2,3]; //a1 = 1; a2 = 2; a3 = 3;

//2.對(duì)象解構(gòu)
let {name,age} = {name:'meteor',age:8}; //name = 'meteor',age = 8;
//let {name:n} = {name:'meteor',age:8};//n = 'meteor' 可以用“:”的形式修改變量名

//3.復(fù)雜解構(gòu)
let [{age}] = [{age:8,name:'xx'},'深圳',[1,2,3]]; //age = 8   注意對(duì)象解構(gòu)

//4.默認(rèn)賦值
let {age=5} = {age:8,name:'xx'}; //age=8 如果沒有age字段 age=5
//常用函數(shù)參數(shù)給默認(rèn)值
//以前
function(){var a = a || 5}
//現(xiàn)在
function(a=5){}

3.字符串

es6中加入了“`”反引號(hào)溜族,反引號(hào)中${}處理模版字符串讹俊。

3.1 反引號(hào)

  1. 更人性的字符串拼接
let name = 'xx';
let age = 9;
let str = `${name}${age}歲了`;
console.log(str); //xx今年歲了
  1. 使用正則+eval的簡(jiǎn)單模擬
let name = 'xx';
let age = 9;
let str = "${name}${age}歲了";
str = str.replace(/\$\{([^}]+)\}/g, function ($1) {
    return eval(arguments[1]);
})
console.log(str); //xx今年歲了
  1. 帶標(biāo)簽的模版字符
//反引號(hào)前使用方法,方法按模版變量把字符串分成兩個(gè)數(shù)組
//第一個(gè)為固定值組成的數(shù)組 
//第二個(gè)值為替換變量組成的數(shù)組
let name = 'xx';
let age = 9;
function tag(strArr, ...args) {
    var str = '';
    for (let i = 0; i < args.length; i++) {
        str += strArr[i] + args[i]
    }
    console.log(strArr,args);
    //[ '', '今年', '歲了' ]   [ 'xx', 9 ]
    //
    str += strArr[strArr.length - 1];
    return str;
}
let str = tag`${name}今年${age}歲了`;
console.log(str);

3.2 incluedes 方法

//判斷字符串中是否包含某個(gè)字符串
let str = 'woaini';
str.includes('ai'); //true

3.3 endsWith煌抒、startsWith 方法

//判斷字符串是否以某一個(gè)字符串開始或結(jié)束
var a = '1AB2345CD';
console.log(a.startsWith('1A')); //true
a.endsWith('cD') //false

4. 函數(shù)

4.1 函數(shù)參數(shù)可賦值仍劈,可解構(gòu)

function({a=5}){}

4.2 箭頭函數(shù)

  1. 如果參數(shù)只有一個(gè),可以省略小括號(hào)
  2. 如果不寫return寡壮,可以不寫大括號(hào)
  3. 沒有arguments變量
  4. 不改變this指向
//求和
let sum = (a,b)=>a+b;

5. 數(shù)組

5.1 數(shù)組新方法

  1. Array.from(); //將類數(shù)組轉(zhuǎn)化成數(shù)組
  2. Array.of(); //創(chuàng)建數(shù)組
  3. Array.fill();//填充數(shù)組
  4. Array.reduce();//傳入回調(diào)適合處理 臨近數(shù)組元素
  5. Array.filter();//數(shù)組過濾
  6. Array.find();//查找返回值
  7. Array.includes();//判斷數(shù)組是否有某值

5.2 Array.from()

//Array.from();
let arr = Array.from({'0':1,'1':2,length:2});
console.log(arr);//[1,2]

5.3 Array.of()

Array.of(2,3); //[2,3]

5.4 Array.reduce()

[1, 2, 3, 4, 5].reduce((prev, next, index, current) => {
    //prev 如果reduce傳入第二個(gè)參數(shù)贩疙,prev為第二個(gè)參數(shù);否則prev為數(shù)組第一個(gè)元素  往后累加
    //next 如果reduce傳入第二個(gè)參數(shù)况既,next為第數(shù)組第一個(gè)元素这溅;否則next為數(shù)組第二個(gè)元素  依次累加
    //index 函數(shù)第幾次執(zhí)行1開始
    //current當(dāng)前數(shù)組
    return prev + next;
})
//reduce方法簡(jiǎn)單實(shí)現(xiàn)
Array.prototype.myReduce = function (cb, pre) {
    let prev = pre || this[0];
    for (var i = pre ? 0 : 1; i < this.length; i++) {
        prev = cb(prev, this[i], i, this);
    }
    return prev;
}

5.3 Array.filter();

let result = [1,2,3,4,5].filter(function(item){
    return item>3;
})
console.log(result);//[4,5]
//filter簡(jiǎn)單實(shí)現(xiàn)
Array.prototype.myFilter = function(cb){
    var arr = [];
    for(var i=0; i<this.length; i++){
        var item = this[i];
        if( cb(item) ) arr.push(item);
    }
    return arr;
}

5.4 Array.find();

let result = [1,1,1,2,3].find(function(item){
    return item == 2;
})
console.log(result);//2

6 對(duì)象

6.1 如果key和value相等則可以簡(jiǎn)寫

let name = 'xx';
let obj = {name};

6.2 解構(gòu)

7 Class 類

  1. Class 定義類
  2. extends 實(shí)現(xiàn)繼承
  3. 支持靜態(tài)方法
  4. constructor構(gòu)造方法
class Parent{
    constructor(name){
        this.name = name;
    }
    getName(){
        return this.name;
    }
    static fn(){
        return 9;
    }
}
class Child extends Parent{
    constructor(name,age){
        super(name);//子類有構(gòu)造函數(shù)必須有super
        this.age = age;
    }
}
let child = new Child('xingxing',9);
console.log(child.getName());//xingxing
console.log(child.name);//xingxing
console.log( Child.fn() );//9
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市棒仍,隨后出現(xiàn)的幾起案子悲靴,更是在濱河造成了極大的恐慌,老刑警劉巖莫其,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件癞尚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡榜配,警方通過查閱死者的電腦和手機(jī)否纬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛋褥,“玉大人临燃,你說我怎么就攤上這事±有模” “怎么了膜廊?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)淫茵。 經(jīng)常有香客問我爪瓜,道長(zhǎng),這世上最難降的妖魔是什么匙瘪? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任铆铆,我火速辦了婚禮蝶缀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘薄货。我一直安慰自己翁都,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布谅猾。 她就那樣靜靜地躺著柄慰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪税娜。 梳的紋絲不亂的頭發(fā)上坐搔,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音敬矩,去河邊找鬼概行。 笑死,一個(gè)胖子當(dāng)著我的面吹牛谤绳,可吹牛的內(nèi)容都是我干的占锯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼缩筛,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了堡称?” 一聲冷哼從身側(cè)響起瞎抛,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎却紧,沒想到半個(gè)月后桐臊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晓殊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年断凶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巫俺。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡认烁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出介汹,到底是詐尸還是另有隱情却嗡,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布嘹承,位于F島的核電站窗价,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏叹卷。R本人自食惡果不足惜撼港,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一坪它、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧帝牡,春花似錦哟楷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至墨技,卻和暖如春惩阶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扣汪。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工断楷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人崭别。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓冬筒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親茅主。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舞痰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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

  • 1、新的聲明方式 以前我們?cè)诼暶鲿r(shí)只有一種方法诀姚,就是使用var來進(jìn)行聲明响牛,ES6對(duì)聲明的進(jìn)行了擴(kuò)展,現(xiàn)在可以有三種...
    令武閱讀 1,007評(píng)論 0 7
  • [TOC] 參考阮一峰的ECMAScript 6 入門參考深入淺出ES6 let和const let和const都...
    郭子web閱讀 1,781評(píng)論 0 1
  • 看這本書是在markdown在做的筆記赫段,更友好的閱讀方式訪問: github es6.md(https://git...
    汪汪仙貝閱讀 456評(píng)論 0 0
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line)呀打,也就是一...
    悟名先生閱讀 4,145評(píng)論 0 13
  • 我又和我爸吵架了,在策劃了有差不多1個(gè)月的韓國(guó)自由行糯笙,到達(dá)首爾的第一天贬丛。我們?cè)诔鲎廛囍邢衩擁\的野馬似的咆哮喊叫,我...
    壹言肆韻閱讀 396評(píng)論 1 0