一、let和const
let:聲明變量,只在聲明的塊級作用域(大括號)內起作用[注意:let不向var那樣可以自動提升]
如果一個區塊內存在let或const命令,該區塊就被解析成封閉作用域(暫時性死區,必須先聲明再使用) [所以一個區塊內只要有let,就可能存在死區,就可能會出現變量聲明使用順序的錯誤]
let為JavaScript增加了塊級作用域
ES6中在塊級作用域聲明的函數不能在外部被引用,但在ES5中可以(ES5中的函數聲明可以提升到全局作用域或函數作用域頭部,ES6中不行,但是ES6位了避免對老代碼的沖擊放開了新的規定)
const聲明值不能被改變的常量
const聲明對象的時候指向的是地址而不是具體數據,所以不可變的是地址
let、class、const在全局聲明的變量不再是全局變量,不再掛載到window對象上
二、變量的解構賦值
解構賦值:模式匹配,左右兩側通過數組的模式匹配復制,不需要一個個賦值了,如:
var [a, b, c] = [1, 2, 3] [這種事數組解構,按位置賦值]
還可以對象解構,沒有次序要求,按照變量名賦值:
var {bar, foo} = {foo: “aaa”, bar: “bob”};
字符串解構:const [a, b, c, d, e] = ‘hello';
三、字符串的擴展
\uxxxx表示一個字符,後加字符的四位碼點
codePointAt:正確處理4個字節儲存的字符
String.fromCharCode():將碼點返回成對應的字符串
for…of可以遍歷字符串 比如for(let a of “hello”){console.log(a);} 打印出hello各個字母
類似indexOf()的方法:includes()是否找到參數字符串;startsWith/endsWith是否在字符串頭/尾部
repeat():將原字符串復制n次返回新字符串 ‘x'.repeat(3) //xxx
模版字符串:使用反引號
字符串中可以使用正則表達式的方法:match()/replace()/search()/split()
可以為正則表達式添加u字符,用來處理中文等
四、數值的擴展
0b開頭二進制;0o開頭八進制
Number.isNaN()/Number.inFinite() 檢測一個數是否是NaN/有限值,只對數值有效
Number.isInteger() 判斷是否是整數
Math.trunc() 去除一個數的小數部分;Math.sign() 判斷一個數是正數、負數、零
Math.cbrt() 計算一個數的立方根;Math.hypot() 求所有參數的平方和的平方根
五、數組的擴展
Array.from():將類數組對象轉換成數組,還可以傳入第二個參數,作用類似map,對每個元素操作
ES6中:var arr = Array.from(arrayLike);
ES5中:var arr = [].slice.call(arrayLike);
Array.of():將一組值轉換為數組
find()方法:找到第一個符合條件的數組成員,參數是一個回調函數,每個成員都執行一次回調函數
[1, 5, 10, 15].find(function(value, index, arr) { //當前值、索引、原數組 return value > 9; })
fill()方法:用來填充一個數組,fill(value, start, end),表示從start開始end截止使用value填充
ES6規定數組中空位的值是undefined,注意不是這個位置是undefined而事這個位置的值的undefined
以上所述是小編給大家介紹ES6新特征數字、數組、字符串,希望對大家有幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的。