Во-первых, я объясню, что случилось в коде вы показали, просто чтобы убедиться, что вы его понимаете. Возможно, вы уже понимаете первую половину, но, поскольку вы говорите, что вы очень смущены, я предполагаю, что вы этого не сделаете.
myVariable = undefined ? "truthy" : "falsey";
// result: "falsey"
Здесь вы смотрите на значения, undefined
, и задает вопрос: это truthy или falsey? Исходя из этого вы выбираете строку. Затем вы сохраняете эту строку в myVariable
. Это фактически то же самое, как этот код:
var myVariable;
if (undefined) {
myVariable = 'truthy';
} else {
myVariable = 'falsey';
}
Поскольку undefined
всегда falsey, в конце концов, myVariable
содержит строку 'falsey'
.
Вот ваш второй фрагмент кода:
myVariable = typeOf someUndefinedVariable ? "truthy" : "falsey";
// result: "truthy"
Во-первых, я должен отметить, что typeOf
не является допустимым функции или оператора в любом выполнения Javascript я знаю. Я предполагаю, что это была опечатка, и вместо этого вы использовали вместо этого typeof
. Приведенный выше код, как написано, должен вызывать синтаксическую ошибку. Исправлено, у нас есть ...
myVariable = typeof someUndefinedVariable ? "truthy" : "falsey";
// result: "truthy"
И для наглядности, давайте перепишем его как если/иначе:
var myVariable;
if (typeof someUndefinedVariable) {
myVariable = 'truthy';
} else {
myVariable = 'falsey';
}
В другом отвечающем имеют pointed out, TypeOf всегда будет возвращать, как строка , тип символа, который вы ему даете.
typeof(someUndefinedVariable);
"undefined"
И поскольку все строки, за исключением пустой строки, являются правдивыми, вы получаете правдивые ответы.
В Javascript есть только 7 значений false.
false Boolean false
undefined If a symbol is not defined at all
null A defined symbol, but it has no value inside
0 Numeric positive 0
-0 Numeric negative 0
'' or "" Empty string
NaN Magic value "Not a Number"
Все остальные значения в JavaScript, являются truthy.
- любая строка за исключением пустой строки
- любое число, кроме 0
- любого массива, включая пустой массив
- любой объект, включая пустой объект
- функций
- и т.д. ...
В какой среде вы используете этот код? Для меня ваш второй фрагмент вызывает исключение, поэтому 'myVariable' никогда не будет присваиваться ни« правдивым », ни« ложным ». Вы уверены, что 'someUndefinedVariable' не определен? –
@PeterHorne Я использую только блокнот ++, да, я уверен, что someUndefinedVariable не определен –