目录
预解析
JS引擎在对JS代码进行执行之前,会对JS代码进行预解析。在预解析阶段 会将以关键字var和function开头的语句块提前进行处理
一、预解析的情况
1.函数声明会提升
2.函数表达式不会提升
3、变量的提升 变量会提升,赋值不会提升
4、变量名和函数名相同时 函数会提升,变量名不会提升
二、隐式的全局变量
1、不用var关键字声明的变量
2、用var声明且用;隔开的也是全局变量
3、用var声明且用=连接的也是全局变量
代码(如下):
(function () {
console.log(a); //a(){}
var a = 5;
function a() {}
console.log(a); //5
function b() {}
b = 6;
console.log(b); //6
var c = d = b;
})();
console.log(d); //6
//预解析
(function () {
function a() {} //变量名和函数名相同时 函数会提升,变量名不会提升
console.log(a); //a(){}
var a = 5;
function a() {}
console.log(a); //5
function b() {}
b = 6;
console.log(b); //6
var c = d = b; //用var声明且用=连接的也是全局变量
})();
console.log(d); //6