【发布时间】:2013-03-05 18:42:03
【问题描述】:
我在kriskowal/q看到了这个sn-p:
/**
* Applies the promised function in a future turn.
* @param object promise or immediate reference for target function
* @param args array of application arguments
*/
Q.fapply = fapply;
function fapply(value, args) {
return dispatch(value, "apply", [void 0, args]);
}
使用void 关键字有什么意义?为什么不直接写[undefined, args]?
【问题讨论】:
-
因为全局
undefined可以重新定义;它不是保留字,例如null。 -
..可以重新定义,但从 JavaScript 1.8.5 开始,根据 ECMAScript 5 规范,undefined 是不可写的。
-
void 0比undefined少 3 个字符。 -
也可用作删除/重新应用 CSS 类的技巧:css-tricks.com/restart-css-animation
-
也可以用来代替括号将匿名函数定义为表达式(例如,对于 IIFE,
void function() { console.log("Look ma, no external paranthesis!"); }())
标签: javascript