这一行有什么区别:
var a = parseInt("1", 10); // a === 1
Run Code Online (Sandbox Code Playgroud)
这条线
var a = +"1"; // a === 1
Run Code Online (Sandbox Code Playgroud)
这个jsperf测试显示,当前的chrome版本中的一元运算符要快得多,假设它是针对node.js的!
如果我尝试转换不是数字的字符串都返回NaN:
var b = parseInt("test" 10); // b === NaN
var b = +"test"; // b === NaN
Run Code Online (Sandbox Code Playgroud)
那么我什么时候应该优先使用parseInt一元加(尤其是在node.js中)???
编辑:双波浪运算符的区别是什么~~?
我已经编程了JS多年,我仍然在寻找新的快捷方式.我想知道是否还有更多我不知道的事情.
以下是我所知道的捷径:
编辑:我同意你通常不应该做这些事情,并且可以有一种更好的方式来描述它不那么广泛,但我能做的最好的就是通过例子来描述它.
而不是这个
if("foobar".indexOf("foo") > -1)
Run Code Online (Sandbox Code Playgroud)
做这个
if(~"foobar".indexOf("foo"))
Run Code Online (Sandbox Code Playgroud)
而不是这个
var foo = Math.floor(2.333)
Run Code Online (Sandbox Code Playgroud)
做这个
var foo = ~~2.333
Run Code Online (Sandbox Code Playgroud)
而不是这个
var foo = parseFloat("12.4")
var bar = parseInt("12", 10)
Run Code Online (Sandbox Code Playgroud)
这样做(不是这个的忠实粉丝)
var foo = +"12.4"
var bar = +"12"
Run Code Online (Sandbox Code Playgroud)
而不是这个
if(isNaN(foo)
Run Code Online (Sandbox Code Playgroud)
做这个
if(foo != foo)
Run Code Online (Sandbox Code Playgroud)
而不是这个
(function(){ ... ])()
Run Code Online (Sandbox Code Playgroud)
做这个
!function(){ ... }()
Run Code Online (Sandbox Code Playgroud)
通过为其添加前缀将任何内容转换为布尔值 !!
var isFoo = !!foo
Run Code Online (Sandbox Code Playgroud)
在那里,你有它,我的事情列表永远不会对你的同事.
还可以在这里添加其他内容吗?