javascript - JavaScript 中数字方法的奇怪语法

标签 javascript syntax extend

看看下面的代码:

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 中数字方法的奇怪语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1860998/

相关文章:

extend - 我可以向基于 Identity Server 3 的服务添加服务信息/健康检查端点吗?

css - SASS 中@extend-only 选择器(占位符)的范围

javascript - 使用Vuejs和Vuecli构建Chrome扩展

javascript - 无法在浏览器中播放 mp4 视频

javascript - 你如何使用 graphql-js 定义片段?

c# - 在 C# 中查询字典的优雅方式

php - 如何修复插入表期间的语法错误?

java - += 和 =+ 有什么区别?

javascript - 为什么有必要将函数调用包装在函数体中

css - 扩展功能不适用于嵌套选择器