常量
ES6中定義了常量 const 睛藻,常量只讀不可以進行修改
//ES5中常量得這么寫
Object.defineProperty(window, "demaxiya",{
value: 'nuokesasi',
writable: false
})
console.log(demaxiya) //輸出 nuokesasi
demaxiya = aioniya //報錯
//強大的ES6
const demo = 'lalalademaxiya'
console.log(demo) //輸出 lalalademaxiya
demo = 'lalalalualua' //報錯
作用域
ES6用{}來劃分一個作用域
{
let a = 5
console.log(a) //輸出5
}
{
let a = 50
console.log(a) //輸出50
}
{
let a = 500
console.log(a) //輸出500
}
{
let a = 5000
console.log(a) //輸出5000
}
console.log(a) //輸出undefined
像上面那樣,在塊級作用域里面用let定義一個變量茄厘,let跟var的作用差不多射沟,但是let定義的變量只在作用域范圍內(nèi)有效,所以在var跟let都能用的情況下推薦使用let來定義變量
箭頭函數(shù)
//es6之前定義一個函數(shù)
function a() {
xxx
}
//在es6中你可以這么定義
()=>{
xxx
}
//舉個栗子
//es6之前
var demo = function(x,y) {
return x + y
}
console.log(demo(5,6)) //輸出11
//在es6中你可以這么寫
var demoA = (x,y) => x+y
console.log(demoA(5,6)) //輸出11
//甚至如果參數(shù)只有一個的話你看一連括號都省略了
//es6之前
var demo = function(x) {
return x+1
}
//在es6中你可以這么寫
var demoA = x => x + 1
ES6確實是猛的一批.....
箭頭函數(shù)的this指向問題
var factory = function() {
this.a = 'a'
this.b = {
a : 'aaaa',
b: function () {
return this.a
}
}
}
console.log(new factory().b.b()) // 輸出‘a(chǎn)aaa’
//es6
let factory = function() {
this.a = 'a'
this.b = {
a : 'aaaa',
b: () => {
return this.a
}
}
}
console.log(new factory().b.b()) // 輸出‘a(chǎn)’
函數(shù)體內(nèi)的this對象士鸥,就是定義時所在的對象,而不是使用時所在的對象。這個是重點
默認參數(shù)
let demo = function (x, y = 5) {
return x + y
}
console.log(demo(5)) //輸出為10
console.log(demo(5蛾洛,10)) //輸出為15
es6中可以像上面那樣定義一個默認參數(shù),如果該參數(shù)沒有賦值雁芙,則調用默認參數(shù)作為參數(shù)
可變參數(shù)
當你不確定你參數(shù)的個數(shù)的時候轧膘,你可以使用可變參數(shù)
//實現(xiàn)加數(shù)不定的加法運算
function f(...a) { //...是擴展運算符
let sun = 0
a.forEach(item => {
sum+=item
})
}
擴展運算符 ...
擴展運算符你可以這么用
let arr = [1,2,3,4,5]
//合并數(shù)組
let arr1 = [1,2,3,4,...arr]
console.log(arr1) // 1,2,3,4,1,2,3,4,5