Должен ли я использовать несколько переменных или один объект в Javascript?

Если я хочу сохранить несколько значений, связанных друг с другом, я должен использовать несколько переменных или один объект? Какой из них будет более эффективным?
Примечание. Эти переменные определены внутри 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?

2 ответа

Решение

РЕДАКТИРОВАТЬ: OP фактически помещает эти переменные в немедленно вызванную функцию, и функция уже является объектом, поэтому просто держите их там.

Оригинальный ответ:

Короче говоря, Объекты.

Вы определяете свои переменные как глобальные? Глобальные переменные загромождают глобальное пространство имен и работают медленнее, чем локальные переменные.

Так как вы использовали let, нет подъема переменных, и ваши переменные имеют область видимости блока, как правило, намного аккуратнее. Любой контекст выполнения, отличный от Array и global (кроме локальных блоков), на самом деле является Object. Таким образом, в зависимости от контекста выполнения, в аккуратном контексте выполнения, таком как функция, замыкание, экземпляр "класса" (ES6 или функции, используемые в качестве классов), у вас уже будет желаемая аккуратность. Поэтому функции и классы, расширяющие Object, являются Objects, наследующими Object.prototype.

Object.prototype полезен при обработке данных, например, Object.assign() полезен для поверхностного копирования и объединения.

Вы можете легко получить доступ к Array.prototype, используя Object.keys() и Object.values ​​(), что позволяет выполнять множество операций, таких как map, filter, Reduce. Вот пример:

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

Так что, вообще говоря, Object - лучшая идея, которая дает более широкие возможности. Конечно, вы можете создавать объекты, когда они вам нужны.

Подводя итог, вы можете выбрать один из трех вариантов: массив, объект (включая функции, классы (блоки блоков)) или глобальный. Глобалов следует избегать, объекты могут доминировать над массивами.

Первый вариант будет более эффективным, поскольку он обеспечивает большую гибкость по сравнению с переменными, если вы хотите передать любое значение любому методу, который вам не нужно обрабатывать целиком json. Убедитесь, что вы правильно назвали свою переменную.

Другие вопросы по тегам