用于做常见事情的 JavaScript 习语
javascript idioms for doing common things
我已经编写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年代。
-
n | 0
楼层n
(仅当n
在有符号的 32 位整数范围内时(。它比我上次检查的大多数浏览器中的Math.floor()
更快。 -
undefined == null
,但两者都不等于false
。 - 代替
x == 'a' || x == 'b' || x == 'c'
,你可以做['a', 'b', 'c'].indexOf(x) !== -1
我在生产代码中看到的唯一真正简短的快捷方式是将字符串转换为数字的一元+
。
我经常看到这个:
myString = "Some string."
b = myString[myString.length - 1]; // get the period
应该是
b = myString.slice(-1);
for while 循环。
for (var i=0; i < a.length; i++) {
var x = a[i];
console.log(x);
}
自
for (var i=0,x; (x=a[i++]) != null; ) {
console.log(x);
}
把它放在脚本的顶部。
String.prototype.has = Array.prototype.has = function(a){ return this.indexOf(a) !== -1; }
把这些
if (myString.indexOf(a) !== -1)
if (myArray.indexOf(a) !== -1)
到这些
if (myString.has(a))
if (myArray.has(a))
当您需要在代码中输入 42 时,但偷偷摸摸。
var answer = ((((1<<2)|1)<<2)|1)<<1;
咖啡脚本
。需要我多说吗?
- 初始化父类中的变量(JavaScript/CoffeeScript 习语)
- Javascript/JQuery中的本地语言类似于Rails中的本地语
- 如何在Javascript中对JSON字符串中的阿拉伯语进行编码/解码
- 如何在javascript中按正确的顺序连接波斯语字符和英语字符
- JavaScript 原语:相同的内存位置、新的内存位置或依赖于引擎
- 使用 javascript 或 jquery 突出显示阿拉伯语文本
- 正则表达式不允许所有特殊字符,但允许其他语言,如希伯来语 JavaScript
- 如何阻止Google使用Javascript加载的问候语被用作元描述
- 冰岛语在javascript警报框中搞砸了
- 韩语音节PHP或JavaScript罗马化器(或任何其他替代方案?)
- 代码中的原型.js和习语
- JavaScript同步Ajax请求习语
- 用于做常见事情的 JavaScript 习语
- 有没有一个更简洁的Coffeescape习语来形容这个
- Javascript - 原语如何真正工作
- 习语Javascript编码风格-何时在原型上声明函数,何时在函数构造函数内声明函数
- 用于类定义的首选JavaScript习语
- D3习语,用于在enter()上附加分组元素
- 习语AngularJS模态
- 提炼出一个常见的习语