JavaScript — это язык сценариев как на стороне клиента, так и на стороне сервера, который может быть вставлен в HTML-страницы и понимается веб-браузерами. JavaScript также является объектно-ориентированным языком программирования
Что такое типы данных JavaScript?
Число
Строка
Булево
Объект
Неопределенный
Какая компания разработала JavaScript?
Netscape — это компания, разработавшая JavaScript.
Каковы особенности JavaScript?
Ниже перечислены особенности JavaScript:
Это легкий интерпретируемый язык программирования.
Он предназначен для создания сетецентрических приложений.
Он дополняет и интегрирован с Java.
Это открытый и кроссплатформенный язык сценариев.
Является ли JavaScript языком, чувствительным к регистру?
Да, JavaScript — это язык, чувствительный к регистру. Ключевые слова языка, переменные, имена функций и любые другие идентификаторы должны всегда набираться с последовательным использованием заглавных букв.
В чем разница между неопределенным и не определенным в JavaScript?
В JavaScript, если вы попытаетесь использовать переменную, которая не существует и не была объявлена, то JavaScript выдаст ошибку var name is not defined и сценарий прекратит выполнение. Однако если вы используете typeof undeclared_variable, то он вернет неопределенное значение.
Прежде чем углубиться в этот вопрос, давайте сначала поймем разницу между объявлением и определением.
Скажем, var x — это объявление, потому что вы еще не определили, какое значение она содержит, но вы объявили о ее существовании и необходимости выделения памяти.
> var x; // declaring x
> console.log(x); //output: undefined
Здесь var x = 1 — это и объявление, и определение (также можно сказать, что мы выполняем инициализацию). В приведенном примере объявление и присвоение значения переменной x происходит inline. В JavaScript каждое объявление переменной или функции, которое вы поднимаете на вершину ее текущей области видимости, называется hoisting.
Присвоение происходит по порядку, поэтому, когда мы попытаемся обратиться к переменной, которая объявлена, но еще не определена, мы получим результат undefined.
var x; // Declaration
if(typeof x === 'undefined') // Will return true
Если переменная не объявлена и не определена, то при попытке обращения к такой переменной мы получим результат not defined.
> console.log(y); // Output: ReferenceError: y is not defined
Что такое «закрытие» в JavaScript? Приведите пример
Замыкание — это функция, определенная внутри другой функции (называемой родительской), и имеющая доступ к переменным, которые объявлены и определены в области видимости родительской функции.
Замыкание имеет доступ к переменным в трех областях видимости:
Переменные, объявленные в собственной области видимости
Переменные, объявленные в области видимости родительской функции
Переменные, объявленные в глобальном пространстве имен
var globalVar = "abc";
// Parent self invoking function
(function outerFunction (outerArg) { // begin of scope outerFunction
// Variable declared in outerFunction function scope
var outerFuncVar = 'x';
// Closure self-invoking function
(function innerFunction (innerArg) { // begin of scope innerFunction
// variable declared in innerFunction function scope
var innerFuncVar = "y";
console.log(
"outerArg = " + outerArg + "n" +
"outerFuncVar = " + outerFuncVar + "n" +
"innerArg = " + innerArg + "n" +
"innerFuncVar = " + innerFuncVar + "n" +
"globalVar = " + globalVar);
}// end of scope innerFunction)(5); // Pass 5 as parameter
}// end of scope outerFunction )(7); // Pass 7 as parameter
innerFunction — это замыкание, которое определяется внутри outerFunction и имеет доступ ко всем переменным, объявленным и определенным в области видимости outerFunction. Кроме того, функция, определенная внутри другой функции как замыкание, будет иметь доступ к переменным, объявленным в глобальном пространстве имен.
Таким образом, результатом приведенного выше кода будет:
outerArg = 7
outerFuncVar = x
innerArg = 5
innerFuncVar = y
globalVar = abc
Каким будет вывод следующего кода?
var output = (function(x){
delete x;
return x; })(0);
console.log(output);
На выходе будет 0. Оператор delete используется для удаления свойств объекта. Здесь x — не объект, а локальная переменная. Операторы delete не влияют на локальные переменные.
Каковы преимущества JavaScript?
Ниже перечислены преимущества использования JavaScript.
Меньше взаимодействия с сервером — Вы можете проверять вводимые пользователем данные перед отправкой страницы на сервер. Это экономит трафик сервера, что означает меньшую нагрузку на ваш сервер.
Мгновенная обратная связь с посетителями — им не нужно ждать перезагрузки страницы, чтобы узнать, не забыли ли они что-то ввести.
Повышенная интерактивность _- Вы можете создавать интерфейсы, которые реагируют, когда пользователь наводит на них курсор мыши или активирует их с помощью клавиатуры.
Более богатые интерфейсы — Вы можете использовать JavaScript для включения таких элементов, как компоненты перетаскивания и слайдеры, чтобы предоставить посетителям вашего сайта богатый интерфейс.
Как вы можете создать объект в JavaScript?
JavaScript очень хорошо поддерживает концепцию объекта. Вы можете создать объект с помощью литерала object следующим образом.
1
2
3
4
var emp = {
name: "Daniel",
age: 23
};
Как создать массив в JavaScript?
Вы можете определять массивы с помощью литерала array следующим образом.
1
2
var x = [];
var y = [1, 2, 3, 4, 5];
В чем разница между Java & JavaScript?
Java JavaScript Java — это язык программирования ООП. JavaScript — это язык сценариев ООП. Он создает приложения, которые запускаются на виртуальной машине или в браузере. Код выполняется только в браузере. Код Java должен быть скомпилирован. Код JavaScript представлен в виде текста.
Каковы области применения переменной в JavaScript?
Область видимости переменной — это область вашей программы, в которой она определена. Переменная JavaScript имеет только две области видимости.
— Глобальные переменные — глобальная переменная имеет глобальную область видимости, что означает, что она видна везде в коде JavaScript.
— Локальные переменные — локальная переменная будет видна только в пределах функции, в которой она определена. Параметры функции всегда локальны для этой функции.
Каково назначение оператора ‘This’ в JavaScript?
В JavaScript ключевое слово this относится к объекту, к которому оно принадлежит. Это имеет различные значения в зависимости от того, где оно используется. В методе это относится к объекту-владельцу, а в функции — к глобальному объекту.
Как работает оператор TypeOf?
Оператор typeof используется для получения типа данных своего операнда. Операндом может быть либо литерал, либо структура данных, такая как переменная, функция или объект. Это унарный оператор, который помещается перед своим единственным операндом, который может быть любого типа. Его значение — это строка, указывающая на тип данных операнда.
В чем разница между атрибутами и свойствами?
Атрибуты — предоставляют более подробную информацию об элементе, такую как id, тип, значение и т.д.
Свойство — это значение, присвоенное свойству, например type=»text», value=’Name’ и т.д.
Перечислите различные способы доступа к элементу HTML в коде JavaScript.
Ниже приведен список способов доступа к элементу HTML в коде Javascript:
(i) getElementById(‘idname’): Получает элемент по его идентификационному имени
(ii) getElementsByClass(‘classname’): Получает все элементы, которые имеют заданное имя класса.
(iii)_ getElementsByTagName(‘tagname’): Получает все элементы с заданным именем тега.
(iv) _querySelector(): Эта функция принимает селектор стиля css и возвращает первый выбранный элемент.
Сколькими способами код JavaScript может быть включен в HTML-файл?
Существует 3 различных способа, с помощью которых код JavaScript может быть включен в HTML-файл:
Внутренний
Внутренний
Внешний
Какими способами можно определить переменную в JavaScript?
В JavaScript существует три возможных способа определения переменной:
Var — Оператор переменных JavaScript используется для объявления переменной и, по желанию, мы можем инициализировать значение этой переменной. Пример: var a =10; Объявление переменной обрабатывается перед выполнением кода.
Const — Идея функций const заключается в том, чтобы не позволять им изменять объект, на котором они вызываются. Когда функция объявлена как const, она может быть вызвана на объекте любого типа.
Let — Это сигнал о том, что переменная может быть переназначена, например, счетчик в цикле или подмена значения в алгоритме. Он также сигнализирует, что переменная будет использоваться только в том блоке, в котором она определена.
В чем разница между операторами ‘==’ & ‘===’?
Основное различие между операторами «==» и «===» заключается в том, что первый сравнивает переменные, делая коррекцию типа, например, если вы сравниваете число со строкой с числовым литералом, == позволяет это сделать, а === не позволяет, потому что он проверяет не только значение, но и тип двух переменных, если две переменные не одного типа, «===» возвращает false, а «==» возвращает true.
В чем разница между null & undefined?
Неопределенная переменная означает, что она была объявлена, но ей еще не было присвоено значение. С другой стороны, null — это значение присвоения. Оно может быть присвоено переменной как представление отсутствия значения. Кроме того, undefined и null — это два разных типа: undefined — это сам тип (неопределенный), а null — это объект.
Как можно удалить элемент из массива? Можно ли использовать delete для удаления элемента из массива или нет?
Во-первых, мы не должны использовать delete для удаления элемента из массива. Потому что delete удаляет только значение элемента массива, а не весь элемент. Поэтому индекс все еще остается неопределенным. А длина не изменится. delete следует использовать для удаления свойства объекта.
Лучший способ удалить элемент — использовать метод splice.
Что такое instanceof в JavaScript?
Этот оператор проверяет, имеет ли объект свойство прототипа данного конструктора в своей цепочке прототипов. Например,
function Car(name)
{
this.name = name;
}
var mycar = new Car('Honda');
mycar instanceof Car; //true
mycar instanceof Car; returns true since the mycar is constructed from the Car.
Как получить список всех свойств объекта Object?
Простой способ — использовать Object.keys(). Это вернет массив перечислимых свойств данного объекта.
Если нам нужны все свойства, даже неперечислимые, мы можем использовать Object.getOwnPropertyNames().
Что такое shift() и push? Чем они отличаются друг от друга?
«shift() удаляет первый элемент из массива и возвращает его.»’ С другой стороны, функция unshift() добавляет заданный элемент в начало массива». push() добавляет заданный элемент в конец массива. «И, pop() удаляет последний элемент из массива».
Что такое числовые и строковые объекты в JavaScript?
В JavaScript есть объекты Number и String для работы с примитивными типами number и string. Нам не нужно явно создавать и использовать объекты Number и String. JavaScript использует их для преобразования примитивных типов в объекты, когда мы обращаемся к любым свойствам или методам примитивных типов. Например,
var str = 'Javascript';
str.length //10
Здесь мы объявляем переменную str и присваиваем ей примитивную строку. При обращении к свойству length, примитивные типы на самом деле не имеют свойства length, но компилятор JavaScript преобразует эту примитивную строку в строку Object, и возвращает свойство length. Чтобы сказать более ясно, JavaScript возвращает new String(str).length. И этот объект String будет немедленно удален из памяти, как только он вернет требуемое значение. Поэтому мы не увидим никакой разницы. Помните, что объявление строки как var str = ‘Javascript’; отличается от объявления объекта String как
var str = new String('Javascript');. The latter will return object.
var str = new String('Javascript');
typeof str; //object
Что такое прототип в javascript?
Каждый объект имеет прототип в javascript, поэтому вы можете добавить свойство к объекту на основе прототипа. Вы можете создать мгновенное свойство.
Что такое undefined?
В javascript неопределенное означает, что переменная объявлена, но не содержит значения.
Что такое не определено?
Переменная еще не объявлена.
Что такое закрытие?
Переменная имеет свою собственную область видимости, родительскую область видимости и глобальную область видимости.
В чем разница между let и const?
let имеет область видимости на уровне блока, а значения const никогда не меняются.
Что такое подъем переменной?
Все переменные поднимаются на вершину функции и объявляют переменную.
Как создать объект?
Object.Create();
Что такое окно подсказки в JavaScript?
Окно подсказки — это окно, которое позволяет пользователю вводить данные в текстовую область, выводит диалоговое окно, которое содержит «OK» и «Cancel» для дальнейшей обработки после ввода значения.
Объясните равенство в JavaScript
В JavaScript есть строгое сравнение и сравнение с преобразованием типов:
Строгое сравнение (например, ===) проверяет равенство значений, не допуская принуждения.
Абстрактное сравнение (например, ==)_ проверяет равенство значений с разрешенным принуждением.
var a = "42";
var b = 42;
a == b; // true
a === b; // false
Некоторые простые правила равенства:
-
Если любое значение (оно же сторона) в сравнении может быть истинным или ложным, избегайте == и используйте ===.
-
Если любое значение в сравнении может быть одним из этих конкретных значений (0, «», или [] — пустой массив), избегайте == и используйте ===.
-
Во всех остальных случаях можно смело использовать ==. Это не только безопасно, но и во многих случаях упрощает код, улучшая его читабельность.
Что такое IIFEs (Immediately Invoked Function Expressions)?
Это Immediately-Invoked Function Expression, или сокращенно IIFE. Оно выполняется сразу после создания:
(function IIFE(){
console.log( "Hello!" );
})();
// "Hello!"
Этот паттерн часто используется при попытке избежать загрязнения глобального пространства имен, поскольку все переменные, используемые внутри IIFE (как и в любой другой обычной функции), не видны за пределами его области видимости.
Когда следует использовать функции Arrow в ES6?
Сейчас я использую следующее эмпирическое правило для функций в ES6 и далее:
-
Используйте function в глобальной области видимости и для свойств Object.prototype.
-
Используйте class для конструкторов объектов.
-
Используйте => везде.
Зачем использовать стрелочные функции почти везде?
Безопасность области видимости: Когда стрелочные функции используются последовательно, все гарантированно используют один и тот же объект thisObject в качестве корня. Если даже один стандартный обратный вызов функции смешивается с кучей стрелочных функций, есть шанс, что область видимости будет перепутана.
Компактность: Стрелочные функции легче читать и писать. (Это может показаться спорным, поэтому далее я приведу несколько примеров).
Ясность: Когда почти все является стрелочной функцией, любая обычная функция сразу выделяется при определении области видимости. Разработчик всегда может заглянуть в оператор следующей, более высокой функции, чтобы узнать, что такое thisObject.
**
Каковы различия между конструкторами классов ES6 и конструкторами функций ES5?
// ES5 Function Constructor
function Person(name) {
this.name = name;
}
// ES6 Class
class Person {
constructor(name) {
this.name = name;
}
}
Объясните разницу между Object.freeze() и const
const и Object.freeze — это две совершенно разные вещи.
-
const применяется к привязкам («переменным»). Она создает неизменяемую привязку, т.е. вы не можете присвоить привязке новое значение.
-
Object.freeze работает со значениями, а точнее, со значениями объектов. Она делает объект неизменяемым, т.е. вы не можете изменить его свойства.
Как проверить, является ли переменная объектом.
Вы можете использовать typeof, чтобы определить, является ли переменная объектом, однако имейте в виду, что null на самом деле является объектом! Однако объект null является «ложным», поэтому сработает следующее:
if(bar && typeof bar === "object") {
console.log('bar is object and is not null');
}
Объясните hoisting в JavaScript.
Поскольку некоторые могут быть не знакомы с термином ‘hoisting’, но имеют соответствующий опыт, этот вопрос можно задать косвенно.
В JavaScript объявления функций ( function foo() {} ) и переменных ( var bar ) «поднимаются», то есть молча перемещаются на самый верх области видимости. Рассмотрим следующий код:
(function() {
console.log(bar); //returns 'undefined'
//console.log(baz) // error: baz is not defined
foo(); // outputs 'aloha' to the console
//function declaration AND its body is hoisted
function foo() {
console.log('aloha');
}
//variable declaration is hoisted but value assignment stays here
var bar = 1;
baz = 2; //defines baz in global scope
})();
Объясните прототипное/дифференциальное наследование
Концептуально это очень просто: Новый объект может наследовать свойства старого объекта.
Хотя JavaScript всегда был языком, ориентированным на прототипы, инструменты для работы с прототипами несколько отсутствовали.
Object.create
используемый в приведенном выше фрагменте кода, был добавлен в ECMAScript 5.
Что такое строгий режим в JavaScript
Строгий режим был введен как часть ECMAScript 5 и представляет собой новый, ограниченный вариант JavaScript, который имеет следующие цели:
-
Выбрасывает ошибки для действий, которые являются довольно глупыми, но ранее не вызывали ошибок
-
Выбрасывает ошибки при потенциально опасных действиях
-
Отключает функции, которые плохо продуманы
-
Потенциально код в строгом режиме может работать быстрее за счет устранения ошибок, которые затрудняют оптимизацию JavaScript движками.