为什么我必须先将外部函数分配给变量,然后才能调用它
Why do I have to assign the external function to a variable before I can invoke it?
为什么不能按预期工作?
function external() {
function internal() {
alert("external");
}
return internal;
}
external(); //nothing happens
var func = external();
func(); // alert pops up
这与事实有关吗,这是一个结束?因为在这里它的工作方式和我预期的一样:
function test() {
alert("test");
}
test(); //alert pops up without assigning the function to a variable
就像@theforthey在我刚做时建议的那样
external();
只返回internel函数对象。
我只是加了一个例子,让它更清楚!
function external() {
alert("foo");
function internal() {
alert("bar");
}
return internal;
}
external(); //returns foo (and the internel function)
external()(); //return foo and then bar
当您return internal
时,它正在返回一个函数。函数不执行,只是作为引用传递回外部函数的调用方。所以external()
基本上计算为一个未执行的函数表达式。它实际上相当于写:
function() {
alert("external");
}
什么都不会发生,因为函数只是简单地表达,但从不执行。
相反,对于var func = external();
,函数表达式被分配给变量func
。实际上,它相当于写:
var func = function() {
alert("external");
}
这就是为什么当您随后执行func()
时,会弹出警报。
相关文章:
- 如何从单选按钮中获取多个值,然后将它们分配到单个变量中并在页面上显示
- 在Django中,可以在视图中创建一个包含js的变量,然后在循环模板标记中使用它
- 使用变量的名称,然后为该变量定义函数
- 在变量中保存值的最佳方法是在应用程序关闭后使用,然后使用apachecordova在android中重新启动
- 等待函数完成,然后将返回值分配给变量JS
- 如何更改javascript的一个变量,然后运行;“加载”;而无需重新加载页面
- 通过 AJAX 调用 PHP 文件,将 $_GET 变量传递到 MySQL 查询中,然后回显到响应中
- 为什么我们被教导将document.getElementById(“id”)分配给一个变量,然后将该变量与属性一起使用
- 流星技术/模式,用于等待数据库变量更改,然后在 in 之后执行某些操作
- 用我的名字创建一个变量.然后提醒字符串“hello-from”加上我创建的变量
- 从数组中删除元素,然后保留其状态以备将来使用,而不使用全局变量
- node.js将接收到的字符串拆分为不同的变量,然后格式化为json字符串
- 通过用户输入更改变量的值,然后在其他页面上重新使用
- C#WebBrowser控件-使用DOM创建和修改javascript变量,然后使用Applet读取它
- 将生成的随机数存储在变量中,然后将该变量作为文件名调用以显示图像.Javascript
- Javascript 返回过去 6 个月,然后将每个月用作变量
- 设置变量 if..然后是JavaScript
- 等到元素存在,循环,然后存储在变量中
- 如何将变量设置为文本输入,然后使其显示在屏幕上
- 如何将文本输入保存为变量,然后提交到服务器(ajax 和 javascript)