使用功能顺序吊装
Hoisting with Functions order
我有这种情况
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);
因此,名为"fellowship"的变量的声明会覆盖该符号与用相同名称定义的函数的绑定。在那之后你不能打电话。
"谁能解释一下如何调用这个函数?"
它不能被调用。您已经覆盖了它。单个标识符无法直接引用两个不同的值。
函数声明将始终在与同一范围内的赋值表达式争用中丢失。
是的,在这里,可变吊装和功能声明吊装的概念正在出现。在您的示例中,您已声明
var fellowship = undefined;
已经在顶部。现在下一条语句:
fellowship = function() {
return "broken";
}
是一个在 JavaScript 中没有提升的表达式。第三个是功能声明,在可变吊装线上也被吊装。所以,现在你的结构变成这样:
var fellowship = undefined;
// function declaration hoisted
function fellowship(){
return "friends";
}
fellowship = function(){
return "broken";
};
因此,当您调用 fellowship() 时,它返回 'broken'。
http://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/这个链接应该对你有用
在 JavaScript 中,函数定义被提升到当前范围的顶部。因此,您的示例代码如下所示:
var fellowship= function() { return 'friends' };
var fellowship= function() { return 'broken' };
如果您需要有关此内容的信息,请点击此链接:http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- ajax请求的顺序总是不同的
- 按照选项卡索引的顺序循环一个jQuery选择
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 按顺序添加和删除类
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 滚动功能按相反顺序工作
- 表单提交时,点击顺序功能并提交
- 使用功能顺序吊装
- 功能无法按ios5 iPad的正确顺序工作
- 执行功能的顺序
- jQuery脚本的顺序正确吗?隐藏/显示功能在实时版本中不起作用,但可以作为独立Fiddle使用
- 你能有效地重置功能输入顺序吗
- 什么时候功能顺序很重要
- 如何按顺序向各种按钮添加功能