JavaScript的作用域

变量作用域

比如说我们写一个函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

var age = 11;

function t1() {
console.log(age); //11
}

//这个不会有问题
var age = 11;

function t1() {
var age = 22;
console.log(age); //22
}

//这里已经出现规律了

var age = 11;

function t1() {
var age = 22;
function t2() {
console.log(age); //22
}
}


在JavaScript中,函数嵌套是非常普遍的,那么,在函数的嵌套中,变量是如何寻找的呢?
上面的例子中已经总结出来了。

1、首先在函数内部寻找
2、寻找不到,则往外层
3、直到 Window 对象

var 的作用

var的作用是什么呢?是声明。

1
var name = 'wanhai';  //声明并赋值

如果我们,不加var呢?

1
2
3
4
5
6
7
8
9
10
11
name = 'wanhai';

function t1() {
name = 'haitao';
console.log(name); // haitao
}

t1(); //haitao

console.log(name); // haitao

这里的全局变量的值莫名的就被改变成了 haitao。所以,不加var的后果,就是全局变量被污染。