常用語法:
1、let
與var類似,不同的是let定義的變數有塊級作用域,比如:
var a=1;
while(true)
alert(a); //2
//用let:
let a=1;
while(true)
alert(a); //1
2、const用來定義變數,但是定義之後的值不能再次更改了。
乙個實際的用途是用來定義引入的模組,避免重新命名導致出錯。
const hello = require('hello')
3、class、super、extends
es6引入了類的概念,extends是用來繼承的
**如下:
class
animal
eat(food)
}let animal = new animal();
animal.eat('water') //animal eat water
class
dogextends
animal
says(say)
}let dog = new dog();
dog.eat('bone'); //dog eat bone
dog.says('www'); //dog says www
其中的constructor方法就是構造方法,而this關鍵字則代表例項物件。簡單地說,constructor內定義的方法和屬性是例項物件自己的,而constructor外定義的方法和屬性則是所有實力物件可以共享的。
4、箭頭函式 arrow function
簡潔的表示了函式:
function
(i)es6可以寫為: (i) => i + 1;
複雜一點的要加{},例如:
function
(x,y)
寫為:(x,y) =>
除了簡潔之外,箭頭函式中的this永遠是指向當前的物件。
這就避免了一些this的指向,比如settimeout()中的this是指向全域性物件,經常導致要求的結果不一樣。例如:
settimeout(function())
es6: settimeout(() => )//this指向當前物件
5、模板字串,比如之前的:
"there are" + basket.count + "" +
"items in your basket, " +
"" + basket.onsale +
" are on sale!"
);字串和變數拼接麻煩,現在es6可以這樣:
`there are$items in your basket, $ are on sale!`
); //用反引號來表示字串,用${}來表示變數,並且{}裡面可以是任意js表示式,可以進行運算等,`其中的空格和縮排都會保留出來。
如果不要保留換行可以用trim()方法去掉,放在反引號後:
`there are$items in your basket, $ are on sale!`.trim()
);6、es6允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構(destructuring)。
以前,為變數賦值,只能直接指定值。
let a = 1;
let b = 2;
let c = 3;
es6允許寫成下面這樣。
let [a, b, c] = [1, 2, 3];
本質上,這種寫法屬於「模式匹配」,只要等號兩邊的模式相同,左邊的變數就會被賦予對應的值。
如果右邊的個數多於左邊,但是模式相同,這種情況叫解構不完全,但是可以成功。
如果右邊個數小於左邊,則解構不成功。
//不成功
let [x, y, ...z] = ['a'];
// x:"a"
// y:undefined
// z:
//不完全
let [a, [b], d] = [1, [2, 3], 4];
a // 1
b // 2
d // 4
如果右邊不是陣列就會報錯
// 報錯
let [foo] = 1;
let [foo] = false;
let [foo] = nan;
let [foo] = undefined;
let [foo] = null;
let [foo] = {};
7、函式的預設引數值
es5是不能直接為函式指定預設引數的,只能變通的方法:
//傳統方法
function
a(x,y)
a('friend');
//friend hello
a('friend','bye') //friend bye
a('friend','') //friend hello
//es6方法
function
a(x,y='hello')
a('friend');
//friend hello
引數變數是預設宣告的,所以不能用let或const再次宣告。
function
foo(x = 5)
8、es6 引入 rest 引數(形式為「…變數名」),用於獲取函式的多餘引數,這樣就不需要使用arguments物件了。rest 引數搭配的變數是乙個陣列,該變數將多餘的引數放入陣列中。
function
animals
(...types)
animals('cat', 'dog', 'fish') //["cat", "dog", "fish"]
9、遍歷器
es6引入了其他語言如pyhton的for…of…,進行迭代,適用於陣列,一些類陣列的物件:
const arr = ['red', 'green', 'blue'];
for(let v of arr)
ES6學習筆記
let 塊變數 作用域為塊 const 常亮 作用域為當前塊 解構賦值 例 var x,y 1,2 字元擴充套件 at includes startswith endswith repeat codepointat 模板字串 例 正則的uiy 數值擴充套件 number.isfinite numbe...
ES6學習筆記
var 有變數提公升 let 是塊級作用域,沒有變數提公升 模板語言 還原百分百定義的格式 const 定義常量,特殊情況可以改變值 const b 1 b 2 error const b b.a 2 ok b.c 10 ok object是記憶體位址,位址不變就沒問題 預設值 在不知道接收到個什麼...
ES6學習筆記
es6 字串的開頭 末尾查詢,重複輸出,向前 後新增字串 str.endswith 在str的末尾查詢 str.startswith 在str的開頭查詢 str.includes 在str中查詢 有就返回true,沒有就返回false str.repeat 次數 使str重複輸出幾次 次數 let ...