0: В этом видео нам нужно вернуться к типам значений. Итак, типы это 1 из фундаментальных аспектов программирования и преобразования между типами. Это то, что мы делаем на каждом языке программирования. Например, преобразование строки.
1: В число или числа, в логическое значение. Это то, что мы делаем постоянно. И поэтому важно, чтобы мы узнали об этом, прежде чем сможем двигаться дальше по курсу. Это особенно актуально для такого языка, как javascript, который иногда
2: Ведёт себя странным образом, как мы увидим в этом видео.
3: Теперь в javascript есть преобразование типов и их принудительное использование, так что они звучат очень похоже, но на самом деле разные итак, преобразование типов это когда мы вручную преобразуем 1 тип, в другой, с другой стороны, принудительное.
4: Образование типов это когда javascript автоматически преобразует типы за кулисами для нас, так что в некоторых ситуациях это необходимо, но это происходит неявно, полностью скрыто от населения. Хорошо, итак, давайте начнём с преобразования типов.
5: Которая, как вы помните, происходит, когда мы явно хотим преобразовать 1 тип в другой. Итак, давайте представим, что у нас есть поле ввода на веб странице, где пользователь может ввести свой год рождения. И эти данные с полей ввода обычно поступают в виде строк.
6: Итак, давайте предположим, что вводимый год, который мы получаем из пользовательского интерфейса, представляет собой строку со значением 9091. Но теперь, если мы захотим произвести некоторые вычисления с этим значением, это на самом деле не сработает. Позволь.
7: Показать тебе это так утешь меня запиши в журнал, допустим, введи год, а сейчас + 18. Таким образом, мы можем рассчитать, в каком году человек достигнет совершеннолетия. А теперь запомни.
8: Что когда у нас есть строка и мы что-то добавляем к ней, это по сути приводит к объединению строк. Так что мы не можем ожидать, что это на самом деле добавит 18 к этому числу, потому что это строка. Так что
9: Позволь мне показать тебе, что я имею ввиду. И действительно, теперь мы получаем строку, которая в основном содержит строку 1991 года, а затем также строку 18.
10: Хорошо, итак, нам нужен способ исправить это. А это значит, что нам нужен способ преобразовать эту строку в число. Так что давай я запишу это здесь 1 числа. Так что утешай меня, запиши это, а затем мы преобразуем.
11: Эту строку в число с помощью встроенной функции намбер. Итак, мы пишем число, затем заключаем его в круглые скобки, а затем вводим год. И в следующем разделе мы узнаем, что именно представляет собой функция.
12: И почему она работает именно таким образом. А пока просто знайте, что мы можем преобразовать строки в числа с помощью этой функции, которую мы выполняем, используя вот эти круглые скобки. Так что теперь у нас есть
13: Эти круглые скобки внутри этих круглых скобок. Но пусть это вас не смущает. Таким образом, при выполнении этой операции строка будет возвращена в виде числа. Так что позволь мне показать тебе это и действительно
14: Теперь мы получаем 1991 год вот таким розовым цветом, и цвета могут меняться с течением времени. К тому времени, как я запишу это видео, цифры будут розовыми, а строки вот такими белыми. Давай, я на самом деле
15: Или распечатаю их оба.
16: Итак, чтобы было действительно видно, что да, 1 символ это число, a2 строка хорошо. Но сейчас важно отметить 1 вещь. Исходное значение на самом деле не преобразуется. Так.
17: Что сама входная переменная ер по прежнему является строкой верной переменная 1991 по прежнему содержит строку, а не число вот почему здесь, в этом журнале, где мы производим вычисления.
18: Результатом по прежнему является эта строка, потому что опять же исходная входная переменная года по прежнему является строкой использование этой числовой функции просто даст нам преобразованную версию.
19: Так что если мы хотим выполнить это вычисление, нам нужно использовать число, и здесь теперь это преобразует число, а затем к этому числу будет добавлено 18, так что в итоге у нас должно получиться что-то вроде.
20: 2009 года. Я думаю, и в самом деле это правильно, но что если мы попытаемся преобразовать что-то в число, которое невозможно преобразовать, давай попробуем это сделать со строкой, которая на
21: Самом деле не содержит числа, так что давай попробуем утешить друг друга. Запиши преобразование в число строку джонас. Итак, джаваскрипт просмотрит строку. Мы попытаемся преобразовать её в число, но на самом деле.
22: Это не сработает, так что же мы получим? Вместо этого у нас есть слово нен, которое означает не число, так что джаваскрипт выдаёт нам это значение не число. Всякий раз, когда операция, включающая числа, не приводит к получению нового числа.
23: Так что, по сути, не число на самом деле означает недопустимое число. На самом деле это не не число. И позволь мне на самом деле доказать тебе это, так, что мы можем проверить тип нен, так что это не число.
24: И, как мы увидим, странным результатом этого является то, что тип, не являющийся числом, на самом деле является числом и так далее, не число на самом деле означает недопустимое число.
25: Так или иначе, это все равно число, но оно является недопустимым. Ещё раз повторю, мы получаем не число. Всякий раз, когда операция с числами не приводит к получению нового числа. Хорошо, это означает преобразование строк.
26: В числа, но, конечно, мы можем сделать и обратное.
27: Я бы сказал, что это немного менее важно, но я все равно хочу тебе это показать.
28: Итак, чтобы сделать это наоборот, мы используем эту строковую функцию, и это довольно просто, не так ли? Просто имейте ввиду, что нам действительно нужно начинать её с заглавной буквы, с точно так же, как здесь числовая функция должна начинаться
29: С заглавной буквы н, в противном случае это не так. Собираюсь на работу. Таким образом мы получаем 23. И помните, что если значение здесь белое, то это означает, что это строка. Так что это выглядит примерно одинаково, да.
30: Давайте снова зафиксируем оба значения, просто чтобы подчеркнуть это. Итак, розовое это значение, которое на самом деле имеет числовой тип, а это значение имеет строковый тип.
31: Ладно, ещё раз повторю, это не так важно, но я все равно хотел бы упомянуть об этом. Сейчас. Джаваскрипт может преобразовывать только 2 3 типа. Таким образом, мы можем преобразовать в число строку или логическое значение, но мы не можем, например, преобразовать, что
32: В неопределённое или обнулить. В этом нет особого смысла. Сейчас мы преобразовали только числа и строки, но не логические значения. И это потому, что логические значения ведут себя особым образом и
33: По этой причине будет отдельная лекция о так называемых истинных и ложных значениях. Отлично. Вот это и есть преобразование типов, когда мы вручную преобразуем 1 тип в другой. Однако на практике нам редко приходится делать
34: Это вручную, потому что джаваскрипт на самом деле автоматически выполняет для нас приведение типов во многих ситуациях. Давай поговорим об этом прямо сейчас и давай просто разделим это здесь несколькими комментариями.
35: Итак, сначала вводим преобразование, а затем вводим принуждение.
36: Так что, по сути, принуждение к вводу происходит всякий раз, когда оператор имеет дело с 2 значениями, которые имеют разные типы, так что в этом случае java script затем незаметно преобразует 1 из значений в соответствие с другим значением.
37: Чтобы в конечном итоге операция могла быть выполнена. И на самом деле мы уже видели, как это происходит, если вдуматься.
38: Так что давай я тебе это покажу, начнём со струн, вспомни, как мы это делали. Мне сейчас 23 года, а потом ещё какое-то число, скажем, 23 года, а потом ещё несколько с лишним лет.
39: Итак, мы уже знаем, что в результате получится строка, в которой будет указано, что мне 23 года, но как это на самом деле работает, ведь 23 это число, так что у нас здесь разные типы чисел, верно?
40: У нас есть строка, число и ещё 1 строка так что давай проверим и действительно именно это и происходит и это работает именно так из за принудительного ввода. Итак в java script оператор плюс который мы использовали
41: Здесь запускает принудительное преобразование строк, и поэтому всякий раз, когда выполняется операция между строкой и числом, число преобразуется в строку. Таким образом, благодаря принудительному вводу типа запись этого будет точно такой же, как и
42: Этого верно, потому что опять же оператор плюс преобразует числа в строки на самом деле тоже самое происходит и с шаблонными литералами он также принимает
43: Все числовые значения и преобразует их в строки так вот, если бы в javascript не было автоматического приведения типов, как во многих других языках, то нам пришлось бы делать это вручную, как мы только что узнали, тогда нам пришлось бы.
44: Использовать строку 23, и тогда это был бы единственный способ, которым это сработало бы, но, к счастью для нас, в javascript есть функция принудительного ввода типов, так что это будет происходить полностью автоматически за кулисами на самом деле не все опера.
45: Выполняют принудительный ввод строки. Так что позволь мне показать тебе кое-что ещё. Итак, если мы сделаем 23 в строке - 10 в строке - 3. Как ты думаешь, что произойдёт дальше?
46: Так что давай проверим на самом деле, и это даст нам 10, так что же здесь произошло? Похоже на этот раз джаваскрипт преобразовал строки в числа и действии.
47: Твительно. Именно поэтому мы получаем 10, потому что 23 - 10 равно 13, - 3 равно 10. Таким образом, это означает, что оператор минус фактически запускает обратное преобразование. Так что в данном случае строки преобразуются в ci.
48: А не наоборот. Так что если вместо этого мы используем знак плюс, как ты думаешь, что произойдёт?
49: Тогда тройка преобразуется в строку, а затем все 3 строки объединяются.
50: Так вот, это очень важное различие, которое нужно иметь ввиду, потому что оно на самом деле сбивает с толку многих Новичков в javascript, когда они не знают об этом.
51: Так что давай попробуем ещё раз. И я снова использую 23 строки, умноженные на 2 строки, и ещё раз вы увидите, что эти значения будут преобразованы в числа раньше и действительно именно
52: Поэтому мы получаем 46, потому что оба значения теперь преобразованы в числа, потому что это единственный способ, которым может работать оператор умножения, и тоже самое, конечно, верно и для деления.
53: Так вот, я надеюсь, что различие между преобразованием типов и принудительным введением типов теперь достаточно ясно. А теперь, чтобы убедиться, что ты действительно все понял. Давай поиграем в игру под названием угадай результат. Вот эту игру я.
54: Только что придумал. Я хочу, чтобы ты угадал, что здесь происходит. Так что я напишу 1 + 1. Вот так. А потом мы снова скажем, что and равно n - 1.
55: Ванакен.
56: Как ты думаешь, как будет выглядеть н, когда мы введём его в консоль? По сути, мы начинаем с единицы в строке, затем добавляем единицу, а затем вычитаем единицу?
57: Так что потратьте минутку на то, чтобы подумать, как это должно выглядеть, а затем давайте взглянем на решение, и оно будет равно 10.
58: Это немного противоречит здравому смыслу, но в соответствии с правилами, которые мы только что изучили, это действительно имеет смысл. Итак, здесь, в 1 строке, 1 + 1 на самом деле будет равно 11 строкам, потому что здесь у нас есть 1 строка, а затем оператор plus автома.
59: Автоматически преобразует значение. Преобразуйте число в строку. Таким образом, в результате получается 11 строка. Но тогда здесь у нас есть оператор минус и в операторе минус всякий раз, когда у нас есть строка или несколько строк.
60: Она преобразуется в число таким образом, здесь строка 11 преобразуется в 11 число, а затем 11 - 1, конечно, равно 10.
61: Хорошо, давайте сделаем ещё 1 или 2 шага и сделаем это здесь в консоли. И мы действительно можем очистить консоль от всего этого беспорядка, нажав на кнопку очистить консоль. Хорошо. Так что давайте сделаем 2 + 3, + 4 + 5.
62: И получим строку. А теперь ты и в самом деле не можешь догадаться, потому что мы уже видим решение. Хорошо. Так что давай попробуем понять, что же здесь произошло. Итак, мы начинаем с 2 + 3, что даёт 5.
63: Затем 5 + 4 дают 9. И в итоге у нас получается 9 + 5, а затем, как ты уже знаешь, поскольку у нас есть строка, оператор плюс преобразует другой оперант, который также равен 9 в строку.
64: И в итоге мы получим 9 5 в виде строки хорошо, ещё 1 10 - 4 - 3.
65: И имея ввиду, что это струны, а затем минус действительное число 2, но затем + 5 это уже струна, так что опять же это выглядит очень странно, но логика примерно та же, что и раньше.
66: Итак, у нас есть 2 вычитаемых значения, и джаваскрипт преобразует их оба в числа. Таким образом, в результате получается 6, тогда 6 - 3 это 3, a3 - 2 это 1.
67: И тогда мы окажемся в той же ситуации, что и раньше. Так вот, это значение будет преобразовано в строку, и в итоге мы получим строку 15. Хорошо. И с этим, я думаю, теперь все должно быть предельно ясно.
68: И тебе, возможно, интересно, почему мы так много говорим об этом. Но действительно важно, чтобы ты знал об этом. Это нужно делать с самого начала, чтобы вы могли писать свой код, имея все это ввиду. На самом деле многим людям не нравится принуждение к набо.
69: Бору текста, и они считают, что полагаться на принуждение к набору текста плохая практика 1 из причин этого заключается в том, что принудительный ввод типов на самом деле может привести к появлению множества неожиданных ошибок в нашей программе, однако это происходит только тогда, когда мы на самом деле
70: Не знаем, что делаем, поэтому, когда мы не знаем о том, что я только что показал тебе, потому что если ты знаешь, то намного легче избежать этих ошибок. Так что, на мой взгляд, принуждение на самом деле является отличным механизмом, который позволит нам писать намного меньше кода.
71: А также писать более читаемый код. Так что, действительно, потратьте некоторое время на то, чтобы понять