freeCodeCamp/curriculum/challenges/chinese/02-javascript-algorithms-an.../debugging/catch-use-of-assignment-ope...

48 lines
1.6 KiB
Markdown
Raw Normal View History

---
id: 587d7b85367417b2b2512b38
title: 捕获使用赋值运算符而不是相等运算符
challengeType: 1
forumTopicId: 301191
---
# --description--
分支程序,即在满足某些条件时执行不同操作的程序,依赖于 JavaScript 中的`if``else if`、`else`语句。条件有时采取测试一个结果是否等于一个值的形式。
这种逻辑可以表述为“如果 x 等于 y ,则......”,听起来像是可以使用`=`(即赋值运算符)。然而,这会导致程序中流程出问题。
如前面的挑战所述JavaScript 中的赋值运算符 (`=`) 是用来为变量名赋值的。并且`==`和`===`运算符检查相等性(三等号`===`是用来测试是否严格相等的,严格相等的意思是值和类型都必须相同)。
下面的代码将`x`赋值为 2表达式`x = y`会在执行后得到`true`。JavaScript 会把大部分的值都视为`true`,除了所谓的 "falsy" 值,即:`false`、`0`、`""`(空字符串)、`NaN`、`undefined` 和 `null`
```js
let x = 1;
let y = 2;
if (x = y) {
// 除了 "falsy" 值以外 y 为任意值时这个代码块都将执行
} else {
// 按本例用意这个代码块应该执行(但其实不会)。
}
```
# --instructions--
修复条件语句,以便程序运行正确的分支,并给`result`赋上正确的值。
# --hints--
你应该修复条件语句,使其判断是否相等,而不是赋值。
```js
assert(result == 'Not equal!');
```
条件语句可以使用`==`或`===`来测试是否相等。
```js
assert(code.match(/x\s*?===?\s*?y/g));
```
# --solutions--