首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >负数使用文字表示法丢失

负数使用文字表示法丢失
EN

Stack Overflow用户
提问于 2015-10-24 08:19:36
回答 2查看 46关注 0票数 1

我试图检测一个数字在数字原型中的函数中是否为负数。对于语法糖,我使用的是“.”若要将数字转换为对象,请执行以下操作。但当我评估一个负数时,结果却是一个正数:

代码语言:javascript
复制
Number.prototype.test = function() {
    n = this.valueOf();
    console.log(n);
    console.log(typeof n);
    return n;
};

-11..test()
// 11 - why???
// number
// -11

如果我使用Number对象,结果就是预期的结果:

代码语言:javascript
复制
Number(-11).test()
// -11
// number
// -11

有人知道为什么会发生这种事吗?谢谢。:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-24 08:26:55

根据MDN算子优先性,成员访问操作符(.)具有第二最高优先级,一元否定位于第5位。

由于.运算符比一元否定具有更高的优先级,因此表达式的计算实际上如下所示

代码语言:javascript
复制
-(11..test())

因此,test的结果实际上是一元否定的。你可以确认,就像这样

代码语言:javascript
复制
console.log(-11..test());
// -11

要获得预期的结果,需要用括号(优先级最高的操作符)对数字进行包装,如下所示

代码语言:javascript
复制
(-11).test()

现在,首先对-11进行评估,并对结果调用test,即-11本身。

票数 3
EN

Stack Overflow用户

发布于 2015-10-24 08:22:58

作为运算符,一元减号的优先级低于.

代码语言:javascript
复制
(-11).test();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33316037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档