From 6eb37e564b4a742be9b341a763f4f494e126dac7 Mon Sep 17 00:00:00 2001 From: MartinsYong Date: Sun, 28 Jul 2019 23:07:30 +0800 Subject: [PATCH 1/3] sync with: f6ff773 --- 1-js/02-first-steps/08-comparison/article.md | 31 +++++++++----------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/1-js/02-first-steps/08-comparison/article.md b/1-js/02-first-steps/08-comparison/article.md index 9389c1e450..e6314900eb 100644 --- a/1-js/02-first-steps/08-comparison/article.md +++ b/1-js/02-first-steps/08-comparison/article.md @@ -12,7 +12,7 @@ 和其他操作符一样,比较操作符也会有返回值,其类型为布尔值(Boolean)。 - `true` —— 表示“yes(是)”,“correct(正确)”或“the truth(真理)”。 -- `false` —— 表示“no(否)”,“wrong(错误)”或“a lie(谎言)”。 +- `false` —— 表示“no(否)”,“wrong(错误)”或“not the truth(非真理)”。 示例: @@ -62,7 +62,7 @@ alert( 'Bee' > 'Be' ); // true ```smart header="非真正的字典顺序,而是 Unicode 编码顺序" 在上面的算法中,比较大小的逻辑与字典或电话簿中的排序很像,但也不完全相同。 -比如说,算法中的比较对大小写是敏感的。大写的 `"A"` 并不等于小写的 `"a"`。哪一个更大呢?实际上小写的 `"a"` 更大。至于原因嘛,这是因为在内部的编码表中(Unicode),小写字母的字符索引更大。我们会在 这章讨论更多关于字符串的细节。 +比如说,算法中的比较对大小写是敏感的。大写的 `"A"` 并不等于小写的 `"a"`。哪一个更大呢?实际上小写的 `"a"` 更大。至于原因嘛,这是因为在 JavaScript 使用的内部的编码表中(Unicode),小写字母的字符索引更大。我们会在 这章讨论更多关于字符串的细节。 ``` ## 不同类型间的比较 @@ -138,24 +138,21 @@ alert( 0 === false ); // false,比较不同类型的值 ## 涉及 null 和 undefined 的比较 -让我们看看更多的边缘案例。 - 当使用 `null` 或 `undefined` 与其他值进行比较时,其返回结果常常出乎你的意料。 +当使用严格相等 `===` 比较二者时 +:它们是不相等的,因为它们属于不同的类型。 -当使用严格相等 `===` 比较二者时: -它们是不相等的,因为它们属于不同的类型。 - -```js run -alert( null === undefined ); // false -``` + ```js run + alert( null === undefined ); // false + ``` -当使用非严格相等 `==` 比较二者时: -JavaScript 存在一个专属的规则,会判定它们互等。而它们就像“一对恋人”,仅仅等于(非严格相等下)对方而不等于其他任何的值。 +当使用非严格相等 `==` 比较二者时 +:JavaScript 存在一个专属的规则,会判定它们互等。而它们就像“一对恋人”,仅仅等于(非严格相等下)对方而不等于其他任何的值。 -```js run -alert( null == undefined ); // true -``` + ```js run + alert( null == undefined ); // true + ``` 当使用数学式或其他比较方法 `< > <= >=` 时: `null/undefined` 的值会被转换为数字:`null` 转为 `0`,`undefined` 转为 `NaN`。 @@ -193,7 +190,7 @@ alert( undefined == 0 ); // false (3) 原因如下: - `(1)` 和 `(2)` 中返回 `false` 是因为 `undefined` 在比较中被转换为了 `NaN`,而 `NaN` 是一个特殊的数值型取值,它与任何值进行比较都会返回 `false`。 -- `(3)` 中返回 `false` 是因为这是一个相等性检测,而 `undefined` 只与 `null` 相等。 +- `(3)` 中返回 `false` 是因为这是一个相等性检测,而 `undefined` 只与 `null` 相等,不会与其他值相等。 ### 规避错误 @@ -203,7 +200,7 @@ alert( undefined == 0 ); // false (3) 除非你非常清楚自己在做什么,否则永远不要使用 `>= > < <=` 去比较一个可能为 `null/undefined` 的变量。对于取值可能是 `null/undefined` 的变量,请按需要分别检查它的取值情况。 -## 小结 +## 总结 - 比较操作符始终返回逻辑值。 - 字符串间按“词典”顺序逐字符比较大小。 From 0ec7200dba63bf7b4eaeca80094737072a2baf0f Mon Sep 17 00:00:00 2001 From: MartinsYong Date: Sun, 28 Jul 2019 23:08:11 +0800 Subject: [PATCH 2/3] sync with: f6ff773 --- .../08-comparison/1-comparison-questions/solution.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/1-js/02-first-steps/08-comparison/1-comparison-questions/solution.md b/1-js/02-first-steps/08-comparison/1-comparison-questions/solution.md index 4a06daaddb..9442841b35 100644 --- a/1-js/02-first-steps/08-comparison/1-comparison-questions/solution.md +++ b/1-js/02-first-steps/08-comparison/1-comparison-questions/solution.md @@ -3,11 +3,11 @@ ```js no-beautify 5 > 4 → true "apple" > "pineapple" → false -"2" > "12" → true -undefined == null → true -undefined === null → false +"2" > "12" → true +undefined == null → true +undefined === null → false null == "\n0\n" → false -null === +"\n0\n" → false +null === +"\n0\n" → false ``` 参考答案: @@ -17,5 +17,5 @@ null === +"\n0\n" → false 3. 与第 2 题同理,首位字符 `"2"` 大于 `"1"`。 4. `null` 只与 `undefined` 互等。 5. 严格相等模式下,类型不同得 false。 -6. 与第 4 题同理。 -7. 与第 5 题同理。 +6. 与第 4 题同理,`null` 只与 `undefined` 相等。 +7. 不同类型严格不相等。 From cd798c650d00a5066ea549b5b4b66d5e59977fe2 Mon Sep 17 00:00:00 2001 From: MartinsYong Date: Mon, 29 Jul 2019 21:49:15 +0800 Subject: [PATCH 3/3] update according to suggestions. --- 1-js/02-first-steps/08-comparison/article.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1-js/02-first-steps/08-comparison/article.md b/1-js/02-first-steps/08-comparison/article.md index e6314900eb..ec2e988b84 100644 --- a/1-js/02-first-steps/08-comparison/article.md +++ b/1-js/02-first-steps/08-comparison/article.md @@ -51,9 +51,7 @@ alert( 'Bee' > 'Be' ); // true 4. 重复上述步骤进行比较,直到某字符串率先用完所有字符。 5. 如果两个字符串同时用完字符,那么它们被判定为相等,否则未结束(还有未比较的字符)的字符串更大。 -在上面的例子中,`'Z' > 'A'` 在算法的第 1 步就得到了返回结果。 - -字符串 `"Glow"` 和 `"Glee"` 会按字符逐个进行比较: +在上面的例子中,`'Z' > 'A'` 在算法的第 1 步就得到了返回结果,而字符串 `Glow` 与 `Glee` 则继续逐个字符比较: 1. `G` 和 `G` 相等。 2. `l` 和 `l` 相等。 @@ -78,6 +76,8 @@ alert( '01' == 1 ); // true,字符串 '01' 会被转为数字 1 对于布尔类型,`true` 会被转为 `1`、`false` 转为 `0`,即有: +例如: + ```js run alert( true == 1 ); // true alert( false == 0 ); // true