【问题标题】:Should I use multiple variables or a single object in Javascript? [closed]我应该在 Javascript 中使用多个变量还是单个对象? [关闭]
【发布时间】:2018-10-23 14:29:41
【问题描述】:

如果我想存储多个相互关联的值,我应该使用多个变量还是单个对象?哪个效率更高?
注意:这些变量是在 IIFE 中定义的,所以它们不是全局变量。

例子:

// Option 1
let value1 = "Value 1";
let value2 = 2;
let value3 = true;

// Option 2
let value = {
    "1": "Value 1",
    "2": 2,
    "3": true
};

// Which one is more efficient?

【问题讨论】:

    标签: javascript performance variables javascript-objects memory-efficient


    【解决方案1】:

    编辑:OP 实际上将这些变量放在一个立即调用的函数中,并且一个函数已经是一个对象,因此只需将它们保留在那里。

    原答案:

    简而言之,对象。

    您是否将变量定义为全局变量? Global variables clutter up the global namespace and are slower to look up than local variables.

    由于您使用了let,因此没有变量提升,并且您的变量具有块范围,趋向于更整洁。任何不同于 Array 和 global(本地块除外)的执行上下文实际上都是一个 Object。因此,根据执行的上下文,在一个整洁的执行上下文中,如函数、闭包、“类”的实例(ES6,或用作类的函数),你已经拥有了你想要的整洁度。因此,扩展 Object 的函数和类是 Objects,继承 Object.prototype。

    Object.prototype 在处理数据时很有用,例如 Object.assign() 对于浅层复制和合并很有用。

    您可以使用 Object.keys() 和 Object.values() 轻松访问 Array.prototype,允许进行许多操作,例如 map、filter、reduce。这是一个例子:

    Object.filter = (obj, predicate) => Object.keys(obj)
        .filter( key => predicate(obj[key]))
        .reduce( (res, key) => (res[key] = obj[key], res), {} );
    

    所以一般来说 Object 是一个更好的主意,可以带来更广泛的可能性。当然,您也可以在需要时创建对象。

    总结一下,您的 3 个选择是数组、对象(包括函数、类、(没关系块))或全局。全局要避免,对象可能会支配数组。

    【讨论】:

    • 我在 IIFE 中定义这些变量,所以它们不是全局变量。
    • 一个函数,包括 IIFE 是一个对象。因此,您的问题实际上是 IIFE 与“香草”对象,您已经需要一个 IIFE,所以将它们保留在那里。
    • 究竟是什么意思?
    • 这意味着您可以将所有 Object.prototype 也与 Function 一起使用。
    • 如果我真的不需要操作对象内部的数据怎么办?在这种情况下变量会更好吗?我只是用它来存储一些数据。
    【解决方案2】:

    选项一会更有效,因为它为变量提供了更大的灵活性,如果您想将任何值传递给您不需要处理整个 json 的任何方法。确保正确命名变量。

    【讨论】:

    • 一个对象不是 JSON 并且 value["1"] 是原子访问(单个操作),不需要处理整个对象。
    猜你喜欢
    • 2019-06-03
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    相关资源
    最近更新 更多