【问题标题】:What will happen if variable is not declared in Javascript?如果变量没有在 Javascript 中声明会发生什么?
【发布时间】:2018-05-01 21:09:00
【问题描述】:

例如,我有这样的代码:

var Player = function(param){
    var self = {
    x:0,
    y:0,
    spdX:0,
    spdY:0,
    id:"",
    }
    self.hp = 24;
}

我需要在 var self = {} 中添加 hp 吗?

【问题讨论】:

  • 不...您所做的是标准做法。您可以在按照您的方式声明对象后添加属性
  • 唯一的问题是,如果在整个代码中定义属性和对象,跟踪它们会变得很麻烦。但这对于阅读代码的人来说是个问题——javascript 不会抱怨。
  • 您的问题不正确。当您填充该属性时,该属性为declared。这就是它的完成方式。每当您想将属性添加到已定义的对象时,您都可以这样做。您不要将 var 用于对象属性。
  • 。这就是您问题的答案。
  • 这不是一个变量。不能在 JavaScript 中声明属性。

标签: javascript variables memory memory-leaks declaration


【解决方案1】:

我相信其他人误解了这个问题。如果我理解正确,您是在询问向现有对象动态添加属性的任何潜在问题(与首次声明对象时相比)。答案是这样做很好,是常见的 JS 实践,应该不会对性能产生负面影响。

如果您来自静态类型语言背景,这是一个完全合理的问题。例如,在 TypeScript 中,您不能在定义对象后为其添加属性(请参阅this question)。这样做是为了:

  1. 类型安全(远非主要原因)

  2. 性能(可能)。

【讨论】:

  • 但问题不在于 typeScript。
  • @charlietfl 我稍微澄清了我的答案的第一部分。但是,我的意图只是以 TypeScript 为例来确认问题的有效性,它恰好是 JavaScript 的超集。
【解决方案2】:

没有

完全没问题。放松。你的代码不会爆炸。呼吸。呼吸!好吧,既然你已经安顿下来了……

性能方面,相同*:Performance test

语法方面,它们都用于主要文档站点:developer.mozilla.org & W3Schools

*尽可能接近

【讨论】:

    猜你喜欢
    • 2011-07-06
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 2021-10-04
    • 2019-06-10
    相关资源
    最近更新 更多