gpt4 book ai didi

javascript - 为什么 javascript 使用++ 对字符串和文字产生不同的错误?

转载 作者:搜寻专家 更新时间:2023-11-01 04:37:33 26 4
gpt4 key购买 nike

我刚刚在第 3 方 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. 很琐碎:“根据语言的定义就是这样”,2. 我不知道,3. 我不明白) :

答案在于您引用的错误:

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

++是修改操作,需要“左手边表达式”。 bar是变量,所以是LHS,"ID-"是字面量,所以不是LHS。

关于javascript - 为什么 javascript 使用++ 对字符串和文字产生不同的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17591136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com