Джоан Ли - (Виви)
Переводчик: Front-end Xiaozhi
Источник: среда
Чем больше вы знаете, тем больше вы не знаете
Ставьте лайк и смотрите снова, формируйте привычку
эта статьяГитхаб:GitHub.com/QQ449245884…Он был включен в вышеизложенное, и более ранние статьи с высокими похвалами были классифицированы, а также было систематизировано множество моих документов и учебных материалов. Добро пожаловать в Star and Perfect. Вы можете обратиться в тестовый центр для ознакомления во время собеседования. Надеюсь, у нас что-то получится вместе.
Чтобы обеспечить удобочитаемость, в этой статье используется вольный перевод, а не дословный перевод.
1. Как понять JSthis
ключевое слово?
Новички в JS всегда правыthis
ключевое слово сбивает с толку, потому что это не так в JS по сравнению с другими современными языками программированияthis
Ключевые слова немного сложны. «это» обычно относится к текущему объекту, но что-то происходит не так, как должно. в JSthis
Ключевое слово определяется вызывающей стороной функции, кто бы ее ни вызывал.this
смотря на что он указывает. Если звонящий не найден,this
укажет наwindows
объект.
принести немного мозоли
Первый пример простой. передачаtest
в объекте func()
,следовательноfunc()
где "это" указывает наtest
объект, поэтому напечатанныйprop
даtest
серединаprop
,Прямо сейчас42
.
var test = {
prop: 42,
func: function(){
return this.prop;
},
};
console.log (test.func()); // 42
Если мы позвоним напрямуюgetFullname
функция, второй пример распечатает'David Jones'
, потому что в это времяthis
Вызывающий абонент не может быть найден, поэтому по умолчаниюwindow
объект, напечатанныйfullname
Это глобально.
var fullname = ‘David Jones’
var obj ={
fullname: ‘Colin Brown’,
prop:{
fullname:’Aurelio Deftch’,
getFullname: function(){
return this.fullname;
}
}
}
var test = obj.prop.getFullname
console.log(test()) // David Jones
obj.prop.getFullname() // ‘Aurelio Deftch’
2. Из-заthis
Ключевые слова сбивают с толку, как это исправить
Есть много способов решить эту проблему, однако, какое бы решение вы ни выбрали, самое главное — знать, что вы решили позволитьthis
к какому объекту.
Как только вы это пойметеthis
Объект, на который указывает, вы можете напрямую изменить его на имя объекта. В противном случае используйтеbind
,call
,apply
Функции также могут помочь.
3. Что такое замыкание
Когда я впервые объяснял замыкания, я имел обыкновение говорить «функция внутри функции», однако это не точно описывало, что именно означает замыкание.
Замыкание — это создание объемлющей лексической области внутри другой области. Обычно он автоматически возвращается для создания этой лексической среды. Эта среда состоит из любых локальных переменных, которые были в области видимости при создании замыкания. Это похоже на микрофабрику, использующую это сырье для производства продуктов с определенными функциями.
function add(n){
var num = n
return function addTo(x){
return x + num
}
}
addTwo = add(2)
addTwo(5)
Другое применение замыканий — создание закрытых переменных и методов. JavaScript не поддерживает oops так же хорошо, как Java. В JS нет явного способа создания приватных методов, но замыкания могут создавать приватные методы.
4. Объясните продвижение переменных
Поднятие переменных — это поведение JavaScript по умолчанию, что означает, что все объявления переменных перемещаются в верхнюю часть текущей области видимости, и переменные можно использовать до их объявления. Инициализация не поднимается, подъем применяется только к объявлениям переменных.
var x = 1
console.log(x + '——' + y) // 1——undefined
var y = 2
5. Как JavaScript обрабатывает синхронные и асинхронные ситуации
Хотя JavaScript — это стек вызововодин потокязык программирования, но он также может обрабатывать некоторые асинхронные функции, используя механизм, называемый циклом событий. Понимание того, как работает JavaScript на базовом уровне, является ключевой частью понимания того, как JS обрабатывает асинхронность.
Как показано, стек вызовов — это место, где расположены функции. Как только функция будет вызвана, она будет помещена в стек. Однако асинхронные функции не сразу помещаются в стек вызовов, они помещаютсяОчередь задачи выполняется после того, как стек вызовов опустеет. Перенос событий из очереди задач в стек вызовов называетсяцикл событий.
6. Как понимать делегирование событий
Привязка прослушивателей событий к дереву DOM и использование обработчиков событий JS — типичный способ обработки ответов на события на стороне клиента. Теоретически мы могли бы прикрепить прослушиватели к любому элементу DOM в HTML, но из-за делегирования событий делать это расточительно и не нужно.
** Что такое делегирование событий? **
Это уловка, чтобы прослушиватели событий на родительских элементах также влияли на дочерние элементы. Как правило, распространение события (ловить и булькать) позволяет реализовать делегирование событий. Всплывание означает, что когда запускается дочерний элемент (цель), родитель этого дочернего элемента также может запускаться слой за слоем, пока он не столкнется с исходным слушателем (текущей целью), привязанным к DOM. Свойство захвата превращает фазу события в фазу захвата, позволяя событию перемещаться вниз к элементу; таким образом, направление возбуждения противоположно фазе всплытия. Значение по умолчанию для захватаfalse
.
7. Как понимать функции высшего порядка
Все в JavaScript является объектом, включая функции. Мы можем передавать переменные в качестве параметров функциям, как и функции. Мы вызываем функцию, которая принимает и/или возвращает другую функцию, называемую функцией высшего порядка.
8. Как отличить функции объявления от функций-выражений
// 声明函数
function hello() {
return "HELLO"
}
// 表达式函数
var h1 = function hello() {
return "HELLO"
}
Две функции будут определены в разное время. Объявления определяются во время синтаксического анализа, а выражения определяются во время выполнения, поэтому, если мы напечатаем консольh1
, это покажетHELLO
.
9. Объясните, как работает прототипное наследование
JavaScript не является дружественным к объектно-ориентированному языку программирования, но он по-прежнему использует идею наследования для реализации зависимостей и использует множество встроенных функций, чтобы сделать его гибким в использовании. Знание того, как работает прототипное наследование, поможет вам лучше понять JavaScript и избежать концептуального неправильного использования.
Лучше всего представить себе всю механику JavaScript в голове, чтобы понять наследование прототипов.
Супер объект в JavaScript, из которого все объекты наследуют.'__ proto__'
остроконечный объектPrototype
внутренние свойства. Прототип содержит функцию-конструктор, из которой объект может создать экземпляр.__proto__
всегда существует в объекте и иерархически указывает на прототип, которому он принадлежит, до тех пор, покаnull
, который называетсяСеть прототипов.
10. Объясните строгий режим
Строгий режим используется для стандартизации обычной семантики JavaScript. Строгий режим может быть встроен в нестрогий режим, ключевое слово‘use strict’
. Код после использования строгого режима должен следовать строгим правилам синтаксиса JS. Например, точки с запятой используются после объявления каждого оператора.
Ошибки, которые могут существовать после развертывания кода, не могут быть известны в режиме реального времени.Чтобы решить эти ошибки впоследствии, много времени тратится на отладку журнала.Кстати, я рекомендую всем полезный инструмент мониторинга ошибок.Fundebug.
оригинал:medium.com/@jinlan119/…
общаться с
Все говорили, что нет проекта для написания резюме, поэтому я помог вам найти проект, и это было с бонусом.【Учебник по строительству】.
Статья постоянно обновляется каждую неделю. Вы можете выполнить поиск «Big Move to the World» в WeChat, чтобы прочитать и обновить ее как можно скорее (на одну или две статьи раньше, чем в блоге). Эта статья находится на GitHub.GitHub.com/QQ449245884…Он был включен, и многие мои документы были разобраны. Добро пожаловать в Звезду и совершенство. Вы можете обратиться в тестовый центр для ознакомления во время собеседования. Кроме того, обратите внимание на паблик-аккаунт и ответьте в фоновом режиме.Благосостояние, вы можете увидеть преимущества, вы знаете.