变量提升
js中变量和函数的声明会被提升到最顶部,即变量可以先使用后声明,如下:
//
name = 'hello'
console.log(name); //输出hello
var name; // 如果不声明name也会输出hello,但name会作为window的一个属性name
1
2
3
4
2
3
4
只能提升未初始化的变量,如果变量已赋值就不能提升,如下:
console.log(name); //undefined
var name = 'hello';
// 或
// var name;
// name = 'hello';
1
2
3
4
5
2
3
4
5
变量提升只能提升到当前函数的顶端,如下:
var name = "hello";
changeName();
function changeName() {
year = 5;
console.log(name); // undefined,changeName作用域初始化了name变量,使用name时以当前作用域为准
console.log(year); // 5,当前作用域变量提升
var name = "xxxx";
var year;
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
在日常的编程中尽量避免产生变量提升,养成先声明后使用的习惯以免出现莫名其妙的问题。
同时,可以使用js的严格模式 use strict,在严格模式下不允许使用未声明变量
上次更新: 2025/09/05, 8:09:00