Ответ 1
попробуйте это
var myVariable = (true condition) ? "true" : "false"
Просто хочу проверить, какой из них лучше подходит для условного присвоения переменной
1-й метод
if (true) { var myVariable = 'True'; } else { var myVariable = 'False'; }
Второй метод
var myVariable = 'False'; if (true) { myVariable = 'True'; }
Я действительно предпочитаю второй вариант без какой-либо конкретной технической причины. Что вы, ребята, думаете?
попробуйте это
var myVariable = (true condition) ? "true" : "false"
Есть два метода, которые я знаю о том, что вы можете объявить значение переменной по условиям.
Способ 1: Если условие оценивается как true, значение в левой части столбца будет присвоено переменной. Если условие оценивается как false, ему присваивается условие справа. Вы также можете вложить множество условий в одно утверждение.
var a = (true)? "true" : "false";
Пример вложения метода 1: Изменить переменную A значение 0, 1, 2 и отрицательное значение, чтобы увидеть, как результат будет приводить к результату.
var a = 1;
var b = a > 0? (a === 1? "A is 1" : "A is not 1") : (a === 0? "A is zero" : "A is negative");
Метод 2: в этом методе, если значение слева от || равен нулю, false, null, undefined или пустой строке, тогда значение справа будет присвоено переменной. Если значение слева от знака || не равен нулю, false, null undefined или пустой строке, тогда значение слева будет присвоено переменной.
Хотя значение слева может быть значением undefined для JS для оценки условия, но переменная должна быть объявлена иначе, будет создано исключение.
var a = 0;
var b = a || "Another value";
Вы можете сделать тройной, который намного короче (и не затмевать фигурные скобки):
var myVariable = (true) ? 'True' : 'False';
Третий способ, когда вы сохраняете только true false в variabel, затем используйте
var myVariable =(condition_written_in_if);
Первое решение использует только одно назначение вместо 1,5 по среднему значению во втором фрагменте кода. С другой стороны, первый фрагмент кода менее читабельен, поскольку люди, не знакомые с JavaScript, могут не понимать, что область действия переменной не является блок-ориентированной функцией-ориентированной - на других языках с синтаксисом C-типа myVariable
не будет доступным вне if
и else
.
Другими словами, оба решения имеют недостатки. Как насчет тройного оператора:
var myVariable = condition? 'True' : 'False';
или если вы не заботитесь о верблюжьем футляре (хотя я понимаю, что это всего лишь пример, а не настоящий код);
var myVariable = (!!condition).toString();
Еще одна интересная вещь: вы можете выполнять несколько назначений на основе условного выражения:
let [long_str, short_str] = a.length > b.length ? [a, b] : [b, a]
Я бы предпочел второй вариант тоже, нет технической причины, но для удобства чтения кода, читаемость очень важна в коде.
Если вы видите второй вариант, с точки зрения обработки будет выполняться только одна проверка, сохраняется некоторое очень минутное время обработки, поэтому во втором случае есть только одна проверка.
Это зависит от использования для меня. Если у меня есть код, который я хочу использовать только для true, но без лишнего кода для false, я буду использовать второй. Если я хочу выполнить некоторый код на true, а другой - на false, я использую первый. Все зависит от использования, но общее правило для меня - написать один раз. Держите его в чистоте, держите его простым и держите его коротким.
Просто для завершения есть еще один способ в дополнение ко всем другим, упомянутым здесь, который заключается в использовании таблицы поиска.
Скажем, у вас есть много возможных значений, вы можете декларативно настроить Map вместо использования оператора if
, switch
или ternary
.
Object map = {
key1: 'value1',
key2: 'value2,
keyX: 'valueX'
};
var myVariable = map[myInput];
Это работает даже для логических значений:
Object map = { true: 'value1', false: 'value2 };
var myVariable = map[myBoolean];
Для логических значений вы, вероятно, сделали бы это "обычным" способом, хотя с помощью логических операторов, специально предназначенных для этого. Хотя иногда это может быть полезно, например:
Обратите внимание, что есть некоторые совпадения между этими преимуществами при использовании карты поиска и рекомендациями по использованию функциональной переменной (замыкание).
let value = function(condition){
if(condition) {
return "true";
} else {
return "false";
}
}
console.log(value(true));