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 で「予期しないトークンが ILLEGAL です」という構文エラーが表示されます。なんで?

4

1 に答える 1

37

数字の.後の数字は数値の小数点を表すため、プロパティまたはメソッドにアクセスするには別の数字を使用する必要があります。

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

これは、10 進リテラルの場合にのみ必要です。8 進リテラルと 16 進リテラルの場合、使用するのは 1 つだけ.です。

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 に答える