* feat(tools): add seed/solution restore script * chore(curriculum): remove empty sections' markers * chore(curriculum): add seed + solution to Chinese * chore: remove old formatter * fix: update getChallenges parse translated challenges separately, without reference to the source * chore(curriculum): add dashedName to English * chore(curriculum): add dashedName to Chinese * refactor: remove unused challenge property 'name' * fix: relax dashedName requirement * fix: stray tag Remove stray `pre` tag from challenge file. Signed-off-by: nhcarrigan <nhcarrigan@gmail.com> Co-authored-by: nhcarrigan <nhcarrigan@gmail.com>
2.0 KiB
2.0 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
587d7b85367417b2b2512b38 | 捕获使用赋值运算符而不是相等运算符 | 1 | 301191 | catch-use-of-assignment-operator-instead-of-equality-operator |
--description--
分支程序,即在满足某些条件时执行不同操作的程序,依赖于 JavaScript 中的if
,else if
、else
语句。条件有时采取测试一个结果是否等于一个值的形式。
这种逻辑可以表述为“如果 x 等于 y ,则......”,听起来像是可以使用=
(即赋值运算符)。然而,这会导致程序中流程出问题。
如前面的挑战所述,JavaScript 中的赋值运算符 (=
) 是用来为变量名赋值的。并且==
和===
运算符检查相等性(三等号===
是用来测试是否严格相等的,严格相等的意思是值和类型都必须相同)。
下面的代码将x
赋值为 2,表达式x = y
会在执行后得到true
。JavaScript 会把大部分的值都视为true
,除了所谓的 "falsy" 值,即:false
、0
、""
(空字符串)、NaN
、undefined
和 null
。
let x = 1;
let y = 2;
if (x = y) {
// 除了 "falsy" 值以外 y 为任意值时这个代码块都将执行
} else {
// 按本例用意这个代码块应该执行(但其实不会)。
}
--instructions--
修复条件语句,以便程序运行正确的分支,并给result
赋上正确的值。
--hints--
你应该修复条件语句,使其判断是否相等,而不是赋值。
assert(result == 'Not equal!');
条件语句可以使用==
或===
来测试是否相等。
assert(code.match(/x\s*?===?\s*?y/g));
--seed--
--seed-contents--
let x = 7;
let y = 9;
let result = "to come";
if(x = y) {
result = "Equal!";
} else {
result = "Not equal!";
}
console.log(result);
--solutions--
let x = 7;
let y = 9;
let result = "to come";
if(x === y) {
result = "Equal!";
} else {
result = "Not equal!";
}
console.log(result);