@Kleschevnikov

Почему while (i) – более краткий вариант while (i != 0)?

Почему while (i) – более краткий вариант while (i != 0)

?
Подскажите пожалуйста как это можно просто объяснить?
  • Вопрос задан
  • 741 просмотр
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Внутри скобок while( ) выражение приводится к одному из двух: true или false. Цикл крутится, пока в скобках всё ещё получается true.

Например:
var i = 5;

i != 0            // true, вальсируем дальше
5                 // любое ненулевое число становится true
"yes"             // непустая строка тоже true
{a: "A", b: "B"}  // объекты всегда true

0                 // false
""                // пустая строка, false
undefined         // false
null              // false
NaN               // false


Насчёт чисел ещё раз: только 0 даёт false, остальные числа true.
Именно поэтому там, где интересует сравнение числа с нулём, удобно-коротко писать прямо число.

Ещё
Ещё откройте для себя логические операторы &&, ||, ! их можно использовать не только для проверки двойных условий, но и, например, задавать значение на случай нуля:
var a = 0;

var b = a || 42; // если a пустое. то в b попадёт запасное значение 42.


А вот короткий способ привести любое значение к true или false, как внутри скобок while(): дописать перед ним два восклицательных знака!!expressionТут дважды применяется ! – логическое НЕ, которое уже при первом применении сделает из выражения true или false, только зеркально наоборот, и нужен ещё один перевёртыш, чтобы получить задуманное значение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Fragster
@Fragster
помогло? отметь решением!
На самом деле это не совсем так, рекомендую ознакомиться - https://learn.javascript.ru/types-conversion#logic...
Да и вообще, 95% ненависти к js порождено его системой преобразования типов друг в друга.
Ответ написан
@alevlako
while проверяет условие, которое является типом boolean со значениями true или false. При этом while продолжает крутить цикл пока это значение истинно. Если значение становится false, цикл прекращается. В JS false значение представлено в том числе нулём. Другими словами, когда while обращается к вычислению значения выражения i!=0, он получает false, т.е. 0, если i==0. В случае же обращения к i напрямую while получает false или 0 сразу как значение переменной i.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы