全局上下文 - 检查未定义

时间:2015-03-23 12:00:16

标签: javascript function typeof

为什么以下代码会导致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');

1 个答案:

答案 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