【发布时间】:2013-01-19 13:35:48
【问题描述】:
它们似乎都输出相同的结果并将字符串转换为数字。有我不知道的区别吗?我似乎找不到任何关于 ~~ 运算符的文档。
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
任何澄清都会很棒:)
【问题讨论】:
-
波浪号是按位的不是,重复两次就像按位的
!!,只是它逐位旋转。 -
作为旁注,我会考虑这两种不好的做法;您应该使用
parseInt或parseFloat将字符串转换为数字。 -
@jbabey 感谢您澄清这一点。如果有人好奇,我想知道因为这个问题stackoverflow.com/questions/6911235/…
标签: javascript variables nan