ES6中的字符串与数值

1.ES6

今天给大家介绍ES6中的字符串、数值。

  • 字符串
  • 数值

1.1:字符串

ES6中的字符串扩展了很多方法。列如:

  • includes():判断是否存在该字符串
  • startsWith():判断该字符串是否存在原字符串的头部
  • endsWith():判断该字符串是否存在原字符串的尾部

以上三个方法都返回布尔值,并且可接受两个参数,要搜索的字符串和开始搜索原字符串的位置。

let string = "hello,world,good,yes.";
console.log(string.includes("yes."));//true
console.log(string.startsWith("hello,"))//true
console.log(string.endsWith("yes"));//false
console.log(string.startsWith("world"),6);//true
let reg = /^\d$/;
string.includes(reg);//TypeError: First argument to String.prototype.endsWith must not be a regular expression

注意点:

  • 要知道某段字符串的下标位置,还是得用indexOf和lastIndexOf
  • 如果传入了正则表达式,则会报错。indexOf和lastIndexOf则会转换为字符串进行搜索

在这里插入图片描述

字符串补全

  • padStart():返回新的字符串,从原字符串头部用参数字符串进行补全
  • padEnd():返回新的字符串,从原字符串尾部用参数字符串进行补全

包含两个参数,第一个参数是新字符串的长度,第二个参数是要补全的字符串。

let string = "666";
string.padStart(4,"3");//3666
string.padEnd(4,"3");//6663

如果传入的字符串长度小于或等于原字符串,则返回原字符串。

let string = "666";
string.padStart(3,"111");//666

如果原字符串加上补全字符串大于新字符串的长度,则会截去超出位置的补全字符串。

let string = "666";
string.padEnd(5,"1234");//66612

字符串重复

  • repeat():返回新的字符串,将原字符串重复指定次数返回。
let string = "1234";
string.repeat(2);//12341234
//如果参数是小数,则向下取整
string.repeat(1.5);//1234
//参数为字符串时,则会进行转换。
string.repeat("3");//123412341234
string.repeat("sdf");//""

当参数为infinity和小于-0.9的负数时,会报错。
在这里插入图片描述
当参数为0或者大于-1时,会进行取整,0至0.9之间的数会取为-0.等同于零次。

string.repeat(0.9);//""
string.repeat(0.1);//""
//参数为NaN时,等同于零次
string.repeat(NaN);//""

模板字符串

注意点:模板字符串中的空格和换行都是会保留的。

