问题标签 [scope]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
69783 浏览

jquery - 在 jQuery 事件中控制“this”的值

我使用 jQuery 创建了一个“控件”,并使用 jQuery.extend 来帮助使其尽可能地面向对象。

在我的控件初始化期间,我连接了各种点击事件,如下所示

请注意,我将“this”作为绑定方法中的数据参数。我这样做是为了获取附加到控件实例的数据,而不是从触发点击事件的元素中获取数据。

这很好用,但是我怀疑有更好的方法

在过去使用过 Prototype 之后,我记得一种绑定语法,它允许您控制事件中 'this' 的值。

什么是jQuery方式?

0 投票
23 回答
26605 浏览

oop - 过程编程比 OOP 有什么优势吗?

[编辑:] 早些时候,我问这个问题可能是一个框架不佳的问题,关于何时使用 OOP 与何时使用过程编程——一些回答暗示我在寻求帮助理解 OOP。相反,我经常使用 OOP,但想知道何时使用过程方法。从回复来看,我认为有一个相当强烈的共识,即 OOP 通常是一种更好的全方位方法,但如果 OOP 架构从长远来看不会提供任何重用优势,则应该使用过程语言。

然而,我作为 Java 程序员的经验却并非如此。我看到了一个庞大的 Java 程序,由 Perl 大师用我编写的代码的 1/10 重写,并且看起来和我的 OOP 完美模型一样健壮。我的架构看到了大量的重用,但更简洁的程序方法产生了一个更好的解决方案。

因此,冒着重复自己的风险,我想知道在什么情况下我应该选择程序而不是面向对象的方法。您将如何提前识别 OOP 架构可能过度使用的情况以及更简洁和高效的过程方法。

任何人都可以提出这些场景的例子吗?

有什么好方法可以提前确定一个项目可以更好地通过程序编程方法来服务?

0 投票
7 回答
11942 浏览

php - PHP定义包含文件的范围

我有很多 PHP 视图文件,我曾经使用简单的包含语句将它们包含在我的控制器中。它们都使用在视图类中声明的方法,它们就像 $view->method(); 但是,我最近决定,如果包含也由这个视图类完成会更好。但是,这会更改包含文件的范围,因此不再定义 $view。这是一个代码示例:

现在我在视图类中使用它解决了这个问题:

无论如何要声明包含文件的范围,还是这是解决问题的最佳方法?

这些例子是粗略的简化。

0 投票
3 回答
1472 浏览

asp.net - 控制Repeater中的范围,有和没有UpdatePanel

为什么以下给我行 B(Label2,UpdatePanel 外部)的编译错误,而不是 A 行(Label1,UpdatePanel 内部)的编译错误?我本来希望这两行都会出错,因为两个控件都在同一个中继器内,因此不应在中继器外部直接访问,因为没有一个唯一的实例。

0 投票
12 回答
11799 浏览

python - 如何在 python 中创建新范围

在许多语言(和地方)中,通过创建这样的块来创建本地范围是一种很好的做法。

如何在 python 中实现这一点而不会出现意外的缩进错误并且不使用某种if True: 技巧

0 投票
4 回答
21574 浏览

c++ - 全局变量和范围 - C++

我在制作全局变量时遇到了小问题。我正在使用 Visual Studio 2008 和标准 C++。

我有两个项目,一个是静态库,第二个是使用这个库的测试程序。我在 global.h 中有一个全局变量,例如

我有一个 global.cpp 我正在初始化这个变量。这个变量在我的库项目中使用。我正在从测试项目中为这个变量设置一个值,但该值没有反映在库项目中。

我已经调试过,它在测试项目中显示了新值,但是当控件到达库项目时,这个变量值显示为空。那么这个全局变量的作用域是否仅限于它所属的项目呢?

还是有更好的方法来做到这一点?我不想修改我的库中的函数或构造函数参数来传递这个值。

任何帮助都会很棒。

编辑:

这是这个变量在 global.cpp 中的声明方式

这就是我在图书馆中使用它的方式

谢谢

0 投票
1 回答
979 浏览

php - PHP:超出 foreach 循环范围的数组修改

如何将新的键/值对添加到嵌套 foreach 循环内的现有数组中,并使该对在循环范围之外持续存在?

谢谢

0 投票
3 回答
14012 浏览

javascript - Greasemonkey 脚本和函数作用域

这是我的脚本代码:

我唯一的问题是单击 Hello World 时页面找不到 test() 函数。请告诉我,我不必像这样通过将函数innerHTML'ing 到页面上来解决。还有其他方法吗?

谢谢。

0 投票
5 回答
43631 浏览

python - 使用 Python 的 timeit 获取“未定义全局名称 'foo'”

我试图找出执行 Python 语句需要多少时间,所以我在网上查看并发现标准库提供了一个名为timeit的模块,声称可以做到这一点:

但是,这会产生错误:

我还是 Python 的新手,我并不完全理解它所具有的所有范围问题,但我不知道为什么这个片段不起作用。有什么想法吗?

0 投票
5 回答
22517 浏览

jquery - 如何在 JQuery $.each 函数中编辑全局变量?

好的,所以这个标题可能不能很好地解释我的问题。希望这是有道理的。这也是我第一个使用 jQuery 的应用程序,如果我在做一些愚蠢的事情,请原谅我。

我有以下功能:

getJSON 正确地抓取了 JSON 对象。它返回如下内容:

我正在调试并且确信 data[i] 正确包含从 JSON 对象中获取的图像路径。但是,在调用 getRandomImages() 之后,我查看了我的全局 imagesArray 并注意到没有任何更改。我猜它正在创建 imagesArray 的副本,而不是获取实际的副本。

有人能告诉我我需要做什么才能让我的全局 imagesArray 在 $.each 块中更新吗?我需要以某种方式通过引用传入 imagesArray 吗?对不起,我有点迷路了。

谢谢您的帮助。

编辑:一些背景信息。我正在从数据库中填充一组随机图像位置。我不想一次将数据库中的所有图像加载到数组中,因为太多了。所以,我有一个计数器来跟踪我在图像阵列中的位置。处理完一张图片后,我将指针移至下一张图片。如果我到达终点,我需要抓取更多随机图像。这就是调用上述 js 函数的地方;它调用 createImageArray.php 从数据库中获取 x 个随机图像并返回一个数组。然后我想将这些图像位置存储在我的全局 imagesArray 中。

我不确定如何重构我的代码以考虑 .getJSON 的异步特性。