Skip to content

Commit 736db54

Browse files
juneyanggitbook-bot
authored andcommitted
GitBook: [javascript-tutorial#1] No subject
1 parent 6756387 commit 736db54

File tree

508 files changed

+2461
-966
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

508 files changed

+2461
-966
lines changed

Diff for: .github/PULL_REQUEST_TEMPLATE.md

-11
This file was deleted.

Diff for: 1-js/02-first-steps/07-type-conversions.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 07-type-conversions
2+

Diff for: 1-js/02-first-steps/08-operators.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 08-operators
2+

Diff for: 1-js/02-first-steps/09-comparison.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 09-comparison
2+

Diff for: 1-js/02-first-steps/10-ifelse.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 10-ifelse
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 1-alert-null-2-undefined
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 2-alert-or
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 3-alert-1-null-2
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 4-alert-and
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 5-alert-and-or
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 6-check-if-in-range
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 7-check-if-out-range
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 8-if-question
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 9-check-login
2+

Diff for: 1-js/02-first-steps/11-logical-operators/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 11-logical-operators
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 12-nullish-coalescing-operator
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 1-loop-last-value
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 2-which-value-while
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 3-which-value-for
2+
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 4-for-even
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 5-replace-for-while
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 6-repeat-until-correct
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 7-list-primes
2+

Diff for: 1-js/02-first-steps/13-while-for/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 13-while-for
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 1-rewrite-switch-if-else
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 2-rewrite-if-switch
2+

Diff for: 1-js/02-first-steps/14-switch/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 14-switch
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 1-if-else-required
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 2-rewrite-function-question-or
2+
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 3-min
2+
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 4-pow
2+

Diff for: 1-js/02-first-steps/15-function-basics/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 15-function-basics
2+
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 16-function-expressions
2+

Diff for: 1-js/02-first-steps/16-function-expressions/article.md

+24-30
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ let sayHi = function() {
3838

3939
我们还可以用 `alert` 显示这个变量的值:
4040

41-
```js run
41+
```js
4242
function sayHi() {
4343
alert( "Hello" );
4444
}
@@ -58,7 +58,7 @@ alert( sayHi ); // 显示函数代码
5858

5959
我们可以复制函数到其他变量:
6060

61-
```js run no-beautify
61+
```js
6262
function sayHi() { // (1) 创建
6363
alert( "Hello" );
6464
}
@@ -88,8 +88,7 @@ let func = sayHi;
8888

8989
这两种声明的函数是一样的。
9090

91-
92-
````smart header="为什么这里末尾会有个分号?"
91+
````smart
9392
你可能想知道,为什么函数表达式结尾有一个分号 `;`,而函数声明没有:
9493
9594
```js
@@ -113,18 +112,15 @@ let sayHi = function() {
113112

114113
我们写一个包含三个参数的函数 `ask(question, yes, no)`
115114

116-
`question`
117-
: 关于问题的文本
115+
`question` : 关于问题的文本
118116

119-
`yes`
120-
: 当回答为 "Yes" 时,要运行的脚本
117+
`yes` : 当回答为 "Yes" 时,要运行的脚本
121118

122-
`no`
123-
: 当回答为 "No" 时,要运行的脚本
119+
`no` : 当回答为 "No" 时,要运行的脚本
124120

125121
函数需要提出 `question`(问题),并根据用户的回答,调用 `yes()``no()`
126122

127-
```js run
123+
```js
128124
*!*
129125
function ask(question, yes, no) {
130126
if (confirm(question)) yes()
@@ -152,7 +148,7 @@ ask("Do you agree?", showOk, showCancel);
152148

153149
我们可以使用函数表达式来编写一个等价的、更简洁的函数:
154150

155-
```js run no-beautify
151+
```js
156152
function ask(question, yes, no) {
157153
if (confirm(question)) yes()
158154
else no();
@@ -171,31 +167,30 @@ ask(
171167

172168
这样的代码在我们的脚本中非常常见,这正符合 JavaScript 语言的思想。
173169

174-
```smart header="一个函数是表示一个“行为”的值"
170+
```smart
175171
字符串或数字等常规值代表 **数据**。
176172
177173
函数可以被视为一个 **行为(action)**。
178174
179175
我们可以在变量之间传递它们,并在需要时运行。
180176
```
181177

182-
183178
## 函数表达式 vs 函数声明
184179

185180
让我们来总结一下函数声明和函数表达式之间的主要区别。
186181

187182
首先是语法:如何通过代码对它们进行区分。
188183

189-
- **函数声明**:在主代码流中声明为单独的语句的函数:
184+
* **函数声明**:在主代码流中声明为单独的语句的函数:
190185

191186
```js
192187
// 函数声明
193188
function sum(a, b) {
194189
return a + b;
195190
}
196191
```
197-
- **函数表达式**:在一个表达式中或另一个语法结构中创建的函数。下面这个函数是在赋值表达式 `=` 右侧创建的:
198-
   
192+
* **函数表达式**:在一个表达式中或另一个语法结构中创建的函数。下面这个函数是在赋值表达式 `=` 右侧创建的:  
193+
199194
```js
200195
// 函数表达式
201196
let sum = function(a, b) {
@@ -221,7 +216,7 @@ ask(
221216

222217
例如下面的代码会正常工作:
223218

224-
```js run refresh untrusted
219+
```js
225220
*!*
226221
sayHi("John"); // Hello, John
227222
*/!*
@@ -235,7 +230,7 @@ function sayHi(name) {
235230

236231
……如果它是一个函数表达式,它就不会工作:
237232

238-
```js run refresh untrusted
233+
```js
239234
*!*
240235
sayHi("John"); // error!
241236
*/!*
@@ -255,7 +250,7 @@ let sayHi = function(name) { // (*) no magic any more
255250

256251
如果我们使用函数声明,则以下代码无法像预期那样工作:
257252

258-
```js run
253+
```js
259254
let age = prompt("What is your age?", 18);
260255
261256
// 有条件地声明一个函数
@@ -283,7 +278,7 @@ welcome(); // Error: welcome is not defined
283278

284279
下面是另一个例子:
285280

286-
```js run
281+
```js
287282
let age = 16; // 拿 16 作为例子
288283
289284
if (age < 18) {
@@ -320,7 +315,7 @@ welcome(); // Error: welcome is not defined
320315

321316
下面的代码可以如愿运行:
322317

323-
```js run
318+
```js
324319
let age = prompt("What is your age?", 18);
325320
326321
let welcome;
@@ -346,7 +341,7 @@ welcome(); // 现在可以了
346341

347342
或者我们可以使用问号运算符 `?` 来进一步对代码进行简化:
348343

349-
```js run
344+
```js
350345
let age = prompt("What is your age?", 18);
351346
352347
let welcome = (age < 18) ?
@@ -358,8 +353,7 @@ welcome(); // 现在可以了
358353
*/!*
359354
```
360355

361-
362-
```smart header="什么时候选择函数声明与函数表达式?"
356+
```smart
363357
根据经验,当我们需要声明一个函数时,首先考虑函数声明语法。它能够为组织代码提供更多的灵活性。因为我们可以在声明这些函数之前调用这些函数。
364358
365359
这对代码可读性也更好,因为在代码中查找 `function f(…) {…}``let f = function(…) {…}` 更容易。函数声明更“醒目”。
@@ -369,11 +363,11 @@ welcome(); // 现在可以了
369363

370364
## 总结
371365

372-
- 函数是值。它们可以在代码的任何地方被分配,复制或声明。
373-
- 如果函数在主代码流中被声明为单独的语句,则称为“函数声明”。
374-
- 如果该函数是作为表达式的一部分创建的,则称其“函数表达式”。
375-
- 在执行代码块之前,内部算法会先处理函数声明。所以函数声明在其被声明的代码块内的任何位置都是可见的。
376-
- 函数表达式在执行流程到达时创建。
366+
* 函数是值。它们可以在代码的任何地方被分配,复制或声明。
367+
* 如果函数在主代码流中被声明为单独的语句,则称为“函数声明”。
368+
* 如果该函数是作为表达式的一部分创建的,则称其“函数表达式”。
369+
* 在执行代码块之前,内部算法会先处理函数声明。所以函数声明在其被声明的代码块内的任何位置都是可见的。
370+
* 函数表达式在执行流程到达时创建。
377371

378372
在大多数情况下,当我们需要声明一个函数时,最好使用函数声明,因为函数在被声明之前也是可见的。这使我们在代码组织方面更具灵活性,通常也会使得代码可读性更高。
379373

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 1-rewrite-arrow
2+
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 17-arrow-functions-basics
2+

Diff for: 1-js/02-first-steps/18-javascript-specials/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 18-javascript-specials
2+

Diff for: 1-js/02-first-steps/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 02-first-steps
2+

0 commit comments

Comments
 (0)