变量,根据作用范围分为局部变量和全局变量
局部变量:局部可以访问的变量;函数内部使用var定义的变量
全局变量/成员变量:哪里都可以进行访问;函数外部变量或者进入javaScript之后立即定义的变量,或者函数内部不带有var的变量(函数必须要进行初始化才可以)
var num3 = 333; //全局变量
function fun() {
var num1 = 111;//局部变量
num2 = 222; //全局变量
}
fun();
console.log(num3);
console.log(num2);
// console.log(num1);
使用全局变量和局部变量的原因:局部变量如果函数执行完毕之后,会被GC回收,但是全局变量会一直保持着
隐式全局变量:
function fun(){
//b c都是隐式全局变量
var a = b = c = 1;
// e f都是隐式全局变量
var d = 1; e = 2 ; f = 3;
//g i 不是隐式全局不变量
var g = 1, h = 1,i = 1;
}
预解析:在函数中,定义变量在使用变量之后(容易出现undefied,计算后形成NaN;)
1,查看语法错误
2,只提升变量名,不提升变量值
3,function函数定义的整体提升
特点:
a,函数不调用不执行
b,函数名等于整个函数
c,加载函数的时候只加载函数名,不加载函数体
d,function中传入的参数等于局部变量
e,两个函数的局部变量不会互相影响
案例一:
将var num = 20;改为num = 20;
var num = 10;
fun();
function fun() {
//变量声明提升 只提升变量名,不提升变量值
console.log(num);
var num = 20;
}
案例二:
a局部变量,b c是全局变量想当于 var a = 9; b = 9 ; c = 9;
fun();
console.log(c);
console.log(b);
console.log(a);
function fun() {
var a = b = c = 9;
console.log(a);
console.log(b);
console.log(c);
}