初始化为表达式的Javascript函数
如果函数表达式在出现之前被调用,为什么它不在堆栈中初始化为表达式的Javascript函数,javascript,Javascript,如果函数表达式在出现之前被调用,为什么它不在堆栈中 console.log( myFunc()); var myFunc = function(){ }; 常规函数声明工作正常。这种混乱是由于JavaScript引擎的一个主要区别 将数据加载到执行上下文中。在执行任何代码之前,函数声明都是在执行上下文中读取和可用的,而函数表达式在执行到达该行代码之前是不完整的 这是因为函数声明起作用 如果没有函数声明,源树的顶部将为空。因此,代码会出现意外的标识符错误。var myFunc;console.l
console.log( myFunc());
var myFunc = function(){
};
常规函数声明工作正常。这种混乱是由于JavaScript引擎的一个主要区别
将数据加载到执行上下文中。在执行任何代码之前,函数声明都是在执行上下文中读取和可用的,而函数表达式在执行到达该行代码之前是不完整的
这是因为函数声明起作用
如果没有函数声明,源树的顶部将为空。因此,代码会出现意外的标识符错误。var myFunc;console.logmyFunc;myFunc=函数{}可能是Ask的重复,在这里回答了几十次。请搜索函数表达式。更准确地说,这与函数表达式无关。给定带有初始化的变量声明,只有声明被提升,而不是初始化本身。只有在到达赋值行时才会发生这种情况。@FelixKling OP询问,为什么作为初始化语句一部分而不是函数声明一部分的函数会导致错误。我已经给出了确切的原因。我真的不欣赏你不必要的否决票。你不应该仓促下结论,认为我只是因为发表了评论就否决了。我确实认为是你这么做的。对不起。
console.log(myFunc());
function myFunc(){
//
}