查看this code,在原型函数onDiagram
第30行中,我们有:
proto.onDiagram = function (message, address) {
message = this.arrayBufferToString(message);
try {
var obj = JSON.parse(message);
} catch (e) {
return;
}
if (!obj) {
return;
}
switch (obj.type) {
...
这里obj
try
不会var obj;
try {
obj = JSON.parse(message);
} catch (e) {
...
吗?期望代码是:
{{1}}
答案 0 :(得分:3)
在这里尝试不会是本地的吗?
没有。声明被提升(与所有声明一样)到执行上下文的顶部。正如您在第二个示例中所示,代码被有效地解释。在将值分配给obj
之前,它隐含地具有值undefined
。
JavaScript(无论如何,ES5)没有块范围,因此无法将变量声明包含到try
块中。它将始终对封闭函数可见。