JS中变量的提前申明注意事项

变量的声明提前(变量提升)
使用var关键字声明的变量( 比如 `var a = 1`),**会在所有的代码执行之前被声明**(但是不会赋值),但是如果声明变量时不是用var关键字(比如直接写`a = 1`),则变量不会被声明提前。

**举例1**:

```javascript
console.log(a);
var a = 123;
```

打印结果:undefined。注意,网站打印结果并没有报错,而是 undefined,说明变量 a 被提前声明了,只是尚未被赋值。

**举例2**:

```javascript
console.log(a);
a = 123; //此时a相当于window.a
```

程序会报错:`Uncaught ReferenceError: a is not defined`。

**举例3**:

```javascript
a = 123; //此时a相当于window.a
console.log(a);
```

打印结果:123。

**举例4**:

扫描二维码关注公众号,回复: 11318840 查看本文章

```javascript
foo();

function foo() {
if (false) {
var i = 123;
}
console.log(i);
}
```

打印结果:undefined。注意,打印结果并没有报错,而是 undefined。这个例子,再次说明了:变量 i 在函数执行前,就被提前声明了,只是尚未被赋值。

猜你喜欢

转载自www.cnblogs.com/blogst/p/13163736.html