为什么控制台输出作为一个功能?

时间:2017-07-29 18:46:26

标签: javascript

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

因为,如果条件为真,那么为什么console.log的值在chrome v58中作为函数出现,在IE 8中为10?请参阅Chrome和IE8控制台输出的屏幕截图。

铬:

enter image description here

IE 8:

enter image description here

2 个答案:

答案 0 :(得分:1)

按照@impregnable fiend的建议查找from rango import models。在您的代码中,即使您声明function hoisting Javascript将扫描所有代码并拉出它在执行任何其他操作之前找到的所有已定义函数。因此,它会找到函数a=10;并在调用function a() {}之前覆盖a=10

答案 1 :(得分:0)

您的代码与此代码相同:

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

首先' var'和'功能'进入范围的开头。阅读范围,特别是吊装。