aug*_*aug 2 javascript variables nan
它们似乎都输出相同的结果并将字符串转换为数字.我不知道有什么区别吗?我似乎无法找到关于~~运算符的任何文档.
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,即双精度浮点数.)
也不是将值转换为数字的描述性方法,因为它们都使用实际操作的副作用.通常你会使用像parseInt或parseFloat将字符串转换为数字的函数.