13

在 Ruby 中,您可以这样做:

3.times { print "Ho! " } # => Ho! Ho! Ho!

我尝试在 JavaScript 中做到这一点:

Number.prototype.times = function(fn) {
    for (var i = 0; i < this; i++) {
        fn();
    }
}

这有效:

(3).times(function() { console.log("hi"); });

这不

3.times(function() { console.log("hi"); });

Chrome 给了我一个语法错误:“Unexpected token ILLEGAL”。为什么?

4

1 回答 1

37

数字后面的.代表数字的小数点,您必须使用另一个来访问属性或方法。

3..times(function() { console.log("hi"); });

这仅对十进制文字是必需的。对于八进制和十六进制文字,您只能使用一个..

03.times(function() { console.log("hi"); });//octal
0x3.times(function() { console.log("hi"); });//hexadecimal

也是指数的

3e0.times(function() { console.log("hi"); });

您也可以使用空格,因为数字中的空格是无效的,因此没有歧义。

3 .times(function() { console.log("hi"); });

尽管如wxactly评论中所述,缩小器会删除导致上述语法错误的空间。

于 2012-09-04T23:20:14.217 回答