前端开发培训ECMAScript入门教程百读易莱胜web前端培训专家 联系客服

发布时间 : 星期日 文章前端开发培训ECMAScript入门教程百读易莱胜web前端培训专家更新完毕开始阅读416dc5e7970590c69ec3d5bbfd0a79563c1ed4cb

s.startsWith('Hello') // trues.endsWith('!') // trues.includes('o') // true

这三个方法都支持第二个参数,表示开始搜索的位置。 let s ='Hello world!';

s.startsWith('world',6) // trues.endsWith('Hello',5) // trues.includes('Hello',6) // false

上面代码表示,使用第二个参数n时,endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。

repeat()

repeat方法返回一个新字符串,表示将原字符串重复n次。 'x'.repeat(3) // \'hello'.repeat(2) // \'na'.repeat(0) // \ 参数如果是小数,会被取整。 'na'.repeat(2.9) // \

如果repeat的参数是负数或者Infinity,会报错。 'na'.repeat(Infinity) // RangeError'na'.repeat(-1) // RangeError

但是,如果参数是0到-1之间的小数,则等同于0,这是因为会先进行取整运算。0到-1之间的小数,取整以后等于-0,repeat视同为0。 'na'.repeat(-0.9) // \ 参数NaN等同于0。 'na'.repeat(NaN) // \

如果repeat的参数是字符串,则会先转换成数字。

'na'.repeat('na') // \'na'.repeat('3') // \

padStart(),padEnd()

ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。

'x'.padStart(5,'ab') // 'ababx''x'.padStart(4,'ab') //

'abax''x'.padEnd(5,'ab') // 'xabab''x'.padEnd(4,'ab') // 'xaba' 上面代码中,padStart和padEnd一共接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串。

如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串。 'xxx'.padStart(2,'ab') // 'xxx''xxx'.padEnd(2,'ab') // 'xxx' 如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串。

'abc'.padStart(10,'0123456789') // '0123456abc'

如果省略第二个参数,默认使用空格补全长度。

'x'.padStart(4) // ' x''x'.padEnd(4) // 'x '

padStart的常见用途是为数值补全指定位数。下面代码生成10位的数值字符串。 '1'.padStart(10,'0') // \'12'.padStart(10,'0') // \'123456'.padStart(10,'0') // \ 另一个用途是提示字符串格式。

'12'.padStart(10,'YYYY-MM-DD') //

\'09-12'.padStart(10,'YYYY-MM-DD') // \

模板字符串

传统的JavaScript语言,输出模板通常是这样写的。 $('#result').append(

'There are '+ basket.count +' '+ 'items in your basket, '+ ''+ basket.onSale + ' are on sale!');

上面这种写法相当繁琐不方便,ES6引入了模板字符串解决这个问题。 $('#result').append(`

There are ${basket.count} items in your basket,${basket.onSale} are on sale! `);

模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。 // 普通字符串`In JavaScript '\\n' is a line-feed.` // 多行字符串`In JavaScript this is not legal.`

console.log(`string text line 1 string text line 2`);

// 字符串中嵌入变量let name =\, time =\; `Hello ${name}, how are you ${time}?`

上面代码中的模板字符串,都是用反引号表示。如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。

let greeting = `\\`Yo\\` World!`;

如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。 $('#list').html(`

  • first
  • second
`);

上面代码中,所有模板字符串的空格和换行,都是被保留的,比如

    标签前面会有一个换行。如果你不想要这个换行,可以使用trim方法消除它。 $('#list').html(`
    • first
    • second
    `.trim());

    模板字符串中嵌入变量,需要将变量名写在${}之中。 functionauthorize(user, action){ if(!user.hasPrivilege(action)){ thrownewError(

    // 传统写法为 // 'User ' // + user.name // + ' is not authorized to do ' // + action // + '.' `User ${user.name} is not authorized to do ${action}.`); }}

    大括号内部可以放入任意的JavaScript表达式,可以进行运算,以及引用对象属性。

    let x =1;let y =2;

    `${x}+ ${y}= ${x + y}` // \

    `${x}+ ${y *2}= ${x + y *2}` // \let obj ={x:1, y:2}; `${obj.x + obj.y}` // \

    模板字符串之中还能调用函数。 functionfn(){

    return\;}

    `foo ${fn()} bar` // foo Hello World bar