可以称为普通字符串的加强版,用反引号 ` ,字符串中可以有变量和表达式。变量必须写在${}中,${}中可以放JavaScript表达式。

//普通字符串
let a = `hello\nworld!`;
//hello
//world
let b = `Hello,
 how old are you this year?`;
 //Hello,
 // how old are you this year?
let name = "liu siyuan";
let age = 20;
let string = `Hi, everyone. My name ${name}. I am ${age} years old.`;
console.log(string);//Hi, everyone. My name is liu siyuan. I am 20 years old.

在这里插入图片描述
也可以在字符串中调用函数

function getName(){
	return "liu siyuan";
}
let string = `Hi, everyone. My name ${getName()}. I am ${age} years old.`;

在这里插入图片描述

1.2:数值

ES6中新二进制和八进制的表示法

  • 二进制的表示法:0b1111 == 15 或 0B == 15
  • 八进制的表示法:0o1111 == 585 或0O == 585

下面给大家介绍一下数值(Number)中的一个常量值(EPSILON)。
在这里插入图片描述
它的值接近于 2.2204460492503130808472633361816E-16,或者 2-52。常用于测试数值是否在误差范围内。下面给大家演示一个JavaScript在进行一个数值相加时出现丢失精度的情况。
在这里插入图片描述
可以看出上面的表达式在数学中是为true的。但是在JavaScript中为什么false呢?看下图:
在这里插入图片描述
在进行0.1+0.2时,相加后的值为0.300000…4,而不是0.3。这就是为什么上面表达式不成立的原因。那么我们怎么解决呢?这时候Number中的常量值(EPSILON)就体现出了它的作用。
在这里插入图片描述
当0.1+0.2==0.3时的误差 < Number.EPSILON时(也是就在允许的误差范围内),我们就可以认定为相等。

最大安全整数,最小安全整数

安全整数就是在javaScript中能够精确表示的整数,一旦超过这个范围就无法精确表示。最大、最小安全整数的范围是:2的53次方——2的-53次方之间。
在这里插入图片描述
一旦数值超过了安全整数,那么就会出现丢失精度的情况。同样的,负数也是如此。
在这里插入图片描述
Number新方法

  • isFinite():判断一个数值是否为有限的,既不是Infinity。
  • isNaN():判断一个数值是否为NaN。
  • isInteger():判断一个数值是否为整数。
  • isSafeInteger():判断一个数值是否在安全整数范围内。
Number.isFinite(1);//true
Number.isFinite("1");//false
Number.isFinite(Infinity);//false

Number.isNaN(NaN);//true
Number.isNaN("NaN");//false

Number.isInteger(1);//true
Number.isInteger(1.0);//true
Number.isIngeger(1.1);//false

Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1);//false
Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1);//false

注意点:

  • Number中的isFinite()没有Number()的隐式转换,所有非数值都为false
  • Nunber中的isNaN()同样也没有Number()隐式转换,所有非NaN都为false
  • 从全局函数移植到Number的方法有:parseInt、parseFloat。这样的目的是为了逐步减少全局函数,用于全局变量的模块化。但是方法的行为没有改变,还是和全局函数里的parseInt或parseFloat一样。

Math对象的扩展

ES6Math对象中新增了17个数学相关的静态方法,这些方法只能够在Math对象中调用。对于非数值且无法转换时返回NaN。

  • cbrt():用于计算数值的立方根。
Math.cbrt(27);//3(3的立方为27,那么27的立方根为3)
  • imul():两个数以32位带符号整数形式相乘的结果。返回的也是一个32位带符号整数。
Math.imul(2,3);//6,大多数情况下,结果与a * b相同。
  • hypot():用于计算所有参数的平方和的平方根。
Math.hypot(5,5);//7.0710678118654755(7.071*7.071 ~= 49.99041)
  • clz32():用于返回数字的32 位无符号整数形式的前导0的个数。
Math.clz32(0); // 32
Math.clz32(1); // 31
Math.clz32(0b01000000000100000000000000000000); // 1
  • trunc():用于返回数字的整数部分。
Math.trunc(1.5);//1
  • fround():用于获取数字的32位单精度浮点数形式。
// 用于将 64 位双精度浮点数转为 32 位单精度浮点数
Math.fround(1.234) // 1.125
  • sign():判断数字的符号(正、负、0)。
Math.sign(1);  // 1
Math.sign(-1); // -1
  • expm1():用于计算 e 的 x 次方减 1 的结果,即 Math.exp(x) - 1 。
Math.expm1(1);  // 1.718281828459045
Math.expm1(0);  // 0
Math.expm1(-1); // -0.6321205588285577
  • log1p(x):用于计算1 + x 的自然对数,即 Math.log(1 + x) 。
Math.log1p(1);  // 0.6931471805599453
Math.log1p(0);  // 0
Math.log1p(-1); // -Infinity
  • log10(x):用于计算以 10 为底的 x 的对数。
Math.log10(1);//0
  • log2():用于计算 2 为底的 x 的对数。
Math.log2(1);//0

双曲函数方法

  • Math.sinh(x): 用于计算双曲正弦。
  • Math.cosh(x): 用于计算双曲余弦。
  • Math.tanh(x): 用于计算双曲正切。
  • Math.asinh(x): 用于计算反双曲正弦。
  • Math.acosh(x): 用于计算反双曲余弦。
  • Math.atanh(x): 用于计算反双曲正切。

指数运算符

2 ** 5;//32(2的5次方)
2 ** 2 ** 3;//256

ES6Math对象中新增的方法很多,大家没必要死记硬背,当我们需要的时候,查阅相应的文档即可。

结束语

今天的ES6就分享到这里了,下次还会陆续更新,谢谢大家的观看。
在这里插入图片描述
参考文档:菜鸟教程

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值