- javascript三大組成部分:ECMAScript(核心),BOM(瀏覽器對象模型),DOM(文檔對象模型)
ES5與ES3
- 我們平時學(xué)的一般都是ECMAScript 5(簡稱ES5)伐憾,可能也有部分ECMAScript 3(簡稱ES3)了少梁,比如大家看的高級程序設(shè)計講得就是ES5與ES3。
ES6
- ECMAScript 6(ES6)發(fā)布于2015年慌烧,是ECMAScript最新版本鲫忍,也是新標(biāo)準(zhǔn)膏燕,現(xiàn)在各個主流瀏覽器對ES6的支持度良好柿汛,可以放心使用上枕。可能我們現(xiàn)在對ES6的接觸比較少汹粤,但是外面公司很多都是用ES6進(jìn)行編程的射亏。
ES6的變化
聲明變量與常量
- ES5種是用var 語句聲明近忙,缺點:存在變量提升,聲明常量也是用var鸦泳;
- ES6種用let 語句聲明變量银锻,用const聲明常量
- 優(yōu)點1:兩種語句都不存在變量提升∽鲇ィ可以分開聲明。
- 優(yōu)點2:let語句為javascript新增了塊級作用域鼎姐。
舉個栗子
var a = 3;
if(true){
var a = 4;
}
console.log(a);
let a = 3;
if(true){
let a = 4;
}
console.log(a);
變量的解構(gòu)賦值
ES6允許從數(shù)組和對象中提取變量值钾麸,對變量進(jìn)行賦值更振,這就是解構(gòu)賦值。
ES5與ES6對比
- ES5寫法
var a = 1;
var b = 2;
var c = 3;
- ES6寫法
var [a, b, c] = [1, 2, 3];
這樣就給變量a b c對應(yīng)的賦值了饭尝。這里講的是用數(shù)組的結(jié)構(gòu)賦值肯腕,當(dāng)然還有對象的解構(gòu)賦值,這里就先不闡述了钥平,有興趣的同學(xué)可以來自己去探索实撒,也可以來找我討論。
### 下一個亮點 箭頭函數(shù)(=>)
* ES5函數(shù)的寫法
var f = function(v) {
return v;
};
* ES6可以用箭頭函數(shù)這樣寫
var f = (v) => v;
這兩種寫法是等效的
### class
class是ES6新添加的涉瘾,相當(dāng)于是類的意思知态,class是給ES5中的構(gòu)造函數(shù)包裝了一下,讓對象原型的寫法更加清晰立叛,更像面向?qū)ο蟮膶懛ā?###### 用法
* ES中寫在構(gòu)造函數(shù)中的屬性直接寫在constructor方法中负敏;
* 以前寫在原型中的方法也寫在class中,就像寫constructor方法一樣秘蛇;
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
toString() {
return '(' + this.x + ' , ' + this.y + ')';
}
}
let instance = new Point("a", "b");
console.log(instance);
ES5的寫法
function Point(x, y) {
this.x = x;
this.y = y;
}
Point.prototype.toString = function(){
return '(' + this.x + ' , ' + this.y + ')';
}
### string常用方法
直接把高程書上的例子敲給他們看就行了其做。
只寫了一些很基本的ES6,這些要是你感覺自己也沒怎么理解的話就按照自己的講赁还,比如說那個class你不想講的話就刪掉妖泄。
### 擴(kuò)展運算符
擴(kuò)展運算符用三個點號表示,功能是把數(shù)組或類數(shù)組對象展開成一系列用逗號隔開的值
### rest運算符
rest運算符也是三個點號艘策,不過其功能與擴(kuò)展運算符恰好相反浮庐,把逗號隔開的值序列組合成一個數(shù)組