Должен ли я использовать несколько переменных или один объект в 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. Убедитесь, что вы правильно назвали свою переменную.