0: Итак, мы говорили о преобразовании типов и приведении к числам и строкам, но я ещё не упоминал логические значения. Верно? Это потому, что нам нужно сначала изучить концепцию истинных и ложных значений. Именно этим мы сейчас
1: И займёмся так, что давай сразу перейдём к делу. Таким образом, ложные значения это значения, которые не совсем являются ложными, но станут ложными, когда мы попытаемся преобразовать их в логическое значение, а. В java?
2: Всего 5 ложных значений, и позволь мне на самом деле записать их здесь для тебя. Итак, 5 ложных значений равны нулю. Пустая строка неопределённо нал, а не число.
3: Но and not вот и все, конечно, значение false само по себе уже является ложным, так что нам не нужно включать его в список ложных значений ещё раз повторю, что все эти 5 значе.
4: Будут преобразованы в значение false когда мы попытаемся преобразовать их в логическое значение изначально они не совсем ложные, но станут таковыми при преобразовании в логическое значение так вот в чем заключается определение ложных значений все.
5: Остальное это так называемые истинные ценности, то есть ценности, которые будут преобразованы в истинные, например, любое число, которое не равно нулю, или любая строка, которая не является пустой, будут преобразованы в истинные, когда мы попытаемся преобразовать их в логическое значение.
6: Давай посмотрим на это на практике, так же, как в случае с числами и строками, мы можем использовать логическую функцию сначала логическое значение, а затем 0. И мы знаем, что это значение является ложным, не так ли?
7: Так что давай скопируем это и повторим пару раз для разных целей давай проделаем тоже самое с undefined?
8: Давай теперь сделаем это со строкой, и это будет не пустая строка. А теперь давай проделаем тоже самое с этим пустым объектом. А об объектах мы узнаем в следующем разделе. Так вот, это просто пустой объект.
9: Давай посмотрим, что из этого получится.
10: И мы видим, что преобразование нуля в логическое значение действительно привело к получению значения false тоже самое относится и к андефайнд это тоже ложь, но тогда строка джонас верна вот почему мы говорим, что любая
11: Строка, которая не является пустой, является истинным значением и тоже самое на самом деле относится к этому пустому объекту. Здесь это также истинное значение, но если мы попытаемся преобразовать пустую строку, что же, я думаю, тогда вы уже можете знать, каким
12: Будет результат, и он будет ложным опять же, потому что это ложное значение, как мы видим здесь, в этом списке. Так вот в чем суть истинных и ложных ценностей. И вот как мы могли бы преобразовать
13: Их в логические значения. Но на практике я никогда в жизни этого не делал. Я никогда не использовал эту функцию здесь на практике. Я просто хотел показать тебе концепцию истинных и ложных ценностей. Так что на практике преобразование в логическое значе.
14: Всегда неявное, а не явное или, другими словами, это всегда принудительное изменение типа, которое джава скрипт выполняет автоматически за кулисами, но когда именно джаваскрипт выполняет приведение типов к логическим значениям ну, это проис.
15: Ходит в 2 сценариях, во первых, при использовании логических операторов, а во вторых, в логическом контексте, как, например, в условии оператора ифлс, и мы поговорим о логических операторах в 1 из следующих лекций.
16: Так что давайте сейчас вернёмся к оператору ифлс и посмотрим, как работает приведение типов в условии флс. Давайте представим, что у нас есть переменная мани.
17: И в начале у нас не было никаких денег, так что мы установим здесь значение на 0, и теперь мы можем использовать то, что мы только что узнали, чтобы проверить, есть ли у человека в данный момент деньги или нет. Не так ли? Так что давай я сначала напишу это, а потом объясню тебе, как
18: Это работает так что если речь идёт о деньгах, то давай зайдём в консоль, что-нибудь вроде не трать, а потратим все, дон.
19: И обратите внимание, что я использовал двойные кавычки, потому что здесь у меня есть одинарная кавычка для не надо, а затем мы также можем сделать блок лс.
20: Так что в случае, если у человека нет денег, я могу просто сказать, что тебе следует устроиться на работу.
21: Все в порядке, давай посмотрим, сработает ли это. А потом я объясню тебе, почему это работает. Так что мы действительно пришли к выводу, что тебе стоит устроиться на работу. Вот и все остальное, не так ли? Итак, вот этот код был выполнен.
22: Но почему? Ну что же, сейчас мы знаем, что деньги это число и это число равно нулю, но в логическом контексте условия оператора ифлс, то есть прямо здесь, в этих круглых скобках, джаваскрипт попытается преобразовать любое значение в логи.
23: Так что, независимо от того, что мы здесь вводим, если это не логическое значение, javascript попытается преобразовать его в логическое значение, и это происходит с использованием правил истинных и ложных значений, которые мы только что обсуждали в начале итак.
24: Мы знаем, что деньги здесь равны нулю, но 0 это ложное значение, верно, рай, и, таким образом, в этой логической среде, в этом условии это число 0 будет преобразовано в значение false, точно так же, как это произошло здесь, когда мы вручную преобразовали 0.
25: В логическое значение верно так вот, это преобразование в логическое значение вернуло значение false, и здесь происходит точно тоже самое деньги равны нулю, и поэтому 0 преобразуется в значение false, потому что это ложное значение и в результате здесь.
26: Выполняется блок else. Итак, на консоли мы видим, что тебе следует найти работу. А теперь, если мы изменим это на что-то другое и не имеет значения, какое число, скажем, 100, то 100 это истинное значение таким
27: Образом. Это означает, что данное условие будет выполнено таким образом. Блок в будет выполнен. Хочешь посмотреть? Да, действительно, теперь здесь написано не трать. Все отлично. Я надеюсь, что это имело смысл и мы можем
28: Можем проверить это в другой ситуации, чтобы убедиться, что ты действительно это понимаешь, так что ещё 1 вариант использования этих истинных и ложных значений проверить, действительно ли переменная определена или нет, и это может показаться странным вариантом.
29: Использование, но позже вы увидите, что иногда действительно имеет смысл проверить, существует ли что-то на самом деле или нет. Давай определим здесь переменную как высоту и тогда мы сможем просто сделать вот это
30: Если у тебя высокий рост, то давай запустим этот код.
31: Ура, рост определён.
32: Но если нет, что же, тогда просто скажи, что рост не определён.
33: Ладно, давай посмотрим на результат. И ещё раз я объясню тебе, почему это работает именно так. И, возможно, ты уже догадываешься, почему это работает именно так. Так не мог бы ты попытаться объяснить это самому себе?
34: Может быть, это было бы хорошей идеей, чтобы убедиться, что ты действительно понял суть. Но в любом случае мы знаем, что в данный момент высота не определена, верно? Потому что мы ещё не присвоили ей никакого значения, и из нашего маленького списка здесь мы знаем.
35: Что значение undefined является ложным, и поэтому, как и в предыдущем примере с деньгами, эта переменная высоты в данном логическом контексте будет автоматически преобразована в логическое значение, а поскольку значение хайт не опреде.
36: А значение undefined это ложное значение, то значение хайт прямо здесь будет ложным, следовательно, этот блок здесь будет выполнен.
37: Но теперь, если мы присвоим ему что-то, независимо от того, что это такое, мы получим другой результат, так что теперь это правда, и вот теперь этот блок выполнен, однако с этим мы действительно можем столкну
38: С проблемой. Так что давайте предположим, что высота по какой-то причине равна нулю, и это абсолютно верное число. Но посмотри, что произойдёт, когда мы запустим этот код. Теперь мы снова получаем, что высота не определена. Так почему же?
39: Это происходит, и я надеюсь, что к настоящему времени ты уже знаешь ответ. Ну это потому, что 0 это тоже ложное значение, и поэтому это значение также вызовет блокировку лс, но в данном случае это совсем не то, чего мы хотим, так что это своего рода ошибка.
40: Это ошибка в нашем приложении, потому что здесь в инструкции ифлс, мы не учли этот сценарий. Мы учли только сценарий, в котором высота либо определена, либо нет. Но мы не думали о том, что высота равна нулю. Верно? И вот
41: Прямо сейчас мы получаем, что высота не определена, хотя это и не так. Так что это просто для иллюстрации того, что при таком подходе могут возникнуть проблемы. Однако мы можем исправить это с помощью логических операторов, что будет очень интересно, и мы поговорим.
42: Об этом чуть позже в этом разделе, но на следующей лекции нам нужно поговорить об операторах равенства, так что