Javascript 起重功能指令
我有这种情况Javascript 起重功能指令,javascript,Javascript,我有这种情况 var fellowship = undefined; fellowship = function(){ return "broken"; }; function fellowship(){ return "friends"; } console.log(fellowship); 返回“friends”的函数永远无法访问,即使我这样调用它: console.log(fellowship()); function fellowship(){
var fellowship = undefined;
fellowship = function(){
return "broken";
};
function fellowship(){
return "friends";
}
console.log(fellowship);
返回“friends”的函数永远无法访问,即使我这样调用它:
console.log(fellowship());
function fellowship(){
return "friends";
}
var fellowship = undefined;
fellowship = function(){
return "broken";
};
console.log(fellowship);
有人能解释一下如何调用函数吗?您的代码被解释为:
console.log(fellowship());
function fellowship(){
return "friends";
}
var fellowship = undefined;
fellowship = function(){
return "broken";
};
console.log(fellowship);
因此,名为“fellowship”的变量的声明将覆盖该符号与使用相同名称定义的函数的绑定。在那之后你不能再叫它了
“有人能解释一下如何调用该函数吗?”
不能叫它。你已经覆盖了它。单个标识符无法直接引用两个不同的值
函数声明在与同一作用域中的赋值表达式的争用中总是会丢失。在JavaScript中,函数定义被提升到当前作用域的顶部。因此,您的示例代码如下所示:
var fellowship= function() { return 'friends' };
var fellowship= function() { return 'broken' };
如果您需要有关此的信息,请点击此链接:
是的,在这里,变量提升和功能声明提升的概念正在浮现。 在您的示例中,您已经声明
var fellowship = undefined;
已经在顶端了。
现在是下一个声明:
fellowship = function() {
return "broken";
}
是一个未在javascript中提升的表达式。
第三个是功能声明,在变量提升线上也进行了提升。
所以,现在你的结构变成了:
var fellowship = undefined;
// function declaration hoisted
function fellowship(){
return "friends";
}
fellowship = function(){
return "broken";
};
因此,当您调用fellowship()时,它返回“breaked”
这个链接应该对你有用问题是你为什么会有这种情况?