尝试声明的变量的范围

津扎拉比姆

看一下这段代码,在原型功能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) {
    ...

会不会objtry这里本地化希望代码是:

var obj;
try {
   obj = JSON.parse(message);
} catch (e) {
   ...
詹姆斯·阿拉迪斯(James Allardice)

obj不是本地的吗?

否。声明(与所有声明一样)被提升到执行上下文的顶部。正如您在第二个示例中所显示的那样,代码得到了有效的解释。直到为值分配了obj隐式值undefined

JavaScript(无论如何为ES5)都没有块作用域,因此不可能在块中包含变量声明try封闭功能始终对它可见。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章