- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在《Eloquent JavaScript》第一版中,第 67 页的“异常后清理”子章节下有以下代码:
var currentThing = null;
function processThing(thing) {
var prevThing = currentThing;
currentThing = thing;
/* do complicated processing... */
currentThing = prevThing;
}
最终将prevThing
重新分配给currentThing
的逻辑是什么?
这里,我们已经将 currentThing
赋值给 prevThing
,然后将 currentThing
更改为 thing
,那又怎样是上次重新分配的味道吗?
最佳答案
最后一个赋值并非无用,因为 currentThing
是一个全局变量。
为了说明这一点,作者提出了一些假设场景,暂时,当 /* 进行复杂处理... */
发生时,您希望获得 的值>thing
全局公开(通过 currentThing
)供其他人使用。
处理后,作者告诉我们,在这种假设场景中,您希望将 currentThing
恢复到处理开始之前的值(存储在 prevThing
中的值)。
所有这些都发生在错误处理的上下文中。作者创造了如此复杂的场景是为了告诉你,如果你想在计算后重置某个变量,你应该将计算包装在 try
block 中并在finally
中进行重置,如下所示:
var currentThing = null;
function processThing(thing) {
var prevThing = currentThing;
currentThing = thing;
try {
/* do complicated processing... */
} finally {
// now you'll reset currentThing to its previous value,
// no matter if the complicated processing errors or not
currentThing = prevThing;
}
}
这样复杂处理可能引发的任何错误都不会影响 currentThing
的重置。
关于javascript - 异常后的清理(如 Eloquent JavaScript 中所述),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49524964/
我正在阅读 Joshua Bloch 的书 effective java。在“favor composition over inheritance”的第 16 条中,他给出了一个使用 HashSet
我一直在阅读 Adam Dymitruk's git workflow ,这一切都很有道理。 我找不到任何讨论的一件事是修复旧版本中的错误。想象一下带有 7.0、7.1、7.2、7.3、7.4、7.4
我有几个类为“itemWerk”的 div。我想切换它们,以便我可以放大它们并将它们设置回原来的大小和位置。 在here 上,我已经走了很远了.这只是我无法开始工作的第二个功能中的定位。我不太确定我应
我正在尝试创建一个检测 USB 插入的服务。为此,我必须通过 RegisterDeviceNotification(HANDLE, LPVOID, DWORD)< 创建一个 HDEVNOTIFY/.
我是一名优秀的程序员,十分优秀!