likes
comments
collection
share

真实项目中学习到的知识点二

作者站长头像
站长
· 阅读数 41

项目中学习到的知识点二

~~是什么?它可以用来做什么呢?

在看项目代码时,看到了一个符号~~,这个符号我又没有见过😶。于是我就问我老大这个符号是啥意思?于是他给我列了一些代码例子。

console.log(~~3.14); // 3
console.log(~~-3.14); // -3
console.log(~~5); // 5
console.log(~~-5); // -5
console.log(~~'123'); // 123
console.log(~~'abc'); // 0

看到这个我想到的就是这个不就是将字符串或者数字转换成整型吗?用Number或者paseInt不是也可以吗?

Number
console.log(Number('123')); // 123
console.log(Number('abc')); // NaN
console.log(Number('123abc')); // NaN

PasInt
console.log(parseInt('123')); // 123
console.log(parseInt('3.14')); // 3
console.log(parseInt('10', 2)); // 2 (将二进制字符串'10'转换为十进制)
console.log(parseInt('0xFF', 16)); // 255 (将十六进制字符串'0xFF'转换为十进制)
console.log(parseInt('abc')); // NaN
console.log(parseInt('')); // NaN

看这些代码好像是没啥问题,但是我们再看看下面的代码

console.log(~~'abc'); // 0
console.log(Number('abc')); // NaN
console.log(parseInt('abc')); // NaN


console.log(~~undefined); // 0
console.log(~~null); // 0


console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN

console.log(parseInt(null)); // NaN
console.log(parseInt(undefined)); // NaN

我们可以看到Number和pasInt都无法对字符串undefined进行数字转换,得到的是NaN。并且paseInt对null转换得到也是NaN。

NaN是JavaScript中的一个特殊值,代表"Not a Number"(不是一个数字)。当进行某些操作时,如果结果无法表示为有效的数字,就会得到NaN。NaN是一个特殊的值,表示无效的或未定义的数值。在进行数学计算时,如果得到了NaN,通常意味着某些操作无法得到有效的结果。在实际开发中,需要注意避免产生NaN,以确保数值的正确性和可靠性。所以一般我们使用某些不确定值转换成正整数,为了确保不是NaN,建议使用~~

总结

1. ~~是JavaScript中的一种位运算符,称为"按位非"运算符。

它的作用是将操作数转换为32位有符号整数,并去除小数部分。具体来说,~~x将对x进行以下操作:

  1. x转换为32位有符号整数。
  2. 去除整数部分之后的小数部分。

这个操作的结果是一个整数,如果x是正数,则结果等于Math.floor(x),如果x是负数,则结果等于Math.ceil(x)

除了~~转换成整数,还有一些其他的方法,不过都会得到NaN。

2. Number()函数:

使用Number()函数可以将其他类型的值转换为数字。它可以处理字符串、布尔值、null和undefined等类型,并返回相应的数字。例如:Number("123")将返回数字123。

3. parseInt()函数:

parseInt()函数可以将字符串解析为整数。它会从字符串的开头开始解析,直到遇到非数字字符为止。例如:parseInt("123")将返回整数123。

4. parseFloat()函数:

parseFloat()函数用于将字符串解析为浮点数。类似于parseInt(),它会从字符串的开头开始解析,直到遇到非数字字符为止。例如:parseFloat("3.14")将返回浮点数3.14。

5. +运算符:

使用+运算符可以将字符串转换为数字。但是,如果字符串包含非数字字符,则会返回NaN(非数字)。例如:+"123"将返回数字123。

6. Math.floor()Math.ceil()Math.round()函数:这些函数可以将浮点数或其他类型的值(如字符串)转换为最接近的整数。例如:Math.floor(3.14)将返回整数3。

转载自:https://juejin.cn/post/7251119596362874936
评论
请登录