【发布时间】:2014-02-18 03:19:19
【问题描述】:
我希望能够在函数之外访问 嵌套 each() 函数的值。
我的方法是:
- 在函数外定义变量,
- 在函数内更新,
- 能够在函数之外访问更新的值。
但这不起作用:
jsFiddle
http://jsfiddle.net/rwone/ESXB4/
jQuery
var my_array = [{"check": "tom", "nested_array": [{"nested_array_2": ["1", "2"], "name": "tom", "image": "one.jpg"}, {"nested_array_2": ["1", "2"], "name": "bob", "image": "two.jpg"}]}];
var check = my_array[0].check;
var desired_value = "hello";
$.each(my_array, function (obj, v) {
$.each(v.nested_array, function (i, value) {
if (value.name == check) {
var desired_value = value.image;
alert(desired_value); // this returns `one.jpg`, the variable has been updated.
}
});
});
//alert(desired_value); // this alerts 'hello', the variable has not been updated.
如果上述方法错误,谁能演示如何访问嵌套each() 循环的返回值?
编辑:我应该说,我在任何阶段都谨慎使用全局变量,因为这可能会在以后的应用程序中引起问题。
编辑 2: 我认为在函数中使用全局 var 会永远定义变量(除非再次全局定义),但它似乎不是:
var desired_value = "hello";
$.each(my_array, function (obj, v) {
$.each(v.nested_array, function (i, value) {
if (value.name == check) {
desired_value = value.image; // 'global'
alert(desired_value); // this returns `one.jpg`, the variable has been updated.
}
});
});
alert(desired_value); // this alerts 'one.jpg', the variable has been updated.
var desired_value = "new value";
alert(desired_value); // this alerts 'new value'
更新的 jsFiddle
【问题讨论】:
-
这是非常基本的javascript。从你最里面的
desired_value中删除var,所以它变成:desired_value = value.image;。