问题标签 [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 投票
7 回答
16997 浏览

ruby - 有没有办法从 Ruby 中的实例调用私有类方法?

self.class.send :method, args...当然,除此之外。我想在类和实例级别都提供一个相当复杂的方法,而无需复制代码。


更新:

@Jonathan Branam:这是我的假设,但我想确保没有其他人找到解决方法。Ruby 中的可见性与 Java 中的可见性非常不同。您也很正确,private它不适用于类方法,尽管这将声明一个私有类方法:

0 投票
6 回答
95340 浏览

javascript - 如何从 $.getJSON 函数返回变量

我想返回StudentId使用范围之外的其他地方$.getJSON()

我想这与范围界定有关,但它似乎与 c# 的工作方式不同

0 投票
15 回答
12712 浏览

php - PHP:$_SESSION - 在 $_SESSION 变量中存储临时使用的数据的优缺点是什么

我最近开始经常做的一件事是在任务开始时检索一些数据并将其存储在 $_SESSION['myDataForTheTask']中。

现在这样做似乎很方便,但我对使用这种方法的性能、安全风险或类似情况一无所知。它是由具有更多专业知识的程序员经常做的事情,还是更像是业余的事情?

例如:

0 投票
12 回答
1677 浏览

perl - Perl:CGI 和 DBI 模块的变量范围问题

我遇到了以前从未遇到过的变量范围问题。我正在使用 Perl 的 CGI 模块和对 DBI 的 do() 方法的调用。这是代码结构,简化了一点:

#1 占位符变量评估为好像它未初始化。其他两个占位符变量有效。

问题:为什么 %in 散列在 do() 的上下文中不可用,除非我将它用双引号(#2 占位符)括起来或将值重新分配给新变量(#3 占位符)?

我认为这与 CGI 模块的 ReadParse() 函数如何将范围分配给 %in 散列有关,但我不太了解 Perl 范围,无法理解为什么 %in 在顶层可用,但不能在我的内部使用() 陈述。

如果有人确实了解范围界定问题,是否有更好的方法来处理它?将所有 %in 引用用双引号括起来似乎有点混乱。为每个查询参数创建新变量是不现实的。

为了清楚起见,我的问题是关于变量范围的问题。我意识到 ReadParse() 不是使用 CGI 获取查询参数的推荐方法。

我正在使用 Perl 5.8.8、CGI 3.20 和 DBI 1.52。提前感谢任何阅读本文的人。

@Pi 和 @Bob,感谢您的建议。预先声明 %in 的范围没有效果(我总是使用严格的)。结果与之前相同:在 db 中,col1 为空,而 cols 2 和 3 设置为预期值。

作为参考,这里是 ReadParse 函数(见下文)。它是 CGI.pm 的一部分的标准函数。根据我的理解,我并不是为了设置范围而初始化 %in 哈希(除了满足严格之外),因为在我看来该函数可以处理:

我想我的问题是在 do() 的上下文中获取 %in 哈希的最佳方法是什么?再次感谢!我希望这是为我的原始问题提供附加信息的正确方法。

@Dan:我听说过 &ReadParse 语法。我通常会使用 CGI::ReadParse() 但在这种情况下,我认为最好坚持CGI.pm 文档的确切方式。

0 投票
28 回答
88478 浏览

c# - 为什么“catch”或“finally”范围内的“try”中没有声明变量?

在 C# 和 Java(可能还有其他语言)中,在“try”块中声明的变量不在相应的“catch”或“finally”块的范围内。例如,以下代码无法编译:

在这段代码中,catch 块中对 s 的引用会发生编译时错误,因为 s 仅在 try 块的范围内。(在 Java 中,编译错误是“s cannot be resolved”;在 C# 中,是“The name 's' does not exist in the current context”。)

这个问题的一般解决方案似乎是在 try 块之前声明变量,而不是在 try 块中:

然而,至少对我来说,(1)这感觉像是一个笨拙的解决方案,并且(2)它导致变量的范围比程序员预期的更大(方法的整个其余部分,而不是仅在try-catch-finally)。

我的问题是,这种语言设计决策背后的基本原理是什么(在 Java、C# 和/或任何其他适用的语言中)?

0 投票
2 回答
430 浏览

sql-server - 存储过程中适当范围的事务

假设我有一个管理自己的事务的存储过程

如果我从现有事务中调用此 proc,则 proc 可以回滚外部事务。

如何在存储过程中正确确定事务的范围,以便存储过程不回滚外部事务?

0 投票
5 回答
68053 浏览

c# - 使代码内部化,但可用于其他项目的单元测试

我们将所有的单元测试放在他们自己的项目中。我们发现我们必须将某些类公开而不是仅用于单元测试的内部类。无论如何要避免这样做。使类公开而不是密封的内存含义是什么?

0 投票
86 回答
1555124 浏览

javascript - JavaScript 闭包是如何工作的?

你会如何向了解它们所包含的概念(例如函数、变量等)但不了解闭包本身的人解释 JavaScript 闭包?

我在 Wikipedia 上看到了 Scheme 示例,但不幸的是它没有帮助。

0 投票
2 回答
1263 浏览

python - python中导入类的范围是什么?

请原谅模糊的标题。如果有人有建议,请告诉我!也请用更合适的标签重新标记!

问题

我想让一个导入类的实例能够查看导入器范围(全局、本地)内的东西。由于我不确定这里工作的确切机制,我可以用片段而不是文字来更好地描述它。

然后从一个迭代会话中运行这段代码,会有很多NameErrors

这类任务是否有共同的习语/模式?我是不是完全找错树了?

0 投票
8 回答
10187 浏览

c - 为什么 strcpy 会触发全局变量的分段错误?

所以我有一些C代码:

这会编译、运行并按其外观运行。但是,如果将一个或两个字符指针声明为全局变量,则 strcpy 会导致分段错误。为什么会这样?显然我对范围的理解存在错误。