首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么javascript会为++的字符串和文字产生不同的错误?

为什么javascript会为++的字符串和文字产生不同的错误?
EN

Stack Overflow用户
提问于 2013-07-11 10:34:02
回答 1查看 129关注 0票数 5

我刚刚在一个第三方wordpress插件中发现了一个bug,它看起来是由javascript代码压缩器引起的。

我认为,最初的代码应该是:

代码语言:javascript
运行
复制
this.id = "ui-id-" + ++n;

相反,它被缩小为:

代码语言:javascript
运行
复制
this.id="ui-id-"+++n;

这会导致Chrome中出现以下错误:

代码语言:javascript
运行
复制
Uncaught ReferenceError: Invalid left-hand side expression in postfix operation 

在Firefox中也有类似的错误。令人烦恼的是,在Chrome中,我自己的插件Javascript函数仍然被成功创建,但是在Firefox中,这个错误导致我的函数没有被创建,插件也失败了。

代码语言:javascript
运行
复制
var n = 1;
var foo = 10;
var bar = "ID-";
console.log(foo+++n); // results in 11
console.log(foo); // also results in 11
console.log(bar+++n); // results in NaN soft error/warning
console.log ("ID-"+ ++n); // results in ID-2
console.log ("ID-"+++n); // hard error

我不知道该问什么问题-

  1. 为什么+++总是被解释为++ +?
  2. 是哪种小型设备导致了这个错误?
  3. 为什么firefox比Chrome更认真地对待这个错误,并导致我自己的Wordpress中的javascript函数无法创建呢?
  4. 为什么bar++得到一个软错误(NaN)而"ID-"++得到一个硬错误?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-11 10:41:03

我看到了问题4.唯一有趣的问题,所以我只回答(1.是琐碎的:“这是语言的定义”,2.我不知道,3.我不明白):

答案在于你引用的错误:

不正确的引用错误:在后缀操作中无效的左侧表达式

++是修改操作,它需要“左手边的表达”。bar是可变的,所以它是LHS,"ID-"是文字,所以它不是LHS。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17591136

复制
相关文章

相似问题

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