我是JavaScript的新手,在学习吊装的同时,我遇到了挂起的订单variable declaration and initialisation> function declaration >variable declaration
。所以,我尝试了以下代码
var count = 1;
function count() {};
console.log(typeof count);

正如预期的那样,它给出了输出number
。但是当我在Chrome控制台中一次尝试同一行时,
它给出了答案'功能' !!为什么?类似的代码我尝试在一行写作,它给出了答案'数字' !!
这里发生了什么?
提前致谢!
答案 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);
另一方面,如果你在一行中执行所有操作,将在同一个执行上下文中,并且你知道首先解析函数声明,然后解析变量....