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