5

我刚刚在 3rd 方 wordpress 插件中发现了一个错误,该错误似乎是由 javascript 代码压缩程序引起的。

我相信原始代码应该是这样的:

this.id = "ui-id-" + ++n;

相反,它已被缩小为:

this.id="ui-id-"+++n;

这会在 Chrome 中导致以下错误:

Uncaught ReferenceError: Invalid left-hand side expression in postfix operation 

在 Firefox 中也有类似的错误。令人讨厌的是,在 Chrome 中我自己的插件 Javascript 函数仍然成功创建,但在 Firefox 中,这个错误导致我的函数无法创建并且我的插件失败。

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-”++ 会出现硬错误?
4

1 回答 1

1

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

答案在于您引用的错误:

未捕获的引用错误:后缀操作中的左侧表达式无效

++正在修改操作,它需要“左侧表达式”。bar是变量,所以它是 LHS,"ID-"是一个字面量,所以它不是 LHS。

于 2013-07-11T10:41:03.820 回答