为什么JavaScript不允许您直接调用数字上的方法?

时间:2012-09-04 23:18:50

标签: javascript

在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给我一个语法错误:“意外的令牌ILLEGAL”。为什么呢?

1 个答案:

答案 0 :(得分:36)

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

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在评论中指出,缩小器会删除导致上述语法错误的空格。