首页 > 网站 > WEB开发 > 正文

关于javascript变量声明、函数声明提升的问题

2024-04-27 15:15:49
字体:
来源:转载
供稿:网友

今天看到了个面试题

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

变量声明提升和函数声明提升,代码可以这样理解:

function fn(){ var a; function a(){ }; console.log(a);//这里是什么? a = 2; console.log(a);//2};fn();

查了一下,说 函数声明的权重要比变量声明的权重大,同名情况下,变量声明会被忽略。这样的话,第一个console就是函数本身。事情这样结束就没意思了。再看一题。

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

这就不对了吧。不是说好的函数声明权重大,同名的变量声明会被忽略吗?百思不得姐(解),下班路上寒风一吹,明白了…. 根据变量声明提升,和函数声明提升,上面的代码可以写成下面这样。确实是函数声明权重大于变量声明,忽略了变量的声明。但是下面还有给变量a赋值的操作。再调用a();自然就是得到2这个结果了

var a;function a (){ console.log(1);}console.log(a);//"function a (){}"a = function(){ console.log(2);}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表