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

perl - 如何在不同的堆栈框架中本地化 Perl 变量?

我有一些自动生成的代码,它们在一些代码的不同位置有效地写出以下内容:

在自动生成代码时,一些人认为代码“漂亮”并不是绝对必要的,但我想把它拉到一个子程序中。但是,这会将这些变量本地化在该子例程中。有没有办法在调用堆栈帧中本地化这些变量?

更新:以类似的方式,能够在更高的堆栈帧中运行 eval 会很好。我认为 Python 已经有了这个。如果 Perl 也这样做,那就太好了。

0 投票
4 回答
468 浏览

c++ - 跟踪自动变量的生命周期?

这可能是不可能的,但我想我会问...

有没有人可以想到在不修改变量本身的类的情况下跟踪自动变量是否已被删除?例如,考虑以下代码:

显然,在块之后,pStringBuffer 是一个悬空指针,它可能有效也可能无效。我想要一种方法来拥有一个包含 pStringBuffer 的包装类(带有一个用于 const char* 的强制转换运算符),但断言它引用的变量仍然有效。通过更改引用变量的类型,我当然可以做到(例如,提升 shared_ptr/weak_ptr),但我希望能够在不对引用类型施加限制的情况下做到这一点。

一些想法:

  • 我可能需要更改赋值语法以包含引用的变量(这很好)
  • 我也许可以查看堆栈指针来检测我的包装类是否比引用的类“晚”分配,但这似乎很老套且不标准(C++ 没有定义堆栈行为)。不过,它可以工作。

想法/出色的解决方案?

0 投票
5 回答
4086 浏览

javascript - Javascript/ECMAScript 中函数的范围是什么?

今天我和一位同事讨论了 Javascript 中的嵌套函数:

在这个例子中,试验指出 b 在 a 的主体之外是不可到达的,就像 c 一样。但是,d 是 - 在执行 a() 之后。在ECMAScript v.3 标准中寻找这种行为的确切定义,我没有找到我正在寻找的确切措辞;Sec.13 p.71没有说的是,函数声明语句创建的函数对象要绑定到哪个对象。我错过了什么吗?

0 投票
4 回答
15855 浏览

javascript - 如何在 setTimeout 调用中解决 Var 超出范围的问题

我正在尝试从 setInterval 回调中调用 setTimeout:

setInterval 按预期工作,但 setTimeout 调用失败。我想这个问题与我引用一个不在范围内的变量(myVar)有关。

解决这个问题的最佳方法是什么?

0 投票
11 回答
44528 浏览

java - Java中的花括号本身是什么意思?

我有一些 Java 代码以两种方式使用花括号

第一个语句之后的那些独立的花括号if是什么意思?

0 投票
2 回答
2020 浏览

php - PHP 的 session_set_save_handler 中的回调方法可以是私有的吗?

我正在用 PHP 编写自定义会话处理程序,并尝试将 session_set_save_handler 中定义的方法设为私有。

例如,我可以将 open 函数设置为私有而没有任何错误,但是当我将 write 方法设为私有时,它会向我吠叫。

致命错误:从第 0 行的未知上下文中调用私有方法 Session::write()

我只是想知道这是一个错误还是有办法解决这个问题。除非我当然可以将其公开,但我宁愿不公开。去年在 php.net 上有一个帖子回避了类似的事情,但只是想知道是否有人有任何想法。真的有关系吗?我在我的开发箱上使用 PHP 5.2.0,但肯定可以升级。

0 投票
13 回答
11023 浏览

curly-braces - 您是否使用花括号进行额外的范围界定?

我的意思是在函数、类、if、while、switch、try-catch 需要时使用它。

在我看到这个 SO question 之前,我不知道它可以这样做。

在上面的链接中,Eli 提到“他们使用它来将代码折叠在不属于通常会折叠的函数、类、循环等的逻辑部分中。”

除了上面提到的还有什么其他用途?

使用花括号来限制变量的范围并仅在需要时扩展范围是一个好主意(在“需要访问”的基础上工作)?还是真的很傻?

如何使用范围,以便您可以在不同的范围内使用相同的变量名,但在相同的更大范围内?或者重复使用相同的变量(如果你想使用相同的变量名)并节省解除分配和分配(我认为一些编译器可以对此进行优化?)是更好的做法吗?还是完全使用不同的变量名更好?

0 投票
3 回答
4857 浏览

c++ - 在 C++ 中,通过引用扩展范围是否安全?

在 C++ 中,通过引用扩展范围是否安全?

在代码中,我的意思是:

0 投票
6 回答
22090 浏览

c++ - C++ 中的作用域和返回值

我重新开始使用 c++ 并正在考虑变量的范围。如果我在函数中有一个变量,然后我返回该变量,该变量在返回时是否不会“死”,因为它所在的范围已经结束?

我已经用一个返回字符串的函数尝试了这个,它确实有效。谁能解释一下?或者至少请给我指出一个可以向我解释的地方。

谢谢

0 投票
3 回答
2768 浏览

c++ - 使用 Objective C 中的 C++:如何分配/解除分配?

new目前,我的 Objective C 类通过在创建所有者时执行 a 并delete在销毁时调用来使用 C++ 对象。但是还有其他方法吗?我希望能够声明一个auto_ptr其范围持续到 Objective C 类的生命周期的持续时间。