JavaScript中的执行顺序
Order of Execution in JavaScript
我无法理解JavaScript代码的执行。在函数问候之后,执行前两个函数声明:
function greet(myName) {
var myAlertString = "Hello " + myName ; // Local variable
function doAlert() {
alert(myAlertString);
}
doAlert();
}
greet("Smak"); // will alert "Hello Smak"
var greetSam = greet("Sam"); // greetKitty is now a function
greetSam(); // will alert "Hello Sam"
var greetKitty = greet("Kitty"); // greetKitty is now a function
greetKitty(); // will alert "Hello Kitty"
var greetMax = greet("Max"); // greetMax is now a function
greetMax(); // will alert "Hello Max"
greetKitty(); // will alert "Hello Kitty"
为什么Kitty和Max没有弹出窗口?
我得到了正确的答案:http://jsfiddle.net/QHN6T/13/
您的一个作业出现错误,即:
var greetSam = greet("Sam"); // greetKitty is now a function
你的假设是错误的。greetSam
不返回function
,而是返回undefined
。因此,进一步下行的线路上的呼叫greetSam()
产生TypeError: greetSam is not a function
。
正确书写:
...
doAlert();
return doAlert;
}
问题是这行:
var greetSam = greet("Sam"); // greetKitty is now a function
是否不返回函数。返回调用alert()
的结果,即undefined
。下一行:
greetSam(); // will alert "Hello Sam"
生成一个错误并停止脚本。
如果将greet
更改为返回doAlert
而不是doAlert()
,则它将返回一个函数。不幸的是,然后第一个电话:
greet("Smak");
将不再为CCD_ 11生成警报。你必须写:
greet("Smak")();
简单的答案是你必须更换
return doAlert();
具有CCD_ 13。两者的区别在于,第一个版本返回doAlert
返回的任何内容,而第二个版本返回稍后可以调用的函数(所谓的闭包),这正是您想要的。这与处决的顺序无关。
相关文章:
- 使用appendChild()动态添加的脚本是按顺序执行还是并行执行
- 如何在angularjs中按顺序执行多数据ng应用程序
- 要按顺序执行的异步代码
- AngularJS:如何按照预定义的顺序执行函数
- 按顺序执行导入的 Javascript 函数
- 无法让 jQuery 以正确的顺序执行代码
- 触发后的 Javascript 顺序执行
- $http.post() angularjs 响应函数未按正确的顺序执行
- 如何按顺序执行 jQuery 函数
- 为什么Javascript不按顺序执行代码
- 对象在循环中运行时未定义,但在按顺序执行时未定义
- 按顺序执行ajax请求的动态编号
- javascript在网络上的顺序执行
- SQL语句是通过PhoneGap'按顺序执行的吗;的Web SQL数据库
- jQuery Deferred和Promise用于同步和异步函数的顺序执行
- 顺序执行js
- 如何按顺序执行承诺数组
- 有没有更好的方法以一定的顺序执行一堆部分异步的jQuery函数
- 如何确保 Dojo 模块按特定顺序执行
- 为什么我的 JavaScript 不能按顺序执行