javascript中的变量提升

发布时间:2019-08-11 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript中的变量提升脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

变量提升

变量提升即将变量声明提升到它所在作用域的最开始的部分,即函数声明和变量声明总是被JavaScript解释器隐式地提升(hoist)到包含他们的作用域的最顶端。在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域。

  1. 首先看一段简单的代码
VAR name = 'Clam';
(function (){
    console.LOG(name);
})();

// Clam

上面的代码很简单。闲先声明一个变量名name的变量,同时赋值为Clam。后面是一个立即执行函数,在函数体中控制台输出name。结果为Clam,没毛病~接着看下面的代码。

  1. 简单的修改一下上面的代码
var name = 'Clam';
(function (){
    console.log(name);
    var name = 'Klay';
})()

首先我们自己分析一下上面的代码哈:首先声明了一个变量name并且赋值为Clam,紧接着也是一个立即执行函数,在函数体中首先控制台输出了name,但是之后,又声明了赋值了一次变量name
那我来猜想一下,恩,控制台输出了Clam,但是在立即执行函数结束之后,变量name的值被修改成了Klay
但是,上面的代码运行的结果是:

undifined
// eXM??

这就是我今天关注的东西:变量提升

前面说过,变量提升会将变量的声明提升到其作用域的最前端。这里,name所在的作用域就是指这个函数作用域,上面的代码就相当于以下代码。

var name = 'Clam';
(function (){
    var name;
    console.log(name); //undefined
    name = 'Klay';
})()

函数提升

js中创建函数有两种方式:函数声明式和函数字面量式。只有函数声明才存在函数提升。

console.log(F1); // function f1() {}   
console.log(f2); // undefined  
function f1() {}
var f2 = function() {}

以上,enjoy

脚本宝典总结

以上是脚本宝典为你收集整理的javascript中的变量提升全部内容,希望文章能够帮你解决javascript中的变量提升所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。