深入理解ES6之《ES7》

angelayun發表於2017-08-27

指數運算子

Math.pow是可以進行求冪運算的
求冪運算子是兩個星號

let result = 5 ** 2
console.log(result) //25
console.log(result === Math.pow(5, 2)) //trueA

求冪運算子的優先順序高於其它二元運算子,但是一元運算子的優先順序高於求冪運算子

let result = 2 * 5 ** 2
console.log(result)//50

求冪運算子左側的一元運算子只能是++或者是–

let result =-5** 2//語法錯誤
let result = -(5 ** 2)//可以這樣包裹
let result = (-5) ** 2//也可以這樣包裹

Array.prototype.includes

在ES6中可通過String.prototype.includes方法來檢查給定字串中是否存在某些子字串
Array.prototype.includes接受倆引數

  1. 要搜尋的值
  2. 開始搜尋的索引位置(可選)
let values = [1, 2, 3]
console.log(values.includes(1))//true
console.log(values.includes(0))//false
console.log(values.includes(1, 2))//false

用includes進行值比較時,===操作符的使用只有一個例外:即使NaN===NaN的計算結果是false,NaN也被認為是等於NaN,這與indexOf方法的行為不同,後者嚴格使用===進行比較

let values = [1, NaN, 2]
console.log(values.indexOf(NaN))//-1
console.log(values.includes(NaN))//true

另外一個奇怪的地方是+0和-0不管是在indexOf還是在includes中的表現行為都相同

let values = [1, +0, 2]
console.log(values.indexOf(-0))//-1
console.log(values.includes(-0))//false--後面發現測試的居然是true

函式作用域嚴格模式下改動

在ES6中仍然可以使用“use strict”指令來指定嚴格模式
ES7中指出只有引數不包含解構或預設值的簡單引數列表時才可以在函式中使用“use strict”

function okay(first, second) {
  "use strict"
  return first
}
//這裡丟擲語法錯誤
function notOkay1(first, second = first) {
  "use strict"
  return first
}

相關文章