вернуть! 1 в JavaScript - PullRequest
       30

вернуть! 1 в JavaScript

17 голосов
/ 24 ноября 2011

Я только что натолкнулся на функцию в javascript, которая имеет return !1

Мне просто интересно, что это на самом деле означает?

Зачем вам return !1 или return !0

Может кто-нибудь объяснить, пожалуйста, что это значит?

Вот функция, с которой я столкнулся:

function convertStringToBoolean(a) {
    typeof a == "string" && (a = a.toLowerCase());
    switch (a) {
    case "1":
    case "true":
    case "yes":
    case "y":
    case 1:
    case !0:
        return !0;
    default:
        return !1
    }
}

Заранее спасибо!

Ответы [ 3 ]

18 голосов
/ 24 ноября 2011

В ответ на ваш вопрос:

  • return !1 эквивалентно return false
  • return !0 эквивалентно return true

В спецификации - 11.4.9 Оператор логического НЕ - в нем говорится, что когда вы ставите восклицательный знак ! впереди, результат оценивается как логический, а возвращается противоположное.

Пример :

var a = 1, b = 0;
var c = a || b;
alert("c = " + c + " " + typeof c); // here typeof c will be "number"

a = !0, b = !1;
c = a || b;
alert("c = " + c + " " + typeof c); // here typeof c will be "boolean"

Я чаще всего вижу это в коде, переданном через оптимизатор Google JS .Я думаю, что в основном это делается для достижения краткости кода.

Он часто используется, когда требуется строго логический результат - вы можете увидеть что-то вроде !!(expression).Поиск в jQuery, например.

10 голосов
/ 24 ноября 2011

Это кажется особенно глупым способом возврата true или false

0 голосов
/ 24 ноября 2011

Здесь проверяется код:

  • , чтобы ничего не возвращать или ничего не делать в следующих случаях: "case 1", "case true", "case yes", "case y", "Case 1"
  • и в случае: "case !0" return "true"
  • , если ни один из вышеперечисленных случаев не выполнен по умолчанию, возвращается «false»
...