gpt4 book ai didi

javascript - ~~和+在JavaScript中的区别?

转载 作者:行者123 更新时间:2023-12-03 13:17:45 24 4
gpt4 key购买 nike

它们似乎都输出相同的结果并将字符串转换为数字。有什么我不知道的区别吗?我似乎找不到任何关于 ~~ 运算符的文档。

var hey = true
hey = +hey //hey = 1

var hey = true
hey = ~~hey //hey = 1

var num = "1231"
num = ~~num //num = 1231

var num = "1231"
num = +num //num = 1231

我发现了一个区别,那就是 ~~ 总是会尝试输出一个数字,而 + 在某些情况下会简单地返回 NaN

num = "omfg"
num = ~~num //num = 0

num = "omfg"
num = +num //num = NaN

num = {}
num = ~~num //num = 0

num = {}
num = +num //num = NaN

任何澄清都会很棒 :)

最佳答案

两者都会隐式地将操作数转换为数字,因为运算符只能用于数字。

区别在于~运算符是位运算符,所以它也会把数字变成32位整数。 (结果仍然是 Number 类型,即 double float 。)

这两种方法都不是将值转换为数字的描述性方法,因为它们都使用了实际操作的副作用。通常,您会使用 parseIntparseFloat 之类的函数将字符串转换为数字。

关于javascript - ~~和+在JavaScript中的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14693753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com