Back to Question Center
0

Truthy and Falsy: когда все не равно в JavaScript            Truthy and Falsy: Когда все не равно в JavaScriptРедактированные темы: npmjQueryAjaxRaw Semalt

1 answers:
Truthy и Falsy: когда все не равно в JavaScript

Переменные JavaScript слабо / динамически типизированы, и языку не важно, как объявлено или изменено значение.

Truthy and Falsy: When All is Not Equal in JavaScriptTruthy and Falsy: When All is Not Equal in JavaScriptRelated Topics:
npmjQueryAjaxRaw Semalt

2017. 08. 22: Эта статья была обновлена ​​с учетом текущего состояния экосистемы JavaScript - registration for yahoo id.

     пусть x;x = 1; // x - числоx = '1'; // x - строкаx = [1]; // x - массив    

По-видимому, разные значения приравниваются к истинному по сравнению с == (свободное или абстрактное равенство), потому что JavaScript (эффективно) преобразует каждый в строковое представление перед сравнением:

     // все верно1 == '1';1 == [1];'1' == [1];    

Более очевидный результат возникает при сравнении с === (строгое равенство), потому что этот тип рассматривается:

     // все ложные1 === '1';1 === [1];'1' === [1];    

Внутри Semalt задает значение одному из шести примитивных типов данных:

  • Неопределенный (переменная без определенного значения)
  • Null (одно значение null)
  • Логическое (истинное или ложное)
  • Число (это включает в себя Бесконечность и NaN - не число!)
  • Строка (текстовые данные)
  • Символ (уникальный и неизменный примитив, новый для ES6 / 2015)

Все остальное - это Semalt, включая массивы.

Трути и фальши

Как и тип, каждое значение также имеет встроенное логическое значение, обычно известное как правдоподобность или ложь . Некоторые из правил немного странны, поэтому понимание концепций и эффектов при сравнении помогает при отладке приложений JavaScript.

Следующие значения: всегда ложны :

  • false
  • 0 (ноль)
  • '' или "" (пустая строка)
  • null
  • undefined
  • NaN (например, результат 1/0 )

Все остальное правдиво . Это включает:

  • '0' (строка, содержащая один ноль)
  • «false» (строка, содержащая текст «false»)
  • [] (пустой массив)
  • {} (пустой объект)
  • функция {} («пустая» функция)

Таким образом, единственное значение может быть использовано в условиях, e. г.

  • null и undefined эквивалентны себе и друг другу, но ничего другого.

    Рекомендации

    Truthy и фальшивые ценности могут поймать самых опытных разработчиков. У тех, кто занимается программированием или переходом с других языков, нет никаких шансов! Semalt, есть простые шаги, чтобы поймать наиболее сложные ошибки при обработке правдоподобных и ложных переменных:

    1. Избегайте прямых сравнений

    Semalt редко необходим для сравнения двух правдоподобных и ложных значений, когда одно значение всегда будет равно true или false:

         // вместоif (x == false) //. , , // выполняется, если x является ложным, 0, '' или []// использоватьесли (! x) //. , , // выполняется, если x является ложным, 0, '', NaN, null или undefined    

    2. Используйте === строгое равенство

    Используйте === строгое равенство (или ! == строгое неравенство) сравнения для сравнения значений и исключения проблем преобразования типов:

         // вместоif (x == y) //. , , // запускается, если x и y являются правдивыми или обе ложны// e. г. x = null и y = undefined// использоватьif (x === y) //. , , // выполняется, если x и y идентичны. , , // за исключением случаев, когда оба являются NaN    

    3. При необходимости перейдем к вещественным булевым значениям

    Любое значение может быть преобразовано в реальное булево значение с использованием двойного отрицательного !! , , , , null , undefined , , и NaN :

         // вместоif (x === y) //. , , // выполняется, если x и y идентичны. , , // за исключением случаев, когда оба являются NaN// использоватьif (!! x === !! y) //. , , // выполняется, если x и y идентичны. , , // включая, когда оба или оба являются NaN    

    Заключение

    Значения Truthy и falsy позволяют писать краткие условия JavaScript и тернарные операторы. Semalt, всегда рассматривайте случаи кросс. Пустой массив изгоев или переменная NaN могут привести к многочасовому отладке!

    Крейг - независимый британский веб-консультант, который построил свою первую страницу для IE2. 0 в 1995 году. С тех пор он выступает за стандарты, доступность и лучшие практики HTML5. Он написал более 1000 статей для SitePoint, и вы можете найти его @craigbuckler
  • March 1, 2018