请看下面的代码:
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'
在上面的代码行中,我基本上是将字面值括在括号内。