JAVASCRIPT » История » Версия 3
Александр Александров, 24.04.2019 16:31
1 | 1 | Александр Александров | h1. JAVASCRIPT |
---|---|---|---|
2 | |||
3 | h2. Вопросы |
||
4 | |||
5 | # Как переадресовать страницу в JavaScript? |
||
6 | # Сколько параметров можно передать функции? |
||
7 | # Нужно алертом вывести какое-то сообщение, спустя 3 секунды после запуска скрипта. Как это сделать? |
||
8 | # Чем отличается наследование в JavaScript от наследования в PHP? |
||
9 | # Приведи пример наследования в JavaScript. |
||
10 | # Пара слов об объектах в JavaScript? |
||
11 | # Что представляет из себя метод объекта в JavaScript? |
||
12 | # Зачем в JavaScript перед переменной писать var? |
||
13 | 3 | Александр Александров | # Есть две функции: function f(a,b) { return a+b } и var f = function(a,b) { return a+b } Есть ли между ними разница? Если есть то какая? |
14 | 1 | Александр Александров | # Как создать массив в JavaScript? |
15 | # Можно ли в JavaScript использовать функцию в качестве конструктора? |
||
16 | 3 | Александр Александров | # Сколько и какие конструкции для циклов есть в JAVASCRIPT? |
17 | # Что cделает код: break mark; ? |
||
18 | 1 | Александр Александров | # Можно ли задать массив таким образом: var a = “a,b”.split(‘,’)? |
19 | # Что выведет alert(typeof null); ? |
||
20 | # Что выведет alert(null instanceof Object); ? |
||
21 | # 0.1+ 0.2 == 0.3 ? |
||
22 | # Что выведет alert(typeof NaN); ? |
||
23 | # Что выведет alert(NaN === NaN); ? |
||
24 | # В чём различие свойств innerHTML и outerHTML? |
||
25 | # Какая разница между операторами == и ===? |
||
26 | # В чем разница между Object.getOwnPropertyNames() и Object.keys()? |
||
27 | # С помощью какой конструкции языка можно управлять потоком выполнения скрипта и отслеживать ошибки? |
||
28 | # Почему вызов a(); происходит успешно, а вызов b(); выдает ошибку? |
||
29 | # Что такое глобальные переменные ? Как они создаются ? Какие проблемы связаны с использованием глобальных переменных? |
||
30 | # Что такое замыкания (closure) в JavaScript? |
||
31 | # Напишите функцию принимающую строку с именем файла и возвращающую расширение (фрагмент после последней точки). |
||
32 | # Что вернет выражение +new Date()? Чем отличается от Date.now(). |
||
33 | # Какое значение возвращает данное предложение ~~3.14? |
||
34 | # Какое значение возвращает данное предложение? |
||
35 | # Что покажут эти два alert? |
||
36 | # Чему равно foo.length? |
||
37 | # Что такое prototype в javascript? |
||
38 | # Какие способы навешивания обработчиков событий вы знаете? |
||
39 | # Eсть ли разница между window и document? |
||
40 | # Вызываются ли document.onload и window.onload одновременно? |
||
41 | # Является ли атрибут (attribute) аналогом свойства (property)? |
||
42 | # Как остановить дальнейшее распространение события? |
||
43 | # Назовите различные пути для получения элемента из DOM дерева? |
||
44 | # Какой наибыстрейший метод для получения элемента через css селектор? |
||
45 | # Могу ли я удалить удалить обработчик события с элемента? |
||
46 | # Почему querySelectorAll(‘.my-class’) медленнее, чем getElementsByClassName(‘myclass’)? |
||
47 | # Почему я не могу использовать forEach или похожий метод массива для NodeList? |
||
48 | # Если вам необходимо реализовать getElementByAttribute, как вы будете это делать? |
||
49 | # Как бы вы добавили класс к элементу через селектор? |
||
50 | # Как я могу запустить обработчик в фазе захвата, а не в фазе всплытия? |
||
51 | # Как проверить, что один элемент является дочерним другому? |
||
52 | # Какой метод больше всего подходит для создания DOM элемента? Что лучше innerHTML или createElement? |
||
53 | # Каким образом можно предотвратить множественный вызов обработчика для одного события? |
||
54 | # Что такое reflow? |
||
55 | # Как я могу проверить были событие отменено или нет? |
||
56 | # Какие причины reflow? Как можно уменьшить reflow? |
||
57 | # Что такое repaint и когда оно происходит? |
||
58 | # Есть ли что-то такое о чём нужно позаботится при использовании node.cloneNode()? |
||
59 | # Как быть уверенным в том, что DOM подготовлен и можно выполнять JavaScript, как реализовать $(document).ready? |
||
60 | # Что такое всплытие? |
||
61 | # Как можно уничтожить несколько элементов с одним вызовом click? |
||
62 | # Как предотвратить нажатие по ссылке? |
||
63 | # Создайте кнопку, которая удаляется при нажатии на неё, и создаются две новые кнопки в этом же месте. |
||
64 | # Как отлавливать все нажатия на странице? |
||
65 | # Как получить весь текст на странице? |
||
66 | # Что такое defer и async? |
||
67 | # Какие существуют типы нод? |
||
68 | |||
69 | h2. Ответы |
||
70 | |||
71 | h3. Как переадресовать страницу в JavaScript? |
||
72 | |||
73 | 2 | Александр Александров | {{dmsf_image(323)}} |
74 | |||
75 | 1 | Александр Александров | h3. Сколько параметров можно передать функции? |
76 | |||
77 | 2 | Александр Александров | Сколько угодно. |
78 | |||
79 | 1 | Александр Александров | h3. Нужно алертом вывести какое-то сообщение, спустя 3 секунды после запуска скрипта. Как это сделать? |
80 | |||
81 | 2 | Александр Александров | Так: |
82 | |||
83 | <pre><code class="javascript"> |
||
84 | setTimeout(alert("Hello", 3000)); |
||
85 | </code></pre> |
||
86 | |||
87 | или так: |
||
88 | |||
89 | <pre><code class="javascript"> |
||
90 | setTimeout(functiom() {alert("Hello")}, 3000); |
||
91 | </code></pre> |
||
92 | |||
93 | 1 | Александр Александров | h3. Чем отличается наследование в JavaScript от наследования в PHP? |
94 | |||
95 | 2 | Александр Александров | В отличие от PHP, где наследование можно делать одним способом, в JavaScript таких способов много. На уровне языка реализовано наследование на прототипах. В JavaScript каждый объект может иметь ассоциацию с другим объектом - так называемый "прототип" (prototype). В случае, если поиск некоторого свойства (или метода) в исходном объекте заканчивается неудачно, интерпретатор пытается найти одноименное свойство (метод) в его прототипе, затем - в прототипе прототипа и т. д. К примеру, если мы затребовали обращение к obj.prop (или, что абсолютно то же самое, obj['prop']), JavaScript начнет искать свойство prop в самом объекте obj, затем – в прототипе obj, прототипе прототипа obj, и так до конца. |
96 | |||
97 | 1 | Александр Александров | h3. Приведи пример наследования в JavaScript. |
98 | |||
99 | 2 | Александр Александров | Например, пусть объект "cat" наследуется от объекта "animal". В наследовании на прототипах это реализуется как ссылка |
100 | |||
101 | <pre><code class="javascript"> |
||
102 | cat.prototype = animal; |
||
103 | </code></pre> |
||
104 | |||
105 | Или вот чуть более развернутый пример. MyType наследуется от Obj: |
||
106 | |||
107 | {{dmsf_image(323)}} |
||
108 | |||
109 | 1 | Александр Александров | h3. Пара слов об объектах в JavaScript? |
110 | |||
111 | 2 | Александр Александров | Объекты (они же - ассоциативные массивы, хэши) и работа с ними в JavaScript реализованы не так, как в большинстве языков. Объект в JavaScript представляет собой обычный ассоциативный массив или, иначе говоря, "хэш". Он хранит любые соответствия "ключ => значение" и имеет несколько стандартных методов. |
112 | |||
113 | 1 | Александр Александров | h3. Что представляет из себя метод объекта в JavaScript? |
114 | |||
115 | 2 | Александр Александров | Метод объекта в JavaScript - это просто функция, которая добавлена в ассоциативный массив. |
116 | |||
117 | 1 | Александр Александров | h3. Зачем в JavaScript перед переменной писать var? |
118 | |||
119 | 2 | Александр Александров | Если создавать переменную через обычное присваивание - будет создана "глобальная переменная". Пример: |
120 | |||
121 | <pre> |
||
122 | max = 100; |
||
123 | </pre> |
||
124 | |||
125 | Если создавать переменную с использованием слова var, тогда будет создана "локальная переменная", которая перестаёт существовать после завершения работы функции. Пример: |
||
126 | |||
127 | <pre> |
||
128 | var max = 100; |
||
129 | </pre> |
||
130 | |||
131 | 3 | Александр Александров | h3. Есть две функции: function f(a,b) { return a+b } и var f = function(a,b) { return a+b } Есть ли между ними разница? Если есть то какая? |
132 | 1 | Александр Александров | |
133 | Есть, разница в видимости функции. Вариант функции без var виден везде в текущей области видимости. В том числе и до самого определения функции. Вариант с var присваивает функцию переменной, поэтому такая функция видна только после определения. |
||
134 | |||
135 | h3. Как создать массив в JavaScript? |
||
136 | |||
137 | 3 | Александр Александров | Вот несколько способов. |
138 | |||
139 | {{dmsf_image(325)}} |
||
140 | |||
141 | 1 | Александр Александров | h3. Можно ли в JavaScript использовать функцию в качестве конструктора? |
142 | |||
143 | 3 | Александр Александров | Вот так: |
144 | 1 | Александр Александров | |
145 | 3 | Александр Александров | {{dmsf_image(326)}} |
146 | |||
147 | h3. Сколько и какие конструкции для циклов есть в JAVASCRIPT? |
||
148 | |||
149 | Три: for, while и do...while. |
||
150 | |||
151 | h3. Что cделает код: break mark; ? |
||
152 | |||
153 | Выйдет из текущего блока цикла или switch на метку "mark". |
||
154 | |||
155 | 1 | Александр Александров | h3. Можно ли задать массив таким образом: var a = “a,b”.split(‘,’)? |
156 | |||
157 | 3 | Александр Александров | Да, можно. |
158 | |||
159 | 1 | Александр Александров | h3. Что выведет alert(typeof null); ? |
160 | |||
161 | 3 | Александр Александров | Выведет сообщение "object". |
162 | |||
163 | 1 | Александр Александров | h3. Что выведет alert(null instanceof Object); ? |
164 | |||
165 | 3 | Александр Александров | Выведет сообщение "false". |
166 | |||
167 | 1 | Александр Александров | h3. 0.1+ 0.2 == 0.3 ? |
168 | |||
169 | 3 | Александр Александров | Нет, т.к. вычисленное значение будет равно 0.30000000000000004. Это действие точности вычислений и проявляется она не только в JavaScript |
170 | |||
171 | 1 | Александр Александров | h3. Что выведет alert(typeof NaN); ? |
172 | |||
173 | 3 | Александр Александров | "Number" |
174 | |||
175 | 1 | Александр Александров | h3. Что выведет alert(NaN === NaN); ? |
176 | |||
177 | 3 | Александр Александров | "false" |
178 | |||
179 | 1 | Александр Александров | h3. В чём различие свойств innerHTML и outerHTML? |
180 | |||
181 | 3 | Александр Александров | Свойство любого DOM элемента innerHTML содержит HTML код, который находится внутри этого элемента. При установке нового значения этого свойства, внутренний HTML код рендерится браузером заново. outerHTML почти аналогичен innerHTML, разница в том, что он возвращает полный HTML элемента. Также, важно отметить, что innerHTML поддерживается всеми современными браузерами, а outerHTML поддерживается в IE (с некоторыми отличиями от остальных браузеров), в последних версиях Opera, и в браузерах на основе последних WebKit (Safari, Chrome), но не поддерживается в Firefox. |
182 | |||
183 | Для кода: |
||
184 | |||
185 | {{dmsf_image(327)}} |
||
186 | |||
187 | innerHTML возвратит: |
||
188 | |||
189 | <pre><code class="javascript"> |
||
190 | <p class="inner"></p> |
||
191 | </code></pre> |
||
192 | |||
193 | outerHTML возвратит: |
||
194 | |||
195 | <div class="outer"><p class="inner"></p></div> |
||
196 | |||
197 | 1 | Александр Александров | h3. Какая разница между операторами == и ===? |
198 | |||
199 | 3 | Александр Александров | Оператор == сравнивает на равенство, а вот === сравнивает на идентичность. Плюс оператора === состоит в том, что он не приводит два значения к одному типу. Именно из-за этого он обычно и используется. |
200 | |||
201 | 1 | Александр Александров | h3. В чем разница между Object.getOwnPropertyNames() и Object.keys()? |
202 | |||
203 | 3 | Александр Александров | Object.getOwnPropertyNames() возвращает перечислимые и не перечислимые свойства из объекта или массива. |
204 | |||
205 | {{dmsf_image(328)}} |
||
206 | |||
207 | Object.keys() возвращает перечислимые свойства из объекта или массива |
||
208 | |||
209 | {{dmsf_image(329)}} |
||
210 | |||
211 | 1 | Александр Александров | h3. С помощью какой конструкции языка можно управлять потоком выполнения скрипта и отслеживать ошибки? |
212 | |||
213 | 3 | Александр Александров | Это возможно с помощью конструкции try{}... catch{} |
214 | |||
215 | {{dmsf_image(330)}} |
||
216 | |||
217 | 1 | Александр Александров | h3. Почему вызов a(); происходит успешно, а вызов b(); выдает ошибку? |
218 | 3 | Александр Александров | |
219 | {{dmsf_image(331)}} |
||
220 | |||
221 | Функция а() инициализируется на этапе загрузки скрипта, как бы "всплывает вверх" а функция б инициализируется, когда объявляется переменная b |
||
222 | 1 | Александр Александров | |
223 | h3. Что такое глобальные переменные ? Как они создаются ? Какие проблемы связаны с использованием глобальных переменных? |
||
224 | |||
225 | h3. Что такое замыкания (closure) в JavaScript? |
||
226 | |||
227 | h3. Напишите функцию принимающую строку с именем файла и возвращающую расширение (фрагмент после последней точки). |
||
228 | |||
229 | h3. Что вернет выражение +new Date()? Чем отличается от Date.now(). |
||
230 | |||
231 | h3. Какое значение возвращает данное предложение ~~3.14? |
||
232 | |||
233 | h3. Какое значение возвращает данное предложение? |
||
234 | |||
235 | h3. Что покажут эти два alert? |
||
236 | |||
237 | h3. Чему равно foo.length? |
||
238 | |||
239 | h3. Что такое prototype в javascript? |
||
240 | |||
241 | h3. Какие способы навешивания обработчиков событий вы знаете? |
||
242 | |||
243 | h3. Eсть ли разница между window и document? |
||
244 | |||
245 | h3. Вызываются ли document.onload и window.onload одновременно? |
||
246 | |||
247 | h3. Является ли атрибут (attribute) аналогом свойства (property)? |
||
248 | |||
249 | h3. Как остановить дальнейшее распространение события? |
||
250 | |||
251 | h3. Назовите различные пути для получения элемента из DOM дерева? |
||
252 | |||
253 | h3. Какой наибыстрейший метод для получения элемента через css селектор? |
||
254 | |||
255 | h3. Могу ли я удалить удалить обработчик события с элемента? |
||
256 | |||
257 | h3. Почему querySelectorAll(‘.my-class’) медленнее, чем getElementsByClassName(‘myclass’)? |
||
258 | |||
259 | h3. Почему я не могу использовать forEach или похожий метод массива для NodeList? |
||
260 | |||
261 | h3. Если вам необходимо реализовать getElementByAttribute, как вы будете это делать? |
||
262 | |||
263 | h3. Как бы вы добавили класс к элементу через селектор? |
||
264 | |||
265 | h3. Как я могу запустить обработчик в фазе захвата, а не в фазе всплытия? |
||
266 | |||
267 | h3. Как проверить, что один элемент является дочерним другому? |
||
268 | |||
269 | h3. Какой метод больше всего подходит для создания DOM элемента? Что лучше innerHTML или createElement? |
||
270 | |||
271 | h3. Каким образом можно предотвратить множественный вызов обработчика для одного события? |
||
272 | |||
273 | h3. Что такое reflow? |
||
274 | |||
275 | h3. Как я могу проверить были событие отменено или нет? |
||
276 | |||
277 | h3. Какие причины reflow? Как можно уменьшить reflow? |
||
278 | |||
279 | h3. Что такое repaint и когда оно происходит? |
||
280 | |||
281 | h3. Есть ли что-то такое о чём нужно позаботится при использовании node.cloneNode()? |
||
282 | |||
283 | h3. Как быть уверенным в том, что DOM подготовлен и можно выполнять JavaScript, как реализовать $(document).ready? |
||
284 | |||
285 | h3. Что такое всплытие? |
||
286 | |||
287 | h3. Как можно уничтожить несколько элементов с одним вызовом click? |
||
288 | |||
289 | h3. Как предотвратить нажатие по ссылке? |
||
290 | |||
291 | h3. Создайте кнопку, которая удаляется при нажатии на неё, и создаются две новые кнопки в этом же месте. |
||
292 | |||
293 | h3. Как отлавливать все нажатия на странице? |
||
294 | |||
295 | h3. Как получить весь текст на странице? |
||
296 | |||
297 | h3. Что такое defer и async? |
||
298 | |||
299 | h3. Какие существуют типы нод? |