看一下这段代码,在原型功能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) {
...
obj不是本地的吗?
否。声明(与所有声明一样)被提升到执行上下文的顶部。正如您在第二个示例中所显示的那样,代码得到了有效的解释。直到为值分配了obj
隐式值undefined
。
JavaScript(无论如何为ES5)都没有块作用域,因此不可能在块中包含变量声明try
。封闭功能始终对它可见。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句