为什么以下代码会导致true
三次?
第二步我是false
除外。
function foo() {
this.bar = function () { };
};
console.log("foo - defined : " + typeof window.foo !== 'undefined');
console.log("bar - defined : " + typeof window.bar !== 'undefined');
foo();
console.log("bar - defined : " + typeof window.bar !== 'undefined');
答案 0 :(得分:3)
+
运算符的优先级高于!==
的优先级。你的表达意味着
("bar - defined : " + typeof window.bar) !== 'undefined' // always true (or an exception)
而不是
"bar - defined : " + (typeof window.bar !== 'undefined')
如果明确地执行后者,您将获得预期的输出:
foo - defined : true
bar - defined : false
bar - defined : true