При оценке в качестве условия тестирования целые числа, такие как -1, 5 и 17 000 000, все возвращают логическое значение true , поскольку они логически оцениваются как истина, например
if(-1) {
"This is true";
}
else {
"This is false";
}
=> "This is true";
(Примечание: 0 логически оценивается как ложное)
Использование «?»Оператор делает то, что делает этот код.Первый аргумент передается как условие в операторе if , второй аргумент передается как true , а третий аргумент передается как false .
Отсюда и третий результат.
Однако эти целые числа не относятся к типу с true .
True относится к типу Boolean , -1, 5 и 17 000 000 относятся к типу Integer .
Сравнение '==' строго с точки зрения сравнения типов.Даже две вещи имеют одно и то же «значение», но не одного типа, оператор «==» возвращает false :
if(6 == true) {
"This is true";
}
else {
"This is false";
}
=> "This is false";
Даже следующее возвращает false, потому что "true" имеет тип String и true имеет тип Boolean :
if("true" == true) {
"This is true";
}
else {
"This is false";
}
=> "This is false";
Следовательно, первые дварезультаты.
Примечание. Если вы хотите сравнивать значения независимо от типа, используйте оператор "===":
if(6 === true) {
"This is true";
}
else {
"This is false";
}
=> "This is true";
итакже,
if("true" === true) {
"This is true";
}
else {
"This is false";
}
=> "This is true";
Надеюсь, это поможет!