gpt4 book ai didi

javascript - 是否可以从同一数组的函数内部引用 "real-time parent"函数的变量?

转载 作者:行者123 更新时间:2023-11-28 20:35:18 25 4
gpt4 key购买 nike

我完全意识到这段代码就 JavaScript 的本质而言有点奇怪,但是看看它:

var arr = [
function () {
this.b = "hello";
//or var b = "hello";
arr[1]();
},
function () {
var str = RealtimeParentFunc.b;
alert(str);
// want to get "hello"
}
];
// want to get "hello"!
arr[0]();

也许这是不可能的,但我想知道是否有办法做到这一点。如何获取调用同一数组中函数的数组函数的变量?

更新
我不得不回到这个问题并决定发布更新:当然我不能引用 arr[i]从内部来看,但我必须强调,上面的代码不应该太字面意思:它只是我想要的演示;但如果我有一个先前在代码中定义的小“辅助”函数,我似乎可以做我想做的事:

var a = function (i, v) {
return arr[i]()[v];
};
var arr = [
function () {
var h = "hello, ";
var n = a(2, "n");
return {
"h": h+n
}
}, function () {
var h = a(0, "h");
alert(h)
}, function () {
return {
"n": "your name"
}
}];
arr[1]();

最佳答案

您无法同时定义数组并访问其值,因为在创建时,arr2 尚不存在。

[ function(){ .. }, function(){ .. }] 数组不会创建并设置为 arr2,直到它到达 ; 末尾有分号。因此,在定义时您无法引用 arr2[1]()

关于这一点,您可以做的是首先定义数组,然后将函数 .push() 放入其中,但您仍然只能按顺序执行:

var arr2 = [];

arr2.push(
function () {
var b = "hello";
//arr2[1](); // CAN'T DO THIS since arr2[1] doesn't exist
return {
b: b
};
});
arr2.push(
function () {
var str = arr2[0]().b;
alert(str);
// want to get "hello"
});
// want to get "hello"!
arr2[0]();
arr2[1]();

查看工作 fiddle :http://jsfiddle.net/amyamy86/5k57X/

关于javascript - 是否可以从同一数组的函数内部引用 "real-time parent"函数的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15563183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com