查看CoffeeScript Ristretto中的Queue
代码:
class Queue
constructor: ->
@array = []
@head = 0
@tail = -1
pullHead: ->
unless @isEmpty()
do (value = @array[@head]) =>
@array[@head] = undefined
@head += 1
value
为什么CoffeeScript会在JavaScript中将= undefined
编译为void 0
?
Queue.prototype.pullHead = function() {
if (!this.isEmpty()) {
return (function(_this) {
return function(value) {
_this.array[_this.head] = void 0; // <------ not undefined, but `void 0`?
_this.head += 1;
return value;
};
})(this)(this.array[this.head]);
}
};
答案 0 :(得分:1)
void
运算符的值始终 undefined
。我不确定为什么Coffeescript会将undefined
翻译成undefined
,除非它可能会缩短几个字符,并且不会遇到{{1}}仅仅是符号而不是保留字的问题