var即可用于函数外,亦可用于函数内,这就涉及到全局变量与局部变量的问题,
全局变量如何声明:
在函数外声明的变量就是全局变量,反之,在函数内声明的变量就是局部变量,
作用域:
全局变量无论在函数内,还是函数外,都可访问到;
局部变量只能在函数内有效,函数外部访问不到该变量及说对应的变量值
var声明的变量在两种情况下,是全变量:
1.直接在函数外部声明:var aa=1;
2.在函数内部不声明关键字 aa=2,即博主change()方法里的变量重新赋值
,
测试:
提供的函数change()方法里再太添加 var bb=33;
在该函数外面,console.log(bb);会得到undefined
let 没有变量提升
var a = 10; // 挂在window
(function aaa(){ // 不挂在window下
console.log(a); // undefined
a = 5;
console.log(a); // 5
console.log(window.a); // 10
var a = 20;
console.log(a); // 20
})();
var a = 10;
function aa(){ // 挂在window下的匿名函数
console.log(a); // undefined
a = 5;
console.log(a); // 5
console.log(window.a); // 10
var a = 20;
console.log(a); // 20
}
aa();
let a = 10;
(function aa(){
console.log(a);
a = 5;
console.log(a);
console.log(window.a);
let a = 20;
console.log(a);
})()
// Uncaught SyntaxError: Identifier 'a' has already been declared
at <anonymous>:1:1