您的位置:首页 > Web前端 > JavaScript

JavaScript难点——变量提升和函数提升(三)

2017-08-02 18:06 183 查看
前端菜鸟的成长之路

关于函数和变量同时提升的问题,代码如下

console.log(a);
function a(){};
var a = 1;


输出结果为:function a(){}

分析一:

var a;
function a(){};
console.log(a);
a = 1;


分析二:

function a(){};
var a;
console.log(a);
a = 1;


两种分析的争论点在 var 和 function 到底谁在最顶上,我们用分析一的结果来做个测试,如下:

var a;
console.log(typeof a); //function  假设分析一是对的,此处应该是undefined
function a(){};
console.log(typeof a); //function
console.log(a);        //function a(){}
a = 1;
console.log(typeof a); //number


一目了然了吧,可见函数提升比变量提升更靠前(函数声明比变量声明具有更高的优先级)。

正确的分析如下:

function a(){};   //函数提升 名称a进入当前作用域 typeof a为function
var a;            //变量提升 声明的部分会被忽略 typeof a为function
console.log(a);   //输出 function a(){}
a = 1;            //a被赋值 typeof a为number
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: