JS的预解析包括两部分: 

1. 变量提升

2. 函数声明

 

对于变量提升, 可以看下下面这块代码

console.log(name); // undefined 
var name = "Lilei";

 

对于函数声明, 可以看下下面这块代码

sayHello(); // "Hello" 
function sayHello() { 
    console.log("Hello"); 
}

 

由上面的执行结果, 我们可以知道JS的预解析对变量和函数的行为是不一样的, 对于变量来说, 预解析阶段是不会赋值的, 也就是说: 预解析之于变量, 实际上是在内存中开辟出了变量数量的内存地址; 而预解析之于函数, 则是直接声明. 

这也是变量在声明之前使用会返回undefined, 而函数可以正常执行的原因.

发布评论

分享到:

IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

怎样理解作用域链讲解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。