javascript数组的作用域不同于IE9和FireFox/Chrome
scope of javascript array differs from IE9 to FireFox/Chrome
我已经缩小了我的基本问题:数组的范围从IE9到FireFox(和Chrome)是不同的。
在下面的函数中(仅摘录),我声明了一个数组,然后调用$. getjson()填充它。因为引用HoldEm的行发生在ProcessArray函数中(甚至在boolSortArray分支中),所以我假定sortedWorking在此时可用。它是在IE9,但不是在FireFox/Chrome。在引用的行中,sortedWorking在FireFox/Chrome中为空。在任何浏览器中都没有错误。
实验表明sortedWorking在标记为"end of $"的行之前填充。getJSON,"而该行之后为空。任何想法吗?
function ProcessArray(arWorking, boolSortArray, idX, isPartners, isChildren) {
//...
var sortedWorking = [];
if(boolSortArray) {
$.getJSON('MurakiMaida.json', function(data) {
$.each(data.person, function(i, xdata) {
...
sortedWorking.push(targetID + ":" + birthYear);
...
}); //end of $.each
}); //end of $.getJSON
var HoldEm = BubbleSort(sortedWorking);
对"$. getjson()"的调用是异步的。您不能依赖在调用之后的代码行中填充数组。相反,将依赖于要填充的数组的代码放在的完成处理程序中。
function ProcessArray(arWorking, boolSortArray, idX, isPartners, isChildren) {
//...
var sortedWorking = [];
if(boolSortArray) {
$.getJSON('MurakiMaida.json', function(data) {
$.each(data.person, function(i, xdata) {
...
sortedWorking.push(targetID + ":" + birthYear);
...
}); //end of $.each
var HoldEm = BubbleSort(sortedWorking);
// ... whatever else ...
}); //end of $.getJSON
现在这也可能意味着你的"ProcessArray"函数本身需要重新考虑,因为,类似地,在它返回之后,仍然不能确定数组是否已经被填充。一般来说,这样做的方式是遵循与"$. getjson()"本身遵循的完全相同的模式:向"ProcessArray()"添加一个回调参数,以便其客户端可以传入一个函数,该函数将在数组被获取和排序以及其他任何事情完成时调用。
相关文章:
- Angular js$Interval怪异行为-Firefox Chrome
- 由于传输层/meta/connect调用,使用faye/nodejs在Firefox / chrome上的初始页面加载时
- d3实现可以在firefox/chrome上运行,但不能在iPad上运行
- 为什么这个表达式在 Firefox/Chrome 中返回 true,而在 IE 中返回 false
- Jasmine 测试在测试运行中、Firefox/Chrome 之间以及检查器开/关时的结果不一致
- JavaScript XML解析在IE中工作,但在Firefox / Chrome中不起作用
- contentEditable and lastChild IE, Firefox & Chrome LastC
- WEBGL_draw_buffers最新的Firefox / Chrome上不支持
- 在Firefox / Chrome页面中打开IE浏览器
- 网站不适用于Firefox/Chrome,但适用于IE
- 任何使IE显示CSS3/HTML5与Firefox/Chrome相同的脚本
- onblur事件在IE/Firefox/Chrome中有所区别
- JQuery翻译函数在firefox/chrome中不起作用
- AudioContext Analyser在firefox/chrome上工作,但在Safari上不工作
- document.body.scrollHeight在firefox/chrome中产生两种不同的结果
- javascript数组的作用域不同于IE9和FireFox/Chrome
- 开发一个Firefox/Chrome扩展,覆盖形状的网页
- 如何隐藏地址栏在最新版本(Firefox, chrome和internet explorer)使用javascript窗
- innerHTML写上.value适用于IE9 IE8,但不适用于IE10, Firefox, Chrome
- Scrollbottom js不工作在Firefox, Chrome, Safari