你能解释一下吗?
var guessWhat = function(){ console.log('Print this!!!'); };
function guessWhat(){ console.log('Print that???'); }
guessWhat();
// output: Print this!!!
两者都在全球范围内宣布。为什么第二行不会覆盖第一行?第二个功能是否陷入了困境?
答案 0 :(得分:3)
function guessWhat(){ console.log('Print that???'); } // declaration
这是一个函数声明,它是在执行任何代码之前定义的。
var guessWhat = function(){ console.log('Print this!!!'); }; // literal
这是一个函数文字,它是在运行时定义的。
所以,函数定义首先被加载(在任何代码之前),然后是函数文字,它会覆盖第一个定义,因此会出现这种行为。
了解更多here.