Дикий Григорий

Full-stack веб-разработчик

Вопросы и ответы по JavaScript. Часть 2

Доброго времени суток! Сегодня продолжим разбирать актуальные вопросы по JavaScript. Хочу заметить, что вопросы относятся более к новичкам, нежели к настоящим "гуру". Такие вопросы актуальны в мире web разработки. Без этих вопросов трудно понять работу JavaScript.

1. Как можно конвертировать строку в число, причем строка - есть число в произвольном коде?

Для этих целей можно использовать функцию parseInt(), где первым параметром указывается строка, а вторым основание числа.

parseInt("4F", 16);

2. В чем состоит разница между "==" и "==="?

Разница заключается в том, что при тройном равно используется более строгое сравнение, то есть без привидения типов. При двойном двоеточии делается привидение типов, после чего сравниваются величины.

3. Каков результат операции 2 + 4 + "6"?

Так как 2 и 4 числового типа, то соответственно они складываются, а так как 7 является строкой, то происходит конкатенация 6 + "6". Важно отметить что происходит неявное привидение типов.

4. Что означает undefined в JavaScript?

Undefined может означать, что:

  • Используемая переменная в коде не существует
  • Переменная не имеет значения
  • Свойство не существует

5. Как при помощи JavaScript перейти на другой URL адрес?

Для таких целей можно использовать следующую конструкцию:

location.href="http://host/newfile.html";

6. В чем недостатки innerHTML?

Это свойство при изменении полностью изменяет элемент в котором используется. Даже конструкция типа innerHTML= innerHTML + content инициализирует полную элемента элемента.

7. Как можно изменить свойство объекта?

Свойство объекта можно изменить следующими способами:

obj.property = 'new value';
obj['property'] = 'new value';

8. Объясни использование цикла for ... in?

Цикл for ... in используется для прохождения по свойствам объекта. Также его можно использовать и для массивов, так как массив является частным случаем объекта.

9. Что такое анонимная функция в JavaScript?

Анонимная функция - это функция без имени. Ее удобно использовать в качестве callback функции. К примеру:

setTimeout(function(){
        alert('Hi!');
    },1000);

10. В чем заключается разница между .call и .apply?

.call() и .apply() очень похожие функции. Они используют для подмены контекста вызываемой функции. При их вызове происходит вызов функции, в отличии от .bind(), который только возвращает функцию в качестве результата. Разница между .call() и .apply() в том, что .call() использует заранее известное количество аргументов, а .apply() вызывается с заранее неизвестным количеством аргументов.