Javascript/Node.JS - возможно ли иметь переменную с несколькими определениями?
Можно ли определить переменную как две разные вещи без использования массива?
Так, например:
var myVar = "asd" || "fgh" // or maybe it's "asd" && "fgh"?
var message = "asdtest"
var otherMessage = "fghtest"
if (message === myVar + "test") {
console.log("success!")
}
else if (otherMessage === myVar + "test") {
console.log("success!")
}
5 ответов
Нет, переменная может содержать только одну вещь одновременно. Если вы хотите несколько вещей, вы должны использовать массив.
var myVar = "asd" || "FGH"
Эта строка кода будет оценивать "asd"
чтобы увидеть, правда ли это, и это так. Поэтому myVar установлен на "asd". Если бы вместо этого это было "ложь", например, если вы сделали var myVar = null || "fgh"
, тогда он установит myVar ко второй части, таким образом, сделав его равным "fgh".
Это только одно определение. Переменная будет присвоена значению выражения с правой стороны. В принципе это тоже самое что и
var x = 1 + 2;
Как ||
работает то, что это логическое ИЛИ: он возвращает первое "истинное" значение (например, непустую строку, все значения верны, если они не являются false
, 0
, ""
, null
, undefined
, или же NaN
). Это полезно, если вы хотите установить значения по умолчанию для "пропущенных" значений, например:
var size = specifiedSize || 100;
В твоем случае это просто asd
,
Вы можете использовать выражение функции
var myVar = bool => bool ? "asd" : "fgh";
console.log(myVar(1)); // `"asd"`
console.log(myVar(0)); // `"fgh"`
Переменная может содержать только одно значение. Однако ваша переменная может ссылаться на массив или объект, который может содержать более одного значения.
Вы можете использовать объекты или массивы для хранения всех возможных значений:
var myVarObj = {
p1: "asd"
p2: "fgh"
};
var myVarArr = ["asd", "fgh"];
for (var property in myVarObj) {
if (message === myVarObj[property] + "test") {
console.log("success!");
}
}
for (var value in myVarArr) {
if (message === value + "test") {
console.log("success!");
}
}