for (let codePoint of 'foo') { console.log(codePoint) } // "f" // "o"
傳統上, JavaScript 只有indexOf方法,能夠用來肯定一個字符串是否包含在另外一個字符串中。 ES6 又提供了三種新方法。前端
var s = 'Hello world!'; s.startsWith('Hello') // true s.endsWith('!') // true s.includes('o') // true
var s = 'Hello world!'; s.startsWith('world', 6) // true s.endsWith('Hello', 5) // true s.includes('Hello', 6) // false
束。面試
'x'.repeat(3) // "xxx" 'hello'.repeat(2) // "hellohello" 'na'.repeat(0) // ""
'na'.repeat(2.9) // "nana"
'na'.repeat(Infinity) // RangeError 'na'.repeat(-1) // RangeError
'na'.repeat(-0.9) // ""
'na'.repeat('na') // "" 'na'.repeat('3') // "nanana"
// 普通字符串 `In JavaScript '\n' is a line-feed.` // 多行字符串 `In JavaScript this is not legal.` console.log(`string text line 1 string text line 2`); // 字符串中嵌入變量 var name = "Bob", time = "today"; `Hello ${name}, how are you ${time}?`
在 ES5 中, RegExp 構造函數的參數有兩種狀況正則表達式
參數是字符串,這時第二個參數表示正則表達式的修飾符( flag )segmentfault
var regex = new RegExp('xyz', 'i'); // 等價於 var regex = /xyz/i;
參數是一個正則表示式,這時會返回一個原有正則表達式的拷貝模塊化
var regex = new RegExp(/xyz/i); // 等價於 var regex = /xyz/i;
var regex = new RegExp(/xyz/, 'i'); // Uncaught TypeError: Cannot supply flags when constructing one RegExp from another
new RegExp(/abc/ig, 'i').flags // "i"
flags 屬性函數
ES6 爲正則表達式新增了flags屬性,會返回正則表達式的修飾符。this
// ES5 的 source 屬性 // 返回正則表達式的正文 /abc/ig.source // "abc" // ES6 的 flags 屬性 // 返回正則表達式的修飾符 /abc/ig.flags // 'gi'
0b111110111 === 503 // true 0o767 === 503 // true
// 非嚴格模式 (function(){ console.log(0o11 === 011); })() // true // 嚴格模式 (function(){ 'use strict'; console.log(0o11 === 011); })() // Uncaught SyntaxError: Octal literals are not allowed in strict mode.
Number('0b111') // 7 Number('0o10') // 8
ES6 在 Number 對象上,新提供了Number.isFinite()和Number.isNaN()兩個方法。code
Number.isFinite(15); // true Number.isFinite(0.8); // true Number.isFinite(NaN); // false Number.isFinite(Infinity); // false Number.isFinite(-Infinity); // false Number.isFinite('foo'); // false Number.isFinite('15'); // false Number.isFinite(true); // false
Number.isNaN(NaN) // true Number.isNaN(15) // false Number.isNaN('15') // false Number.isNaN(true) // false Number.isNaN(9/NaN) // true Number.isNaN('true'/0) // true Number.isNaN('true'/'true') // true
isFinite(25) // true isFinite("25") // true Number.isFinite(25) // true Number.isFinite("25") // false isNaN(NaN) // true isNaN("NaN") // true Number.isNaN(NaN) // true Number.isNaN("NaN") // false
// ES5 的寫法 parseInt('12.34') // 12 parseFloat('123.45#') // 123.45 // ES6 的寫法 Number.parseInt('12.34') // 12 Number.parseFloat('123.45#') // 123.45
Number.parseInt === parseInt // true Number.parseFloat === parseFloat // true
Number.isInteger(25) // true Number.isInteger(25.0) // true Number.isInteger(25.1) // false Number.isInteger("15") // false Number.isInteger(true) // false
Number.EPSILON // 2.220446049250313e-16 Number.EPSILON.toFixed(20) // '0.00000000000000022204'
持續更新中~喜歡請留下個喜歡哦!