ES6( ECMAScript 6.0)語法
一、let/const與var的區別
var 會進行預解析,let/const不會
var可以宣告兩個重名的變數,let/const不能
var沒有塊級作用域,let/const有塊級作用域
二、箭頭函式
1.普通函式
//xxx.onclick=function(a=10,b=20){ } 可以為函式設定預設值,沒傳引數就用預設值
xxx.onclick=function(){ }
var xxx={fn:function(){} }
xxx.forEach(function(){})
setTimeout(function(){})
var xxx=function(){}
2.箭頭函式
格式:把普通函式的function去掉,再在小括號後面加上j箭頭符號(=>)
xxx.onclick=()=>{ }
var xxx={fn:()=>{} }
xxx.forEach(()=>{})
setTimeout(()=>{})
var xxx=()=>{}
三、結構賦值
1.以前陣列
let arr=['hello','world']
let a=arr[0]
let b=arr[1]
2.解構賦值
let [a,b]=['hello','world']
console.log(a)
console.log(b)
四、解構賦值-解構物件(鍵值對)
1.以前獲取物件
let obj={
name:"小明"
age:20
}
let name=obj.nam
let age=obj.nam
2.解構賦值
let obj={
name:"小明"
age:20
}
//定義兩個變數name和age,並獲取obj裡的name和age的值
let{name,age}=obj //如同 let name=obj.nam ,let age=obj.nam
console.log(name,age)
//定義一變數a(為name取個別名a)
let{name:a}=obj
五、E6_模板字串反引號使用
作用:
- 給變數賦值時可以換行
- 可以配合${ 變數 }來解析變數
//給變數賦值時可以換行
var a=`hello
world`
//輸出也保持換行
console.log(a)
//可以配合${ 變數 }來解析變數
var name="小明"
var s=`他的名字是${name}`
console.log(s)
//輸出為:他的名字是小明
六、E6_展開運算子
格式: . . . 陣列或 . . . 物件(鍵值對)
作用:把陣列或鍵值對展開(把中括號和大括號去掉)
用途1:合併陣列或鍵值對
//陣列合並
var s1=[10,20]
var s2=[30,40]
var s3=[50,60,70]
var s=[...s1,...s2,...s3]
console.log(s)
//輸出結果:[10,20,30,40,50,60,70]
//鍵值對合並
var s1={name:"小明",age:12}
var s2={sex:"男",hight:170}
var s={...s1,...s2}
console.log(s)
//結果:{name: '小明', age: 12, sex: '男', hight: 170}
用途2:給函式傳值
//求陣列裡的最大值
var s=[2,4,5,7,20,4]
var max=Math.max(...s)//如同:max=Math.max(2,4,5,7,20,4)
//結果為:20
七、E6_類語法
格式:
class 類名{
constructor( 形參列表 ){
this.屬性名=形參1
this.屬性名=形參2
}
//直接寫方法就行
方法名( ){ 方法體 }
//靜態屬性和方法,加一個static
static a=100
static hi( ){ 方法體 }
}
//E6的類
class Person{
constructor(name,age){
this.name=name
this.age=age
}
//方法
sayHi(){ console.log("你好,世界!") }
//靜態屬性和方法,加一個 static
static a=100
static to()function{ console.log("大家好") }
}
//建立物件
var p1=new Person("小明",20)
//執行方法
p1.sayHi()
//執行靜態屬性和方法
Person.a
Person.to()