本文主要是介绍00002__变量提升,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
场景1:
遇到 script 标签的话 js 就进行预解析,将变量 var 和 function 声明提升,但不会执行 function,然后就进入上下文执行,上下文执行还是执行预解析同样操作,直到没有 var 和 function,就开始执行上下文。如:
a=5; show(); var a; function show(){};
预解析:
function show(){}; var a; a=5; show();
需要注意都是函数声明提升直接把整个函数提到执行环境的最顶端。
场景二:
除了以上的函数声明方式外,还可以使用匿名函数的方式。
声明:
var 变量名称=function(形参列表){//函数体 }
调用:
变量名称(实参列表)
注意:使用匿名函数的方式不存在函数提升,因为函数名称使用变量表示的,只存在变量提升。例:
var getName=function(){console.log(2); }function getName(){console.log(1); }getName(); //结果为2
可能会有人觉得最后输出的结果是 1。但是 getName 是一个变量,因此这个变量的声明也将提升到顶部,而变量的赋值依然保留在原来的位置。需要注意的是,函数优先,虽然函数声明和变量声明都会被提升,但是函数会首先被提升,然后才是变量。
//函数、变量声明提升后 function getName(){ //函数声明提升到顶部console.log(1); }var getName; //变量声明提升 getName = function(){ //变量赋值依然保留在原来的位置console.log(2); }getName(); // 最终输出:2
请看:https://www.runoob.com/js/js-hoisting.html
这篇关于00002__变量提升的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!