函数中变量的JS可见性
JS visibility of a variable in function
我使用JSON,我想计算响应中的元素数量。
$.getJSON("/api/getEvents", function(data) {
$.each(data, function(key, event) {
var count = 10;
$.getJSON("/api/getUsers", function(data) {
$.each(data, function(key, event) {
alert("Value: " + count);
count++;
});
});
alert("Count: " + count);
});
});
结果,我得到:
Value: 10
Value: 11
Value: 12
...
Count: 10
为什么计数=10?
$.getJSON
只是启动一个请求,但javascript执行会立即继续。如果您在ajax回调中移动警报,您可以看到计数:
$.getJSON("/api/getEvents", function(data) {
$.each(data, function(key, event) {
var count = 10;
$.getJSON("/api/getUsers", function(data) {
$.each(data, function(key, event) {
alert("Value: " + count);
count++;
});
// I moved this here:
alert("Count: " + count);
});
// It used to be here.
});
});
因此,在设置了var count = 10
之后,javascript解析器会运行$.getJSON
,但随后会立即进入下一行,在您的代码示例中,这会提醒"计数:10"。然后,每当请求完成时,它都会运行回调代码,以增加计数并提醒Value
行。
相关文章:
- 有没有一种方法可以从隐藏的可见性(CSS,JS)中获得淡入效果
- 如何在 js 中捕获 win8 Metro 应用的可见性更改/应用后台事件
- 无法在 NW.js 中切换窗口菜单栏可见性
- 通过JS实现面板可见性
- D3.js动态设置节点可见性
- 如何使用HTML / CSS / JS/在2个画布之间切换可见性
- 是否有相当于三.js的背面可见性
- 三个js-dat-gui:更改来自OBJMTLLoader的对象的不透明度和可见性
- 函数中变量的JS可见性
- Knockout.js:根据比较的属性确定可见性
- d3.js树状图:如何通过单击切换节点的可见性
- 应用css样式时,knockout.js的可见性不起作用
- js:使用多个按钮切换多个Dom元素的可见性
- 根据Knockout.JS中选择的下拉值设置文本框的可见性
- 使用angular js切换html元素的可见性
- 使用knockout.js在选择和文本输入之间切换可见性
- JS切换可见性:如何隐藏已经可见的元素点击
- js通过GUI打开和关闭对象可见性
- 基于条件d3.js的工具提示可见性
- Knockout.js显示/隐藏块可见性模式