你能解释一下吗?你能解释一下这个奇怪的函数声明行为吗?
var guessWhat = function(){ console.log('Print this!!!'); };
function guessWhat(){ console.log('Print that???'); }
guessWhat();
// output: Print this!!!
两者都在全局范围内声明。为什么第二行不会覆盖第一行?第二个功能是否失去了功能?
你能解释一下吗?你能解释一下这个奇怪的函数声明行为吗?
var guessWhat = function(){ console.log('Print this!!!'); };
function guessWhat(){ console.log('Print that???'); }
guessWhat();
// output: Print this!!!
两者都在全局范围内声明。为什么第二行不会覆盖第一行?第二个功能是否失去了功能?
function guessWhat(){ console.log('Print that???'); } // declaration
这是一个函数声明,它是在任何代码执行之前定义的。
var guessWhat = function(){ console.log('Print this!!!'); }; // literal
这是一个函数文字,它在运行时定义。
因此,函数定义首先被加载(在任何代码之前),然后是函数文字,它覆盖了第一个定义,因此这种行为。
更多here.
__loaded__不能是这个词... – Rayon
@RayonDabre,是的。谢谢。 :) –
@ orr-siloni对其他地方在同一个问题上的答案支持这一个的stackoverflow http://stackoverflow.com/a/35704772/2646455 –
也许两个FO他们存在,但存储在存储器中不同的地方,和可变的功能前解决?但是,在所有浏览器上可能都不是这样。 – Walfrat
可能会被吊起! – Rayon
托管做伎俩! –