Spójrz na poniższy kod:Dziwny składnia metod numer w JavaScripcie
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'
Dlaczego jest tak, że gdy jest to zmienna, kod działa poprawnie ale gdy jest to numer dosłowny, to się nie powiedzie?
A także, o dziwo, dlaczego działa następująca linia?
console.log((2).isIn(1,2,3,4,5)); // <= 'true'
W powyższej linijce zasadniczo umieściłem literał w nawiasie.
'x = 10' i' x = nowa liczba (10) 'nie są równoważne. –
Prawidłowe: 'alert (typeof 10);' vs. 'alert (typeof new Number (10));' –
Dzięki za poprawki facetów. – Cammy