Привязка против вызова
Метод bind()
создает новую функцию, которая при вызове имеет ключевое слово this
, установленное на предоставленное значение, с заданной последовательностью аргументов, предшествующей любым, предоставленным при вызове новой функции. [Source Mozilla]
Метод call()
вызывает функцию с заданным значением this
и аргументами, предоставленными индивидуально.
Поэтому, когда мы используем Bind, на выходе будет функция return. [Исправлено: console.log (helloBuddy.bind (человек, ’Разработчик пользовательского интерфейса’) ())]
Осторожно при использовании оператора if в Javascript
Что ж, я лично сталкивался с этой проблемой много раз, когда логику Javascript было довольно сложно понять, давайте посмотрим, почему randomUser - это число, а в противном случае консоль показывает условие else. (! typeof randomUser === 'string') будет разбит на 2 части - ›typeof randomUser === 'string' окажется истинным, но для того же типа '!' изменит это значение true на false, поэтому if (false) никогда не будет выполнен. Поверьте, сколько у вас опыта, вы очень часто будете попадать в эти условия.
this и стрелочная функция
Выражение функции стрелки - это компактная альтернатива традиционному выражению функции, но оно ограничено и не может использоваться во всех ситуациях.
Различия и ограничения:
- Не имеет собственных привязок к
this
илиsuper
и не должен использоваться какmethods
. - Не содержит ключевых слов
arguments
илиnew.target
. - Не подходит для методов
call
,apply
иbind
, которые обычно полагаются на установление области действия. - Нельзя использовать в качестве конструкторов.
- Не может использовать
yield
внутри своего тела.
То же самое, что и в стрелочной функции, имеющей ссылку на глобальную область видимости. Когда мы используем this.email = email, устанавливается переменная в глобальной области видимости.
Источники:
https://developer.mozilla.org
https://www.youtube.com/channel/UCHx46rNCTVKAK4YY1A1eBAw