ES6(四: 字符串新增API)

新增API

(1)includes(), startsWith(), endsWith()(常用)

这么说吧,其实在java jdk1.6 就已经出现了startsWith和endsWith。而且分别常用与判断字符串开始和文件后缀。至于includes我知识点暂时不知道,不知道是不是js独有的,但是觉得所有api都肯定有其他出处,就好像一个好的模式、好的特性最后都会出现在所有平台一样。redux是这样,Lamda表达式也是这样。

includes 和indexOf区别

(1)indexOf 方法,返回是下标,number类型。而includes 是返回boolean

你的逻辑如果不需要知道下标,直接用includes吧。当然你要是觉得写s.indexOf(‘xy’)>-1 习惯了。我也不好说什么

至于startsWithendsWith直接看例子吧。

const s = 'Hello world!';
console.warn(s.startsWith('Hello')); // true
console.warn(s.endsWith('!')); // true
console.warn(s.includes('o')); // true
console.warn(s.indexOf('xy')); // -1

这三个方法都支持第二个参数,表示开始搜索的位置

const s = 'HelloWorld!';
console.warn(s.startsWith('World', 5)); // true
console.warn(s.endsWith('H', 1));       // true
console.warn(s.includes('Hello', 1));   // false

上面代码表示,使用第二个参数n 时, endsWith 的行为与其他两个方法有所不同。

它针对前n 个字符,而其他两个方法针对从第n 个位置直到字符串结束。

(2)repeat()

repeat 方法返回一个新字符串,表示将原字符串重复n 次。

console.warn('x'.repeat(3)); // "xxx"
console.warn('Hello'.repeat(2)); // "HelloHello"
console.warn('na'.repeat(0));   // ""

参数如果是正小数,会被向下取整
参数如果是-1到0小数,会被向上取整为0
参数如果是字符串,会被先转化为数字

console.warn('na'.repeat(2.9)); // "nana";
console.warn('na'.repeat(-0.9)); // "";
console.warn('ha'.repeat('2')); // haha;

特殊情况:
参数如果是NaN,会被转化为0(string转Number失败)。
参数如果是-1及以下小数,会报错
参数如果是Infinity,会报错

console.warn('ha'.repeat(NaN)); // "";
console.warn('na'.repeat(-2.9)); 
// RangeError: Invalid count value;
console.warn('na'.repeat(Infinity)); 
// RangeError: Invalid count value

(3)padStart(), padEnd()

ES7推出了字符串补全长度的功能。
如果某个字符串不够指定长度,会在头部或尾部补全。
padStart 用于头部补全, padEnd 用于尾部补全。

const str = 'hello';
console.log(str.padStart(7,'*')); //**hello
console.log(str.padEnd(7, '*'));  //hello**

上面代码中,
padStart 和padEnd 一共接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串。
如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串。
如果省略第二个参数,则会用空格补全长度。

(4)模板字符串(常用)
传统的JavaScript语言,输出模板通常是这样写的。

$("#testId").append(
    "<h1>" + basket.count + "</h1> "
);

上面这种写法相当繁琐不方便, ES6引入了模板字符串解决这个问题。

$("#testId").append(
    `<h1>${basket.count}</h1>`
);

规则:
(1)模板字符串(template string)是增强版的字符串,用反引号(`)标识。
(2)在模板字符串中需要使用反引号,则前面要用反斜杠转义。

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

(3)表示多行字符串,所有的空格和缩进都会被保留在输出之中。
(4)模板字符串中嵌入变量,需要将变量名写在${} 之中。
(5)大括号内部可以放入任意的JavaScript表达式,可以进行运算,以及引用对象属性。

const x = 1;
const y = 2;
console.error(`${x} + ${y} = ${x + y}`); // "1 + 2 = 3"
console.error(`${x} + ${y * 2} = ${x + y * 2}`); // "1 + 4 = 5"

const obj = {x: 1, y: 2};
console.error(`${obj.x + obj.y}`);// 3

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

const fn = () => "Hello World";
console.log(`foo ${fn()} bar`);// foo Hello World bar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值