可能是一个简单的问题,但我对变量和函数具有相同名称的问题有疑问。
如果有变量,
var add = 1;
和一个函数,
function add(x,y) {return x+y;}
并且有两个console.log,
console.log(add)
console.log(add(1,2))
我预计这两个console.log会正常工作,因为add包含Number而add()被归类为Function,但第二个会输出错误。所以他们不被认为是一样的。
但结果说我错了。 任何人都可以解释我的代码中发生了什么吗?
答案 0 :(得分:4)
Variables
和function definitions
(不是expressions
)被提升到了,这意味着无论您在哪个范围内编写函数或变量,它们都会被移动到范围的开头。首先是函数定义然后是变量。所以这意味着函数将被变量覆盖。
var add = 1;
function add(x,y) {return x+y;}
console.log(add);

订单并不重要。稍后将是变量并将覆盖
function add(x,y) {return x+y;}
var add = 1;
console.log(add);