ES6快速入门第四章------字符串的扩展(可私信解惑)

  • 字符的Unicode表示法

JavaScript允许采用 \uxxxx 形式表示一个字符,其中“xxxx”表示字符的码点。

"\u0061"  表示字母  a

但是,这种表示法只限于\u0000——\uFFFF之间的字符。超出这个范围的字符,必须用两个双字节的形式表达。

 "\u20BB7"      JavaScript会理解成 \u20BB+7 ,所以只会显示一个空格,后面跟着一个7

ES6 对这一点做出了改进,只要将码点放入大括号就能正确解读该字符。

 console.log("\u{20BB7}"); 

Ctrl+b 输出结果

  • 遍历字符串

ES6为字符串添加了遍历器接口,使得字符串可以被for...of循环遍历。

for (let i of 'abcd') {

  console.log(i)
}

运行结果,字符串 'abcd' 依次被输出

a 
b 
c 
d 

除了遍历字符串,这个遍历器最大的优点是可以识别大于0xFFFF的码点,传统的for循环无法识别这样的码点。

  • 其他方法

传统上,JavaScript只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6又提供了三种新方法。

  • includes():返回布尔值,表示是否找到了参数字符串。
  • startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。
  • endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。
var s = 'Hello world!';

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

repeat()方法

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

语法     字符串.repeat(重复次数的参数)

'a'.repeat(3)        // "aaa"
'ok'.repeat(2)     // "okok"
'ok'.repeat(0)     // ""
'ok'.repeat(3.9)     // "okokok"        参数为小数只取整数部分,参数为负数会报错,参数为NaN就是0

codePointAt()方法

ES6提供了codePointAt方法,能够正确处理4个字节储存的字符,返回一个字符的码点。

  • 模板字符串

传统的JavaScript语言,输出模板通常是这样写的(使用加号拼接字符串和变量)。

$('.op').append(
    "I am '+info.age+'years old"
)

在ES6模板字符串中可以这样写:

$('.op').append(`
    I am ${info.age} years old
`)

模板字符串(template string)是增强版的字符串,用反引号(`)标识。

反引号在键盘左上角。

其中,变量用 ${变量} 来表示。大括号内部可以放入任意的JavaScript表达式,可以进行运算,引用对象属性,调用函数,甚至还能嵌套。

如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。

模板字符串中所有的空格和缩进都会被保留在输出之中,可以用来定义多行字符串。

  • 标签模板

模板字符串可以紧跟在一个函数名后面,该函数将被调用来处理这个模板字符串。这被称为“标签模板”功能(tagged template)。

alert`123`    // 字符串123跟在 alert函数后面

// 等同于
alert(123)

标签模板其实不是模板,而是函数调用的一种特殊形式。“标签”指的就是函数,紧跟在后面的模板字符串就是它的参数。

但是,如果模板字符里面有变量,就不是简单的调用了,而是会将模板字符串先处理成多个参数,再调用函数。

下面的代码详解可以参考http://es6.ruanyifeng.com/#docs/string#%E6%A0%87%E7%AD%BE%E6%A8%A1%E6%9D%BF中标签模板部分

var a = 5;
var b = 10;

tag`Hello ${ a + b } world ${ a * b }`;        // tag表示一个函数

// 等同于
tag(['Hello ', ' world ', ''], 15, 50);    

第五章:ES6快速入门第五章------正则的扩展(可私信解惑)

发布了34 篇原创文章 · 获赞 0 · 访问量 720

猜你喜欢

转载自blog.csdn.net/qq_18547381/article/details/104135681
今日推荐