这是否被认为是关于范围和变量的不良做法?

Is this considered as a bad practice for regarding to scopes and variables?

假设我有以下代码:

var app = {};

app.post = {
    foo: function() {
        // defining a variable without the 'var' keyword inside a function.
        bar = "Hello!";
    }
}

我认为我定义 bar 变量的方式不好。我知道你不应该有 global 变量。但是,我在一个对象内部的方法中定义了它。

这是一种不好的做法吗?

是的,这仍然是一种不好的做法。

如果没有 strict mode,这将导致 bar 被隐式声明为全局。在严格模式下,这会导致错误。

始终使用 var 声明新变量,无论作用域如何(尤其是在内部作用域中)。