Что означает восклицательный знак перед переменной в JavaScript?

Я пытаюсь изучить JavaScript, просмотрев какой-то код в приложении, и я продолжаю видеть !variable в условиях if. Например:

if (!variable.onsubmit || (variable.onsubmit() != false)) {

Что это? Какой-то тест, если переменная пуста?

Ответ 1

! является логическим не оператором в JavaScript.

Формально

!expression читается как:

  • Возьмите expression и оцените его. В вашем случае variable.onsubmit
  • Приведите результат этой оценки и преобразуйте ее в логическое. В вашем случае, поскольку onsubmit, скорее всего, является функцией, это означает - если функция undefined - возвращает false, в противном случае вернет true.
  • Если эта оценка истинна, верните false. В противном случае верните true.

В вашем случае

В вашем случае !variable.onsubmit означает return true, если функция не определена (и, следовательно, является ложью), в противном случае возвращает false (поскольку существует определенная функция).

Проще говоря - !variable означает значение истины variable и отрицает его.

Таким образом, if (!variable) { войдет в предложение if, если переменная false (или принуждает к false)

Всего

if (!variable.onsubmit || (variable.onsubmit() != false)) {

Средство - проверить, определено ли variable.onsubmit и правдиво (истинно), тогда он проверяет, возвращает ли вызов onsubmit результат, который приводит к истинному. В короткой строке он проверяет, нет ли onsubmit или он возвращает true.

В следующий раз, как мне это найти?

Ответ 2

Это оператор отрицания, используемый для проверки истинности переменной.

var myVariable = 1;

if ( ! myVariable )
{
    // myVariable evaluates as false
}

if ( myVariable )
{
    // myVariable evaluates as true
}