mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-01-02 03:03:23 -05:00
chore(i18n,learn): processed translations (#47434)
This commit is contained in:
@@ -21,12 +21,12 @@ const arr = [
|
||||
[[10, 11, 12], 13, 14]
|
||||
];
|
||||
|
||||
arr[3];
|
||||
arr[3][0];
|
||||
arr[3][0][1];
|
||||
const subarray = arr[3];
|
||||
const nestedSubarray = arr[3][0];
|
||||
const element = arr[3][0][1];
|
||||
```
|
||||
|
||||
`arr[3]` 为 `[[10, 11, 12], 13, 14]`,`arr[3][0]` 为 `[10, 11, 12]`,并且 `arr[3][0][1]` 为 `11`。
|
||||
在这个例子中,`subarray` 的值为 `[[10, 11, 12], 13, 14]`, `nestedSubarray` 的值为 `[10, 11, 12]`,`element` 的值为 `11` 。
|
||||
|
||||
**注意:** 数组名与方括号之间不应该有任何空格,比如 `array [0][0]` 甚至是 `array [0] [0]` 都是不允许的。 尽管 JavaScript 能够正确处理这种情况,但是当其他程序员阅读你写的代码时,这可能让他们感到困惑。
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ dashedName: assignment-with-a-returned-value
|
||||
|
||||
# --description--
|
||||
|
||||
如果你还记得我们在[使用赋值运算符存储值](/learn/javascript-algorithms-and-data-structures/basic-javascript/storing-values-with-the-assignment-operator)中的讨论的话,等号右侧的所有操作都会在赋值之前完成。 这意味着我们可以获取函数的返回值,并将其赋值给一个变量。
|
||||
如果你还记得我们在这一节<a href="/learn/javascript-algorithms-and-data-structures/basic-javascript/storing-values-with-the-assignment-operator" target="_blank" rel="noopener noreferrer nofollow">使用赋值运算符存储值</a>中的讨论,赋值之前,先完成等号右边的操作。 这意味着我们可以获取函数的返回值,并将其赋值给一个变量。
|
||||
|
||||
假设我们有一个预先定义的函数 `sum` ,它将两个数相加,然后:
|
||||
|
||||
|
||||
@@ -32,13 +32,19 @@ const ourStr = "I come first. " + "I come second.";
|
||||
|
||||
# --hints--
|
||||
|
||||
`myStr` 的值应该是 `This is the start. This is the end.`
|
||||
`myStr` 应该在两个字符串之间有一个空格字符。
|
||||
|
||||
```js
|
||||
assert(/start\. This/.test(myStr));
|
||||
```
|
||||
|
||||
`myStr` 的值应该是字符串 `This is the start. This is the end.`
|
||||
|
||||
```js
|
||||
assert(myStr === 'This is the start. This is the end.');
|
||||
```
|
||||
|
||||
应使用 `+` 操作符创建 `myStr`。
|
||||
应该使用 `+` 运算符来构建 `myStr`。
|
||||
|
||||
```js
|
||||
assert(code.match(/(["']).*\1\s*\+\s*(["']).*\2/g));
|
||||
@@ -50,7 +56,7 @@ assert(code.match(/(["']).*\1\s*\+\s*(["']).*\2/g));
|
||||
assert(/const\s+myStr/.test(code));
|
||||
```
|
||||
|
||||
应把结果赋值给 `myStr` 变量。
|
||||
应该将结果分配给 `myStr` 变量。
|
||||
|
||||
```js
|
||||
assert(/myStr\s*=/.test(code));
|
||||
|
||||
@@ -28,6 +28,12 @@ ourStr += "I come second.";
|
||||
|
||||
# --hints--
|
||||
|
||||
`myStr` 应该在两个字符串之间有一个空格字符。
|
||||
|
||||
```js
|
||||
assert(/sentence\. This/.test(myStr));
|
||||
```
|
||||
|
||||
`myStr` 的值应该是字符串 `This is the first sentence. This is the second sentence.`
|
||||
|
||||
```js
|
||||
|
||||
@@ -9,7 +9,7 @@ dashedName: constructing-strings-with-variables
|
||||
|
||||
# --description--
|
||||
|
||||
有时候你需要创建一个类似 [Mad Libs](https://en.wikipedia.org/wiki/Mad_Libs)(填词游戏)风格的字符串。 通过使用连接运算符(`+`),你可以插入一个或多个变量来组成一个字符串。
|
||||
有时候你需要构建一个字符串。 通过使用连接运算符(`+`),你可以插入一个或多个变量来组成一个字符串。
|
||||
|
||||
例如:
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ dashedName: counting-cards
|
||||
|
||||
# --description--
|
||||
|
||||
在赌场 21 点游戏中,玩家可以通过计算牌桌上已经发放的卡牌的高低值来让自己在游戏中保持优势。 这就叫 [21 点算法](https://en.wikipedia.org/wiki/Card_counting)。
|
||||
在 21 点游戏中,玩家可以通过计算牌桌上已经发放的卡牌的高低值来让自己在游戏中保持优势。 这被称为卡片计数。
|
||||
|
||||
牌桌上的大值的卡牌更多,对玩家有利。 根据下面的表格,每张卡牌都被分配了一个值。 如果卡牌的值大于 0,那么玩家应该追加赌注。 如果卡牌的值为 0 或负数,玩家应该追加少许赌注甚至不追加赌注。
|
||||
|
||||
@@ -25,6 +25,19 @@ dashedName: counting-cards
|
||||
|
||||
# --hints--
|
||||
|
||||
你的函数应返回计数值和文本(`Bet` 或 `Hold`),它们之间有一个空格字符。
|
||||
|
||||
```js
|
||||
assert(//
|
||||
(function () {
|
||||
count = 0;
|
||||
let out = cc(10);
|
||||
const hasSpace = /-?\d+ (Bet|Hold)/.test('' + out);
|
||||
return hasSpace;
|
||||
})()
|
||||
);
|
||||
```
|
||||
|
||||
卡片序列 2、3、4、5、6 应返回字符串 `5 Bet`
|
||||
|
||||
```js
|
||||
@@ -44,7 +57,7 @@ assert(
|
||||
);
|
||||
```
|
||||
|
||||
卡牌序列 7、8、9 应该返回 `0 Hold`
|
||||
卡片序列 7、8、9 应返回字符串 `0 Hold`
|
||||
|
||||
```js
|
||||
assert(
|
||||
@@ -61,7 +74,7 @@ assert(
|
||||
);
|
||||
```
|
||||
|
||||
卡牌序列 10、J、Q、K、A 应该返回 `-5 Hold`
|
||||
卡片序列 10、J、Q、K、A 应返回字符串 `-5 Hold`
|
||||
|
||||
```js
|
||||
assert(
|
||||
@@ -80,7 +93,7 @@ assert(
|
||||
);
|
||||
```
|
||||
|
||||
卡牌序列 3、7、Q、8、A 应该返回 `-1 Hold`
|
||||
卡片序列 3、7、Q、8、A 应返回字符串 `-1 Hold`
|
||||
|
||||
```js
|
||||
assert(
|
||||
@@ -99,7 +112,7 @@ assert(
|
||||
);
|
||||
```
|
||||
|
||||
卡牌序列 2、J、9、2、7 应该返回 `1 Bet`
|
||||
卡片序列 2、J、9、2、7 应返回字符串 `1 Bet`
|
||||
|
||||
```js
|
||||
assert(
|
||||
@@ -118,7 +131,7 @@ assert(
|
||||
);
|
||||
```
|
||||
|
||||
卡牌序列 2、2、10 应该返回 `1 Bet`
|
||||
卡片序列 2、2、10 应返回字符串 `1 Bet`
|
||||
|
||||
```js
|
||||
assert(
|
||||
@@ -135,7 +148,7 @@ assert(
|
||||
);
|
||||
```
|
||||
|
||||
卡牌序列 3、2、A、10、K 应该返回 `-1 Hold`
|
||||
卡片序列 3、2、A、10、K 应返回字符串 `-1 Hold`
|
||||
|
||||
```js
|
||||
assert(
|
||||
|
||||
@@ -11,7 +11,7 @@ dashedName: create-decimal-numbers-with-javascript
|
||||
|
||||
我们也可以把小数存储到变量中。 小数有时候也被称作<dfn>浮点数</dfn>或者 <dfn>floats</dfn>。
|
||||
|
||||
**提示:** 不是所有的实数都可以用浮点数(<dfn>floating point</dfn>)来表示。 因为可能产生四舍五入的错误, [点击这里了解细节](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems)。
|
||||
**注意:** 当你计算数字时,它们是以有限的精确度计算的。 使用浮点数的运算可能产生不同于预期结果的结果。 如果你生成了一个非预期的结果,请在 <a href="https://forum.freecodecamp.org/" target="_blank" rel="noopener noreferrer nofollow">freeCodeCamp 论坛</a>上创建一个话题进行说明。
|
||||
|
||||
# --instructions--
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ FAV_PET = "Dogs";
|
||||
|
||||
# --instructions--
|
||||
|
||||
更改代码,以便使用 `let` 或 `const` 声明所有变量。 当你想要改变变量时使用 `let`,当你想要变量保持不变时使用 `const`。 此外,重命名使用 `const` 声明的变量以符合惯例。
|
||||
更改代码,以便使用 `let` 或 `const` 声明所有变量。 当你想要改变变量时使用 `let`,当你想要变量保持不变时使用 `const`。 此外,重命名使用 `const` 声明的变量以符合惯例。 请勿更改分配给变量的字符串。
|
||||
|
||||
# --hints--
|
||||
|
||||
@@ -45,10 +45,15 @@ assert.notMatch(code, /(fCC)/);
|
||||
`FCC` 应该是一个用 `const` 声明的常量。
|
||||
|
||||
```js
|
||||
assert.equal(FCC, 'freeCodeCamp');
|
||||
assert.match(code, /const\s+FCC/);
|
||||
```
|
||||
|
||||
分配给 `FCC` 的字符串不应更改。
|
||||
|
||||
```js
|
||||
assert.equal(FCC, 'freeCodeCamp');
|
||||
```
|
||||
|
||||
`fact` 应该用 `let` 声明。
|
||||
|
||||
```js
|
||||
|
||||
@@ -39,7 +39,7 @@ I am a "double quoted" string inside "double quotes".
|
||||
assert(code.match(/\\"/g).length === 4 && code.match(/[^\\]"/g).length === 2);
|
||||
```
|
||||
|
||||
变量 myStr 应该包含字符串 `I am a "double quoted" string inside "double quotes".`
|
||||
变量 `myStr` 应该包含字符串 `I am a "double quoted" string inside "double quotes".`
|
||||
|
||||
```js
|
||||
assert(/I am a "double quoted" string inside "double quotes(\."|"\.)$/.test(myStr));
|
||||
|
||||
@@ -13,7 +13,7 @@ dashedName: generate-random-fractions-with-javascript
|
||||
|
||||
在 JavaScript 中,可以用 `Math.random()` 生成一个在`0`(包括 0)到 `1`(不包括 1)之间的随机小数。 因此 `Math.random()` 可能返回 `0`,但绝不会返回 `1`。
|
||||
|
||||
**提示:**[使用赋值运算符存储值](/learn/javascript-algorithms-and-data-structures/basic-javascript/storing-values-with-the-assignment-operator)这一节讲过,所有函数调用将在 `return` 执行之前结束,因此我们可以 `return`(返回)`Math.random()` 函数的值。
|
||||
**提示:**<a href="/learn/javascript-algorithms-and-data-structures/basic-javascript/storing-values-with-the-assignment-operator" target="_blank" rel="noopener noreferrer nofollow">使用赋值运算符存储值</a>这一节讲过,所有函数调用将在 `return` 执行之前结束,因此我们可以 `return`(返回)`Math.random()` 函数的值。
|
||||
|
||||
# --instructions--
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ dashedName: global-scope-and-functions
|
||||
|
||||
使用 `let` 或 `const`,在任何函数之外声明一个名为 `myGlobal` 的全局变量。 并给它一个初始值 `10`。
|
||||
|
||||
在函数 `fun1` 中,***不要*** 使用 `let` 或 `const` 关键字,将 `5` 分配给 `oopsGlobal` 。
|
||||
在函数 `fun1`中,赋值 `5` 给 `oopsGlobal`,***不使用*** `var`、`let` 或 `const` 关键字。
|
||||
|
||||
# --hints--
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ dashedName: golf-code
|
||||
|
||||
# --description--
|
||||
|
||||
在[高尔夫](https://en.wikipedia.org/wiki/Golf)游戏中,每个洞都有自己的标准杆数 `par`,代表着把球打进洞所挥杆的平均次数 `strokes`。 根据你把球打进洞所挥杆的次数 `strokes` 高于或低于 `par` 多少,有一个不同的昵称(代表打高尔夫球的水平)。
|
||||
在高尔夫游戏中,每个洞都有自己的标准杆数`par`,意思是一个高尔夫球员为了把球打进洞里完成比赛,预计要挥杆的平均次数 `strokes`。 根据你把球打进洞所挥杆的次数 `strokes` 高于或低于 `par` 多少,有一个不同的昵称(代表打高尔夫球的水平)。
|
||||
|
||||
函数将会传送两个参数,`par` 和 `strokes`。 根据下表返回正确的字符串。下表列出不同挥杆次数(从高到低)对应的字符串。
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ do {
|
||||
} while (i < 5);
|
||||
```
|
||||
|
||||
上面的示例行为类似于其他类型的循环,由此产生的数组将看起来像 `[0, 1, 2, 3, 4]`。 然而,`do...while` 不同于其他循环的地方,是第一次循环检查失败时的行为。 让我们看看代码中的区别:这里是一个常规的 `while` 循环,只要 `i < 5`,就会在循环中运行代码:
|
||||
上面的示例行为类似于其他类型的循环,由此产生的数组将看起来像 `[0, 1, 2, 3, 4]`。 然而,`do...while` 不同于其他循环的地方,是第一次循环检查失败时的行为。 让我们看看代码示例。 这里是一个常规的 `while` 循环,只要 `i < 5`,就会在循环中运行代码:
|
||||
|
||||
```js
|
||||
const ourArray = [];
|
||||
|
||||
@@ -29,7 +29,7 @@ myFun();
|
||||
修改函数 `abTest` 当 `a` 或 `b` 小于 `0` 时,函数立即返回一个 `undefined` 并退出。
|
||||
|
||||
**提示**
|
||||
记住 [`undefined` 是一个关键字](https://chinese.freecodecamp.org/news/how-to-install-arch-linux/#how-to-install-arch-linux),而不是一个字符串。
|
||||
记住 <a href="https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/understanding-uninitialized-variables" target="_blank" rel="noopener noreferrer nofollow"><code>undefined</code> 是关键字 </a>,不是字符串.
|
||||
|
||||
# --hints--
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ dashedName: returning-boolean-values-from-functions
|
||||
|
||||
# --description--
|
||||
|
||||
你应该还记得[相等运算符](/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-equality-operator)这道挑战题。 在那里我们提到,所有比较操作符都会返回 boolean:要么是 `true` 要么是 `false`。
|
||||
你应该还记得 <a href="javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-equality-operator" target="_blank" rel="noopener noreferrer nofollow">相等运算符</a> 这道挑战题。在那里我们提到,所有比较操作符都会返回布尔值:要么是`true`,要么是`false`。
|
||||
|
||||
有时人们通过 `if/else` 语句来做比较,像这样。
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ dashedName: use-recursion-to-create-a-countdown
|
||||
|
||||
# --description--
|
||||
|
||||
在上一个[挑战](/learn/javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion),学习了怎样用递归来代替 `for` 循环。 现在来学习一个更复杂的函数,函数返回一个从 `1` 到传递给函数的指定数字的连续数字数组。
|
||||
在上一个<a href="/learn/javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion" target="_blank" rel="noopener noreferrer nofollow">挑战</a>中,你学习了怎样用递归来代替 `for` 循环。 现在来学习一个更复杂的函数,函数返回一个从 `1` 到传递给函数的指定数字的连续数字数组。
|
||||
|
||||
正如上一个挑战提到的,会有一个 <dfn>base case</dfn>。 base case 告诉递归函数什么时候不再需要调用其自身。 这是简单 情况,返回得到的值。 还有 <dfn>recursive call</dfn>,继续用不同的参数调用自身。 如果函数无误,一直执行直到 base case 为止。
|
||||
|
||||
|
||||
@@ -25,14 +25,14 @@ const alpha = {
|
||||
26:"A"
|
||||
};
|
||||
|
||||
alpha[2];
|
||||
alpha[24];
|
||||
const thirdLetter = alpha[2];
|
||||
const lastLetter = alpha[24];
|
||||
|
||||
const value = 2;
|
||||
alpha[value];
|
||||
const valueLookup = alpha[value];
|
||||
```
|
||||
|
||||
`alpha[2]` 是字符串 `Y`,`alpha[24]` 是字符串 `C`,`alpha[value]` 是字符串 `Y`。
|
||||
`thirdLetter` 是字符串 `Y`,`lastLetter` 是字符串 `C`,`valueLookup` 是字符串 `Y`。
|
||||
|
||||
# --instructions--
|
||||
|
||||
|
||||
@@ -9,11 +9,9 @@ dashedName: word-blanks
|
||||
|
||||
# --description--
|
||||
|
||||
现在,我们来用字符串的相关知识实现一个 "[Mad Libs](https://en.wikipedia.org/wiki/Mad_Libs)" 类的文字游戏,称为 "Word Blanks"。 你将创建一个(可选幽默的)“填空”样式句子。
|
||||
给你一些不完整的句子,这些句子会缺少一些例如名词、动词、形容词或者副词之类的字词。 然后你需要使用你选择的词语去填补这些缺失的地方,使得这个句子变得完整且有意义。
|
||||
|
||||
在 "Mad Libs" 游戏中,提供一个缺少一些单词的句子,缺少的单词包括名词、动词、形容词和副词等。 然后,你选择一些单词填写句子缺失的地方,使句子完整并且有意义。
|
||||
|
||||
思考一下这句话 - It was really **\_\_\_\_**, and we **\_\_\_\_** ourselves **\_\_\_\_**。 这句话有三个缺失的部分 - 形容词、动词和副词,选择合适单词填入完成它。 然后将完成的句子赋值给变量,如下所示:
|
||||
思考一下这个句子:它真的非常**\_\_\_\_**,我们**\_\_\_\_**我们自己**\_\_\_\_**。 这个句子有三处缺失:一个形容词、一个动词和一个副词。我们可以将选择的词语加进去完成它。 然后我们可以将完成的句子赋给一个变量,如下所示:
|
||||
|
||||
```js
|
||||
const sentence = "It was really " + "hot" + ", and we " + "laughed" + " ourselves " + "silly" + ".";
|
||||
@@ -21,21 +19,21 @@ const sentence = "It was really " + "hot" + ", and we " + "laughed" + " ourselve
|
||||
|
||||
# --instructions--
|
||||
|
||||
在这个挑战中,我们为你提供名词、动词、形容词和副词。 你需要使用合适单词以及我们提供的单词来形成完整的句子。
|
||||
在这个挑战中,我们会提供给你一个名词、一个动词、一个形容词和一个副词。 你需要在我们提供的词语中,选择你要使用的词语来使这个句子变得完整。
|
||||
|
||||
你需要使用字符串连接运算符 `+` 来拼接字符串变量:`myNoun`、`myAdjective`、`myVerb` 和 `myAdverb` 来构建一个新字符串。 然后,将新字符串赋给 `wordBlanks` 变量。 您不应该更改分配给变量的单词。
|
||||
你需要使用字符串连接操作符 `+` 和提供的变量 `myNoun`、`myAdjective`、`myVerb` 和 `myAdverb` 来构建一个新的字符串。 然后,将这个改好的新字符串赋值给 `wordBlanks` 变量。 不要去更改已经赋值给这些变量的单词。
|
||||
|
||||
你还需要考虑字符串中的空格,确保句子的所有单词之间有空格。 结果应该是一个完整的句子。
|
||||
你还需要确认字符串里的空格,以确保最后的句子里的每个单词之间都有空格。 最后的结果应该是一个完整的句子。
|
||||
|
||||
# --hints--
|
||||
|
||||
`wordBlanks` 应该返回一个字符串。
|
||||
`wordBlanks` 应该是一个字符串.
|
||||
|
||||
```js
|
||||
assert(typeof wordBlanks === 'string');
|
||||
```
|
||||
|
||||
不能改变 `myNoun`、`myVerb`、`myAdjective` 或者 `myAdverb` 的值。
|
||||
不要改变赋值给 `myNoun`, `myVerb`、`myAdjective` 或者`myAdverb` 这些变量的值。
|
||||
|
||||
```js
|
||||
assert(
|
||||
@@ -46,7 +44,7 @@ assert(
|
||||
);
|
||||
```
|
||||
|
||||
您不应该直接使用 `dog`、`ran`、`big` 或 `quickly` 来创建 `wordBlanks`。
|
||||
不要直接使用 `dog`、`ran`、`big` 或者 `quickly` 的值去创建 `wordBlanks`。
|
||||
|
||||
```js
|
||||
const newCode = removeAssignments(code);
|
||||
@@ -58,7 +56,7 @@ assert(
|
||||
);
|
||||
```
|
||||
|
||||
`wordBlanks` 应包含赋值给变量 `myNoun`、`myVerb`、`myAdjective` 和 `myAdverb` 的所有单词,并用非单词字符(以及 madlib 中的其它单词)分隔。
|
||||
`wordBlanks` 应该包含分配给变量 `myNoun`、`myVerb`、`myAdjective` 和 `myAdverb` 的所有单词,用非单词字符(和你选择的任何其他单词)分隔。
|
||||
|
||||
```js
|
||||
assert(
|
||||
|
||||
Reference in New Issue
Block a user