ES6学习复习系列文章目录
ES6所有知识点学习复习文章链接地址- ES6字符串和数字格式新增的所有知识点(全面详细)
- ES6解构赋值(各种情形详解)
- ES函数默认值
- ES6的箭头函数应用和注意点
- ES6函数尾调用,尾递归及优化深入理解
- ES6数组之扩展运算符应用场景详解
- ES6数组的常用的拓展方法详细应用
- ES5,6数组的空位处理
ES6字符串和数字格式新增的所有知识点(全面详细)
本文研究对象的是ES6字符串, 讲解模板字符串的定义用法和用途,模板字符串的产生极大的方便了js的编程,其中的标签模板对函数传参有了新方法。 除此自外就是新增加的常用字符串方法的实例讲解了正文内容
ES6字符串的新型遍历方法
利用for of 可以将字符串的每个字母遍历出来
当字符串被用来遍历的时候, 字符串临时变成了一个数组, 当完成遍历之后, 这个数组就会被销毁
看代码
for (let letter of 'money'){
console.log(letter);
}
但是
请注意:
和其他的封装对象类似, 基础类型的封装对象只给我们提供的读取的接口, 我们无法通过遍历的方式改变字符串的字符串
for(let c of str){
c = 'm'
}
console.log(str);
ES6的模板字符串
模板字符串的格式
反引号+字符串${变量}字符串+反引号
如下
const a = 2
const b = 3
console.log(`分别输出a,b,a+b的值为${a},${b},${a+b}`);
不是字符串将用toString()转化为字符串
`如果大括号中的值不是字符串,将按照一般的规则转为字符串。比如,大括号中是一个对象,将默认调用对象的toString方法。
function str(){
return "41asd561da56"
}
console.log(`ashda ${str()}`);
标签模板的形式
模板字符串的功能,不仅仅是上面这些。它可以紧跟在一个函数名后面,该函数将被调用来处理这个模板字符串。这被称为“标签模板”功能(tagged template)。
function fn(s){
return s+'black'
}
let x = fn`white`
console.log(x);
但是,如果模板字符里面有变量,就不是简单的调用了,而是会将模板字符串先处理成多个参数,再调用函数。
let i = 5
let j = 10
fn`arg1 ${a+b} arg2 ${a*b}`);
等于
fn([arg1,arg2],15,50)
不要忘记空格也是字符串
const n = 1
const m =2
function tag(){
console.log(arguments);
}
tag`coder ${n+m} wang ${a-b}`
当变量是第一个或是最后一个时,会在第一个前方或是最后一个的后方加入一个空字符串
ES6的字符串新方法
raw()
ES6 为原生的 String 对象,提供了一个raw()方法。该方法返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,往往用于模板字符串的处理方法
如果原字符串的斜杠已经转义,那么就直接输出该模板字符串
.raw方法不能直接往里面传入普通字符串的,否则是会直接报错的
includes(), startsWith(), endsWith()
- includes():返回布尔值,表示是否找到了参数字符串。
- startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
- endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部
repeat()
padStart(),padEnd()
字符串的方法拓展之字符串空格消除trimStart(),trimEnd()
ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。
padStart()和padEnd()一共接受两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。
使用时的三种情形
字符串的方法拓展之字符串空格消除trimStart(),trimEnd()
ES2019 对字符串实例新增了trimStart()和trimEnd()这两个方法。它们的行为与trim()一致,trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。
它们返回的都是新字符串,不会修改原始字符串。
数字格式的方法拓展
ES6 在Number对象上,新提供了Number.isFinite()和Number.isNaN()两个方法。
Number.isFinite()用来检查一个数值是否为有限的(finite),即不是Infinity。
Number.isNaN()用来检查一个值是否为NaN。
Number.isFinite()
Number.isNaN()
它们与传统的全局方法isFinite()和isNaN()的区别在于,传统方法先调用Number()将非数值的值转为数值,再进行判断; 而这两个新方法只对数值有效,Number.isFinite()对于非数值一律返回false, Number.isNaN()只有对于NaN才返回true,非NaN一律返回false。
Number.isInteger()
Number.isSafeInteger()
Math.trunc()
Math.trunc方法用于去除一个数的小数部分,返回整数部分。
Math.sign()
Math.sign方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。
它会返回五种值。
- 参数为正数,返回+1;
- 参数为负数,返回-1;
- 参数为 0,返回0;
- 参数为-0,返回-0;
- 其他值,返回NaN。
如果参数是非数值,会自动转为数值。对于那些无法转为数值的值,会返回NaN。