Проект

Общее

Профиль

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. Какие существуют типы нод?
Go to top