当函数和变量名相同时,typeof运算符的结果

时间:2018-01-31 13:21:31

标签: javascript jquery html css html5

我是JavaScript的新手,在学习吊装的同时,我遇到了挂起的订单variable declaration and initialisation> function declaration >variable declaration。所以,我尝试了以下代码



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




正如预期的那样,它给出了输出number。但是当我在Chrome控制台中一次尝试同一行时,

它给出了答案'功能' !!为什么?类似的代码我尝试在一行写作,它给出了答案'数字' !!

enter image description here

这里发生了什么?

提前致谢!

2 个答案:

答案 0 :(得分:1)

首先,您必须知道在代码执行之前发生了提升。

然后,我们谈论你的问题;

第一种情况,你在三行中执行3个订单。提升没有显示他的效果;所以代码只是按你输入的顺序执行。

第二种情况,你在一行输入了代码,所以实际的顺序是:

在执行代码之前,浏览器会像这样调整代码大小

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

var count;
function count() {};
count = 1;
console.log(typeof count);
然后,开始执行代码。 所以,无论什么顺序

,typeof计数都会返回'number'

答案 1 :(得分:0)

这是因为如果您在chrome devtools中一次执行一行,则将在每行的不同执行上下文中执行。将类似于在自己的函数上执行每一行..

(function(window){
  window.count = 1;
} )(window);
(function(window){
  window.count = function(){}
} )(window);

console.log(typeof count);

另一方面,如果你在一行中执行所有操作,将在同一个执行上下文中,并且你知道首先解析函数声明,然后解析变量....