JavaScript 赋值中的左手边无效[已解决]
Invalid left-hand side in assignment Error in JavaScript
当我们的 JavaScript 代码中存在语法错误时,就会出现“无效的左手边赋值”错误。
最常见的原因是在条件语句中使用单个等号而不是双等号或三等号。
要解决此问题,请确保更正代码中的所有语法错误。
壳
Uncaught ReferenceError: Invalid left-hand side in an assignment at index.js:25 SyntaxError: Invalid left-hand side in assignment at ESMLoader.moduleStrategy (node:internal/modules/esm/translators:117:18) at ESMLoader.moduleProvider (node:internal/modules/esm/loader:459:14) at async link (node:internal/modules/esm/module_job:68:21)
以下是错误发生方式的一些示例。
索引.js
// ⛔️ Invalid left-hand side in assignment if (1 =< 7) { // 👉️ should be <= console.log('yes') } // ⛔️ Error if (7 = 7) { // 👉️ should be === console.log('success') } const obj = {} // ⛔️ Error // 👇️ Should be obj['background-color'] obj.background-color = "green" function sum(a,b) { return a + b; } // ⛔️ Error sum(5, 5) = 'something' // 👇️ should be const num = sum(5, 5);
比较值时使用双等号或三等号
最常见的错误原因是在比较值时使用单个等号=
而不是双等号或三等号。
索引.js
// ⛔️ incorrect if (7 = 7) { // 👉️ should be === console.log('success') } // ✅ correct if (7 === 7) { console.log('success') }
引擎将单个等号解释为赋值而不是比较运算符。
我们在为变量赋值时使用单个等号。
索引.js
const name = 'bobby'; if (name === 'bobby') { console.log('success'); }
但是,我们在比较值时使用双等号 (==) 或三等号 (===)。
对包含连字符的对象属性使用括号表示法
错误的另一个常见原因是尝试使用点表示法设置
包含连字符的对象属性。
索引.js
// ⛔️ incorrect obj.background-color = "green" // ✅ correct const obj = {}; obj['background-color'] = 'green'; console.log(obj);
您应该改用括号[]
表示法,例如obj['key'] = 'value'
.
将调用函数的结果赋值给一个值
如上一个示例所示,尝试将函数调用的结果分配给一个值时也会发生该错误。
索引.js
// ⛔️ Invalid left-hand side in assignment sum(5, 5) = 'something' // 👇️ should be const num = sum(5, 5);
如果您不确定从哪里开始调试,请在浏览器中打开控制台或在 Node.js 应用程序中打开终端,然后查看错误发生在哪一行。
上面的截图显示错误发生在index.js
line 上的文件中25
。
您可以将代码粘贴到在线语法验证器中。验证器应该能够告诉您错误发生在哪一行。
您可以将鼠标悬停在波浪形的红线上,以获取有关引发错误原因的更多信息。