【问题标题】:Is this considered as a bad practice for regarding to scopes and variables? [duplicate]对于范围和变量,这是否被认为是一种不好的做法? [复制]
【发布时间】:2015-07-20 08:14:15
【问题描述】:

假设我有以下代码:

var app = {};

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

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

这是一种不好的做法吗?

【问题讨论】:

  • 是的。在“严格”模式下,它会导致错误。没有var,变量是隐式全局的。
  • 如果没有 var 前缀,如果你在 foo 函数之外使用 alert(bar);,你会看到上面的代码使它可以全局访问。
  • 您不仅应该为解释器使用var 关键字,还应该为人眼使用:乍一看,bar 看起来是全局的。

标签: javascript design-patterns


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢您,我会尽快接受您的答复。
猜你喜欢
  • 2018-01-25
  • 2015-10-29
  • 2018-08-11
  • 2015-07-24
  • 2014-04-20
  • 1970-01-01
  • 2010-10-15
  • 2017-12-18
相关资源
最近更新 更多