为啥后增量运算符返回 NaN? [关闭]

Posted

技术标签:

【中文标题】为啥后增量运算符返回 NaN? [关闭]【英文标题】:Why NaN is returned by a post-increment operator? [closed]为什么后增量运算符返回 NaN? [关闭] 【发布时间】:2016-02-28 19:41:01 【问题描述】:

当下面的代码行中的node.js执行安慰结果是:

var string = 'abc'; string++;
// NaN
string;
// NaN

我认为它应该工作是这样的: P>

var string = 'abc'; string++;
// 'abc';
string;
// NaN

我的理由:

由于++是一个后增量操作,这意味着它返回旧值(在这种情况下abc),然后将其添加1字符串下,得到abc1 ,这是非数字 EM>,但++操作者应返回2-14,所以它返回特殊NaN号并将其分配给变量的字符串强>

请指定我错了。 P>

【问题讨论】:

什么是s?当我运行的节点我你的代码立即得到一个引用错误。 SPAN> 什么是s?应该说是string++? SPAN> @伊舍伍德是它应该。对不起,是我不好。 SPAN> 【参考方案1】:

++“后缀”增量运算符的工作方式涉及首先执行到数字类型的转换。该转换的值始终是操作的返回值,即使该值是NaN

【讨论】:

【参考方案2】:

++ 如果用于字符串,首先尝试将其转换为数字,如果转换失败,则会得到NaN

【讨论】:

以上是关于为啥后增量运算符返回 NaN? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Math.round() 为 NaN 参数返回 0?

C# 增量运算符 (++) 问题:为啥我得到错误的输出?

关于 Java 8(OCA)中的短路运算符和后缀增量的问题 [关闭]

为啥当我重载数组运算符时我的私有变量为零? [关闭]

如果任一参数为 NaN,啥会导致 C/C++ <、<= 和 == 运算符返回 true?

C中的后增量和前增量运算符