看下面的代码:

Number.prototype.isIn = function () {
    for (var i = 0, j = arguments.length; i < j; ++i) {
        if (parseInt(this, 10) === arguments[i]) {
            return true;
        }
    }
    return false;
};

var x = 2;
console.log(x.isIn(1,2,3,4,5)); // <= 'true'
console.log(2.isIn(1,2,3,4,5)); // <= Error: 'missing ) after argument list'

为什么当它是一个变量时,代码仍然可以正常工作,而当它是数字文字时,它却失败了?

而且,奇怪的是,为什么以下代码行得通?
console.log((2).isIn(1,2,3,4,5)); // <= 'true'

在上面的行中,我基本上将文字括在括号中。

最佳答案

这是语法错误,因为您代表一个数字。字符串可以以这种方式工作,但不能以数字方式工作,因为紧跟数字的句点表示十进制值。 .之后的字符导致错误。

关于javascript - JavaScript中Number方法的奇怪语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1860998/

10-12 16:21