Почему это правда? "false": "true" возвращает "true"?

Почему это происходит, когда я делаю

(!true) ? 'false' : 'true'

он возвращает 'true'?

Ответ 1

Это просто означает

if (!true) {
  return 'false';
} else {
  return 'true';
}

!true (не верно) означает false, поэтому возвращается else.

Ответ 2

Синтаксис A ? B : C означает, что если A является TRUE, тогда возвращайте значение B. Else возвращает значение C. Поскольку A является FALSE, оно возвращает значение C, которое бывает true.

Ответ 3

Поскольку приведенное выше эквивалентно:

if (false) {
    return 'false';
} else {
    return 'true';
}

Хотя, возможно, путаница исходит из разницы между:

if (false) // which is false

и

if (false == false) // which is true

Ответ 4

Потому что (!true) является ложным, а затем выбирается правая сторона :.

Ответ 5

Это можно расходовать на:

if(!true)
{
   return 'false';
}
else
{
   return 'true';
}

Ответ 6

if(!true) эквивалентен if(!true= true), который эквивалентен if(false=true), который равен false. Поэтому return (true), который находится на ложной стороне инструкции if.

Ответ 7

Здесь возникает путаница из-за использования строковых литералов для представления булевых значений. Если вы отмените 'false' и 'true', это имеет смысл:

(!true) ? 'true' : 'false'

Вернет строковый литерал false, который сильно отличается от значения boolean.

Ваше исходное утверждение (!true) ? 'false' : 'true' читается как

"Если это не так, верните строковый литерал true".

Утверждение, которое я опубликовал, сначала читается как

"Если не верно, то верните строковый литерал false".

Что, если вы знаете противоположное значение (не), значение true равно false, тогда оно объясняет проиллюстрированную логику.