我已经编程了JS多年,我仍然在寻找新的快捷方式.
我想知道是否还有更多我不知道的事情.
我想知道是否还有更多我不知道的事情.
以下是我所知道的捷径:
编辑:我同意你通常不应该做这些事情,并且可以有一种更好的方式来描述它不那么广泛,但我能做的最好的就是通过例子来描述它.
而不是这个
if("foobar".indexOf("foo") > -1)
做这个
if(~"foobar".indexOf("foo"))
而不是这个
var foo = Math.floor(2.333)
做这个
var foo = ~~2.333
而不是这个
var foo = parseFloat("12.4") var bar = parseInt("12",10)
这样做(不是这个的忠实粉丝)
var foo = +"12.4" var bar = +"12"
而不是这个
if(isNaN(foo)
做这个
if(foo != foo)
而不是这个
(function(){ ... ])()
做这个
!function(){ ... }()
通过为它添加前缀将任何东西转换为布尔值!
var isFoo = !!foo
在那里,你有它,我的事情清单永远不会对你的同事做.
解决方法
这个问题可能会因为过于宽泛而被关闭,而这个答案可能因为没有直接回答而得到了相当多的赞成票,但是这里也是如此.
请在编程语言中使用“快捷方式”时要非常谨慎,因为……真的……他们在帮助谁?
大多数这些捷径都会牺牲击键的清晰度和明确性.你不会找到一个单一的,称职的,专业的程序员,他会同意这是一个明智的权衡.
考虑
if("foobar".indexOf("foo") > -1)
至
if(~"foobar".indexOf("foo"))
你已经保存了4个角色……呐喊!但是,你也保证任何不知道这条捷径的人都很难有机会弄清楚这里发生了什么……当然也不容易.
读取indexOf的定义足以理解显式版本.对于第二个,你需要理解什么是〜的意思(这在JS中是一个相当不常见的运算符).然后,您需要知道-1的按位补码是什么.然后你需要意识到这是真的.
这是一个愚蠢的权衡,它是许多这些习语的标志.
请不要这样做.这不是80年代.