我从前端开发人员面试编码问题那里得到了这个问题。为什么下面的片段打印它打印的东西?我最初以为会抛出一个ReferenceError "b是未定义的“(因为它看起来像是”我们将要将一个未定义的变量b分配给一个预定的定义变量a),但是结果是"b被定义了,a没有定义,并且没有错误“吗?var a = b = 3;在javascript中是什么?
(function(){
var a = b = 3;
})();
console.log("a defined? " + (typeof a !== 'undefined'));
console.log("b defined? " + (typeof b !== 'undefined'));
发布于 2019-12-05 17:38:45
var只适用于a,而不适用于b。因此,由于b不是用var定义的,并且被分配了一个值,所以它成为全局的。
如果您重写了该函数的工作方式,您可以清楚地看到b没有var。
(function(){
var a;
b = 3;
a = b;
})();
console.log("a defined? " + (typeof a !== 'undefined'));
console.log("b defined? " + (typeof b !== 'undefined'));
发布于 2019-12-05 17:39:47
因为var a = b = 3;的意思是var a = window.b = 3;,所以您要从窗口访问b。
https://stackoverflow.com/questions/59200375
复制相似问题