try声明变量的范围

时间:2013-12-05 13:27:35

标签: javascript scope

查看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}}

1 个答案:

答案 0 :(得分:3)

  

在这里尝试不会是本地的吗?

没有。声明被提升(与所有声明一样)到执行上下文的顶部。正如您在第二个示例中所示,代码被有效地解释。在将值分配给obj之前,它隐含地具有值undefined

JavaScript(无论如何,ES5)没有块范围,因此无法将变量声明包含到try块中。它将始终对封闭函数可见。