gpt4 book ai didi

javascript - 在 JavaScript 中访问方法函数内的变量

转载 作者:行者123 更新时间:2023-11-28 21:10:44 24 4
gpt4 key购买 nike

我是 JavaScript 新手,所以请原谅任何不正确的术语/理解。

我正在尝试从方法 ec.get 内的回调函数 function(thebest,all) 中提取变量 thebest

我已经对作用域做了一些阅读,我希望下面的代码能够工作,但函数外部的 thebest 变量似乎与方法内部的变量处于不同的作用域中功能。

var thebest = 0;
ec.get("id", function(thebest,all) { });
alert(thebest);

我也尝试过在外部使用不同的变量名称,但没有什么区别。如何从方法及其函数外部访问“最内部”thebest 变量的值?谢谢!

最佳答案

看起来这里有几个问题:

问题 1:如果您想更改 theBest 的值在回调函数中,您不能通过将其作为参数传递来更改它。简单变量按值传递,因此如果您在函数中更改它,原始变量不会更改。

问题 2: 假设 ec.get()是一个网络操作,它可能是异步的,这意味着您传递给它的回调函数直到很久以后才会被调用。这意味着,当您的警报触发时,完成回调函数尚未执行。所以,它还不会改变任何东西。

问题 3:您无法按照声明的方式将参数传递给回调。这将定义这些参数,但除非 ec.get()就像这样传递参数,当它被调用时参数实际上并不存在。请记住,它是 ec.get()在内部调用您的函数。它单独决定你的回调得到什么参数。你无法改变这一点。

问题 4:当您为函数声明一个与本地或全局变量同名的参数(示例中为 thebest)时,您会产生名称冲突,从而导致该参数接管函数范围内的该名称,并使更高级别的变量不可访问。一般来说,用与作用域内的任何其他变量相同的名称来命名函数参数是一个坏主意。它只是要求您或其他阅读您代码的人在使用该名称时感到困惑并对正在修改或读取的内容做出错误的假设。

执行此操作的一种方法如下:

var thebest = 0;
var all = "whatever";
ec.get("id", function() {
// use the arguments "thebest" and "all" here which are available
// from the higher scope. They don't need to be passed in
alert(thebest);
alert(all);
});
// you can't alert on the value of thebest and all here because
// an asychronous callback won't have yet been called and
// won't have yet modified those values

关于javascript - 在 JavaScript 中访问方法函数内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8766404/

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