var声明提升
|
1
2
|
console.log(name) //土豆var name = '土豆'; |
使用var声明的变量会自动提升到函数作用域的顶部
|
1
2
3
4
5
6
7
8
9
10
11
12
|
function foo(){ console.log(name); var name = "土豆";}foo() //undefined//等价于function foo(){ var name; console.log(name); name = "土豆";}foo(); //undefined |
|
1
2
|
console.log(name) //ReferenceError name没有被定义let name ="土豆"; |
而使用let定义的name不会被提升,报出ReferenceError的错误;
var可以重复声明同一个变量
|
1
2
3
4
|
var name = "番茄";var name = "西瓜";var name = "土豆";console.log(name);//土豆 |
而使用let重复声明同一个变量会报错。
|
1
2
3
|
var name = "土豆";let name = "土豆";console.log(name);//'name' has already been declared |
|
1
2
3
|
let name = "土豆";var name = "土豆";console.log(name);//Cannot redeclare block-scoped variable 'name'. |
var全局声明
|
1
2
3
4
|
var name = "土豆";console.log(window.name);//土豆let age = "24";console.log(window.age); //undefined |
使用var定义的变量会被挂载到window上,成为window对象的属性,而使用let不会。
作用域
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
if(true){ var name = "土豆"; console.log(name);}console.log(name);//土豆//土豆if(true){ let age = 24; console.log(age);}console.log(age);//24//undefined |
使用var声明的范围是函数作用域,使用let声明的范围是块作用域。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END

















暂无评论内容