2018-10-10 18:03:03 -04:00
---
id: 56533eb9ac21ba0edf2244aa
2020-12-16 00:37:30 -07:00
title: 理解未初始化的变量
2018-10-10 18:03:03 -04:00
challengeType: 1
2020-04-29 18:29:13 +08:00
videoUrl: 'https://scrimba.com/c/cBa2JAL'
forumTopicId: 18335
2021-01-13 03:31:00 +01:00
dashedName: understanding-uninitialized-variables
2018-10-10 18:03:03 -04:00
---
2020-12-16 00:37:30 -07:00
# --description--
2018-10-10 18:03:03 -04:00
2020-12-16 00:37:30 -07:00
当 JavaScript 中的变量被声明的时候,程序内部会给它一个初始值`undefined` 。当你对一个值为`undefined` 的变量进行运算操作的时候,算出来的结果将会是`NaN` , `NaN` 的意思是< dfn > "Not a Number"</ dfn > 。当你用一个值是`undefined` 的变量来做字符串拼接操作的时候,它会输出字符串`"undefined"` 。
2018-10-10 18:03:03 -04:00
2020-12-16 00:37:30 -07:00
# --instructions--
2018-10-10 18:03:03 -04:00
2020-12-16 00:37:30 -07:00
定义 3 个变量`a` 、`b` 、`c` ,并且分别给他们赋值:`5` 、`10` 、`"I am a"` ,这样它们值就不会是`undefined` 了。
2018-10-10 18:03:03 -04:00
2020-12-16 00:37:30 -07:00
# --hints--
2018-10-10 18:03:03 -04:00
2020-12-16 00:37:30 -07:00
`a` 应该被定义,并且值为`6` 。
2018-10-10 18:03:03 -04:00
```js
2020-12-16 00:37:30 -07:00
assert(typeof a === 'number' & & a === 6);
2018-10-10 18:03:03 -04:00
```
2020-12-16 00:37:30 -07:00
`b` 应该被定义,并且值为`15` 。
2018-10-10 18:03:03 -04:00
```js
2020-12-16 00:37:30 -07:00
assert(typeof b === 'number' & & b === 15);
2018-10-10 18:03:03 -04:00
```
2020-12-16 00:37:30 -07:00
`c` 的值不能包含`undefined` ,应该为 "I am a String!"。
2018-10-10 18:03:03 -04:00
2020-12-16 00:37:30 -07:00
```js
assert(!/undefined/.test(c) & & c === 'I am a String!');
```
2018-10-10 18:03:03 -04:00
2020-12-16 00:37:30 -07:00
不要修改第二条注释下的代码。
2020-04-29 18:29:13 +08:00
2018-10-10 18:03:03 -04:00
```js
2020-12-16 00:37:30 -07:00
assert(
/a = a \+ 1;/.test(code) &&
/b = b \+ 5;/.test(code) &&
/c = c \+ " String!";/.test(code)
);
2018-10-10 18:03:03 -04:00
```
2020-04-29 18:29:13 +08:00
2021-01-13 03:31:00 +01:00
# --seed--
## --after-user-code--
```js
(function(a,b,c){ return "a = " + a + ", b = " + b + ", c = '" + c + "'"; })(a,b,c);
```
## --seed-contents--
```js
// Only change code below this line
var a;
var b;
var c;
// Only change code above this line
a = a + 1;
b = b + 5;
c = c + " String!";
```
2020-12-16 00:37:30 -07:00
# --solutions--
2021-01-13 03:31:00 +01:00
```js
var a = 5;
var b = 10;
var c = "I am a";
a = a + 1;
b = b + 5;
c = c + " String!";
```