最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Javascript Infinity-- (infinity minus minus) yields Infinity - Stack Overflow

programmeradmin4浏览0评论

I am looking at JavaScript's number type system.

I'm using Chrome, When I evaluate 15-- for a number literal I get a ReferenceError since it makes no sense to decrement a constant.

When I evaluate var x=10;x--; as expected everything works.

Expectantly var a=Infinity;a-- evaluates to Infinity, this all makes sense and is in accordance to the javascript language spec.

However to my surprise Infinity-- and Infinity++ evaluate to Infinity unlike other literals.

This also happens for Number.POSITIVE_INFINITY which is the same.

tl;dr :

Why does Infinity-- yield infinity as a result when 15-- and (new Number(15))-- yield a reference error?

I am looking at JavaScript's number type system.

I'm using Chrome, When I evaluate 15-- for a number literal I get a ReferenceError since it makes no sense to decrement a constant.

When I evaluate var x=10;x--; as expected everything works.

Expectantly var a=Infinity;a-- evaluates to Infinity, this all makes sense and is in accordance to the javascript language spec.

However to my surprise Infinity-- and Infinity++ evaluate to Infinity unlike other literals.

This also happens for Number.POSITIVE_INFINITY which is the same.

tl;dr :

Why does Infinity-- yield infinity as a result when 15-- and (new Number(15))-- yield a reference error?

Share Improve this question edited Feb 8, 2013 at 17:14 Salman Arshad 273k84 gold badges444 silver badges534 bronze badges asked Feb 8, 2013 at 17:09 Benjamin GruenbaumBenjamin Gruenbaum 277k89 gold badges520 silver badges517 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 11

Infinity as used in your example is not actually a value but refers to the Infinity property of the global object:

15.1 The Global Object

[...]

15.1.1 Value Properties of the Global Object

[...]

15.1.1.2 Infinity
The value of Infinity is +∞ (see 8.5). This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.

So, Infinity-- is the same as window.Infinity-- which is perfectly valid.

Because there is no such thing as a the number infinity, it is a concept, and thus in coding it isn't built as other constants but as an object like null or undefined but with some properties thrown in to make it behave nice with Math methods.

发布评论

评论列表(0)

  1. 暂无评论