关于阅读 ES6- 字符串 整理的问题

1、字符的码点超出 \u0000-\uffff时怎么进行表示呢

答:方式1:使用双字节表示,例如 ‘\uD842\uDFB7’
方式2:ES6中增加大括号表示法,例如 \u{20BB7}‘’

2、每个字符有几个字节呢

答:Unicode码点小于 \uffff,一个字符有两个字节
Unicode码点大于\uffff,一个字符有四个字节

3、JavaScript有几种表示字符的方式呢

答:六种,例如表示 字符z
‘z’
‘\z’
‘\172’
‘\x7A’
‘\u007A’
‘\u{7A}’

4、str.codePointAt()、str.charCodeAt()的区别

答:都是获取字符串中指定位置字符的Unicode码点(十进制的码点)
charCodeAt()是ES5中获取在 \u0000-\uffff之间的字符码点;
codePointAt()是ES6中新增的字符串方法,用于获取任意范围的字符码点(包括超过\uffff的码点)

5、String.fromCodePoint()、String.fromCharCode()的区别

答:都是将Unicode转换为字符的方法
fromCodePoint()是ES6中新增的字符串方法,用于将任意范围的Unicode码点转为字符
fromCharCode是ES5中的方法,用于转换 \u0000-\uffff范围的Unicode码点转换为字符,
即:不能识别32位UTF-16的字符

6、str.codeAt()和str.at()的区别

答:都是 获取字符串中指定位置的字符的方法
codeAt()是获取字符串中指定位置的字符,只能识别Unicode码点在 \u0000-\uffff范围内的
at()是ES6中新增的方法,用于获取字符串中指定位置的字符,字符的Unicode码点为任意范围都可以

7、str.codePointAt()及str.charCodeAt()方法得到十进制的值,怎么转为十六进制呢

答:使用toString(16)方法,例如:‘a’.codePointAt(0).toString(16)

8、JavaScript中字符以什么格式进行存储

答:以UTF-16的格式存储,Unicode大于\uffff的字符有4个字节,小于\uffff的字符有2个字节

9、传统for循环不能识别大于\uffff的码点字符,那么应该改用什么方式进行遍历

答:for…of循环或者扩展运算符

10、什么是Unicode的正规化

答:ES6中字符串新增了 str.normalize() 方法,用于将不同表示方法的相同字符统一为同样的格式
‘\u{61}’.normalize() === ‘a’.normalize() //true

11、判断一个字符是否在一个字符串中,有哪些方法

答:indexOf() 、includes() 、startsWith() 、endsWith()

12、什么是模板字符串

答:是ES6新增得一种表示字符得方法,使用反字符``来包裹字符。里面可以进行字符的换行和添加变量

13、模板字符串和普通字符串有什么区别

答:模板字符串使用反引号,里面可以进行换行,
换行空格缩进等会被保留,里面可以引入变量和JavaScript运算、调用函数等

14、什么是标签模板

答:函数名后面跟着模板字符串,它是一种函数调用的方式,紧跟在函数名后面的模板字符串是函数的入参
fun1hell0 ${a} world ${b}
相当于
fun1([‘hello’, ‘world’, ‘’], a, b)

15、String.raw的作用

答:用于解析模板字符串,如果里面有斜杠\,那么会进行再次转译,
如果有变量,那么会直接显示变量的结果
String.rawaaaa\\${2+3} === ‘aaaa\\5’

16、ES6中如果模板字符串中引入不能解析的语言,会返回什么?

答:报错

17、ES6中如果标签模板中引入不能解析的语言,会怎么样

答:返回 undefined

18、标签模板的作用

答:防止用户的恶意输入,提高系统的安全性

19、怎么判断一个字符是两个字节组成还是四个字节组成

答:使用 codePointAt() 方法,如果大于 0xffff 是四个字节,反之两个字节
str.codePointAt(0) > 0xffff

20、消除字符空格的方法

答:trim()
trimStart() // 别名 trimLeft()
trimEnd() // 别名 trimRight()

21、字符串的 replace(正则或者字符,替代值) 和 replaceAll(正则或者字符,替代值) 方法有什么区别

答:replace 方法只能匹配并替换一个,如果要匹配所有,必须加上正则的修饰符 g
replaceAll 方法是ES2021新增的,可以一次性匹配并替换所有
replaceAll 方法如果第一个参数不是字符,而是正则,那么正则一定要带修饰符g,不然会报错。
‘abads’.replaceAll(/a/, ‘-’) // 报错
‘abads’.replaceAll(/a/g, ‘-’) // ‘-b-ds’
‘abads’.replaceAll(‘a’, ‘-’) // ‘-b-ds’

22、怎么使用字符串的 replaceAll (参数1, 参数2) 方法

答:参数1为字符、字符串或者正则,如果是正则,需要带上g修饰符
参数2是替换的文本,可为字符串或者函数

猜你喜欢

转载自blog.csdn.net/qq_37600506/article/details/124402363
今日推荐