Убрать первый и последний символ
Задача проста. Вам нужно написать функцию, которая принимает строку и убирает в ней первый и последний символ.
👉 @frontendInterview
Задача проста. Вам нужно написать функцию, которая принимает строку и убирает в ней первый и последний символ.
👉 @frontendInterview
Как задать стили к двум последним элементам li?
Anonymous Quiz
13%
li + li + li
55%
li:nth-child(n+2)
32%
li:nth-last-child(n+3)
Что такое IIFE?
IIFE (Immediately Invoked Function Expression) — это немедленно вызываемое функциональное выражение. Такое выражение выполняется немедленно после создания.
👉 @frontendInterview
IIFE (Immediately Invoked Function Expression) — это немедленно вызываемое функциональное выражение. Такое выражение выполняется немедленно после создания.
(function IIFE(){
console.log( "Hello!" );
})();
// "Hello!"
Этот паттерн часто используется для того чтобы не допустить загрязнения глобального пространства имён. Дело в том, что переменные, объявленные в IIFE (как и в любой другой обычной функции), невидимы за пределами этой функции.👉 @frontendInterview
Когда следует использовать стрелочные функции, которые появились в ES6?
Вот простые правила по использованию различных способов объявления функций, которыми я руководствуюсь, разрабатывая код для сред, поддерживающих стандарт ES6 и более новые стандарты:
1. Используйте ключевое слово function в глобальной области видимости и для свойств Object.prototype.
2. Используйте ключевое слово function для конструкторов объектов.
В остальных случаях используйте стрелочные функции.
Как видите, стрелочные функции рекомендуется использовать практически везде. У такого положения дел есть несколько причин:
1. Удобная работа с контекстом. Стрелочные функции используют значение this окружающего контекста, не имея собственного this. Если такие функции применяются последовательно, без использования обычных функций в сложных конструкциях, это обеспечивает безопасную работу с контекстом.
2. Компактность. Код стрелочных функций легче вводить и легче читать. Возможно, это преимущество стрелочных функций перед обычными покажется вам спорным и зависящим от точки зрения каждого конкретного разработчика.
3. Ясность кода. Если практически весь код представлен стрелочными функциями, любая обычная функция выделяется в таком коде тем, что создаёт собственный контекст. Применяя стрелочные функции, программист создаёт более понятный код, в котором легче, чем в коде без стрелочных функций, работать с this.
👉 @frontendInterview
Вот простые правила по использованию различных способов объявления функций, которыми я руководствуюсь, разрабатывая код для сред, поддерживающих стандарт ES6 и более новые стандарты:
1. Используйте ключевое слово function в глобальной области видимости и для свойств Object.prototype.
2. Используйте ключевое слово function для конструкторов объектов.
В остальных случаях используйте стрелочные функции.
Как видите, стрелочные функции рекомендуется использовать практически везде. У такого положения дел есть несколько причин:
1. Удобная работа с контекстом. Стрелочные функции используют значение this окружающего контекста, не имея собственного this. Если такие функции применяются последовательно, без использования обычных функций в сложных конструкциях, это обеспечивает безопасную работу с контекстом.
2. Компактность. Код стрелочных функций легче вводить и легче читать. Возможно, это преимущество стрелочных функций перед обычными покажется вам спорным и зависящим от точки зрения каждого конкретного разработчика.
3. Ясность кода. Если практически весь код представлен стрелочными функциями, любая обычная функция выделяется в таком коде тем, что создаёт собственный контекст. Применяя стрелочные функции, программист создаёт более понятный код, в котором легче, чем в коде без стрелочных функций, работать с this.
👉 @frontendInterview
В чём разница между ES6-классами и конструкторами функций?
Сначала рассмотрим примеры.
Функция-конструктор:
Основная разница между конструкторами и классами проявляется при использовании наследования. Если нам нужно создать класс Student, являющийся подклассом класса Person, и добавить к этому новому классу поле studentId, то вот как будет выглядеть код, в котором используются конструкторы, и код, в котором применяются классы.
Функция-конструктор:
👉 @frontendInterview
Сначала рассмотрим примеры.
Функция-конструктор:
function Person(name) {
this.name = name;
}
ES6-класс: class Person {
constructor(name) {
this.name = name;
}
}
Если речь идёт о создании простых объектов, то конструкторы и классы, используемые для этой цели, выглядят очень похоже.Основная разница между конструкторами и классами проявляется при использовании наследования. Если нам нужно создать класс Student, являющийся подклассом класса Person, и добавить к этому новому классу поле studentId, то вот как будет выглядеть код, в котором используются конструкторы, и код, в котором применяются классы.
Функция-конструктор:
function Student(name, studentId) {
// Вызываем конструктор суперкласса для инициализации полей, унаследованных от него.
Person.call(this, name);
// Инициализация собственных полей объекта.
this.studentId = studentId;
}
Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;
ES6-класс: class Student extends Person {
constructor(name, studentId) {
super(name);
this.studentId = studentId;
}
}👉 @frontendInterview
Software Development From A to Z (2018)
Прочитав данное руководство, вы научитесь понимать общую картину процесса разработки программного обеспечения. Эта книга проведет вас через весь процесс создания приложений, от самых основ до готового продукта: обзор бэкэнд разработки - от баз данных до протоколов связи, включая практические навыки программирования в Java, и обзор фронтенд разработки - от HTML до CSS и Vue.js. Также вы освоите тестирование с использованием Selenium.
👉 @frontendInterview
Прочитав данное руководство, вы научитесь понимать общую картину процесса разработки программного обеспечения. Эта книга проведет вас через весь процесс создания приложений, от самых основ до готового продукта: обзор бэкэнд разработки - от баз данных до протоколов связи, включая практические навыки программирования в Java, и обзор фронтенд разработки - от HTML до CSS и Vue.js. Также вы освоите тестирование с использованием Selenium.
👉 @frontendInterview
Четные, умноженные на последний
Вам дан массив чисел. Напишите функцию, которая вернет сумму чисел с четными индексами умноженные на число с последним индексом.
Пример:
👉 @frontendInterview
Вам дан массив чисел. Напишите функцию, которая вернет сумму чисел с четными индексами умноженные на число с последним индексом.
Пример:
evenLast([2, 3, 4, 5]) => 30👉 @frontendInterview
Графика на JavaScript
В этой книге рассказывается, как, работая с JavaScript, jQuery, DHTML и элементом Canvas (холст), появившимся в HTML5, создавать насыщенные веб-приложения для ПК и мобильных устройств. С появлением HTML5 и усовершенствованной браузерной поддержки язык JavaScript стал исключительно удобным для создания высокопроизводительной веб-графики.
Опытный веб-разработчик, прочитав данное издание, на практических примерах изучит интересные и полезные подходы к созданию аркадных игр, эффектов DHTML и т. д. Сложные темы представлены в книге в виде легких для усвоения фрагментов.
👉 @frontendInterview
В этой книге рассказывается, как, работая с JavaScript, jQuery, DHTML и элементом Canvas (холст), появившимся в HTML5, создавать насыщенные веб-приложения для ПК и мобильных устройств. С появлением HTML5 и усовершенствованной браузерной поддержки язык JavaScript стал исключительно удобным для создания высокопроизводительной веб-графики.
Опытный веб-разработчик, прочитав данное издание, на практических примерах изучит интересные и полезные подходы к созданию аркадных игр, эффектов DHTML и т. д. Сложные темы представлены в книге в виде легких для усвоения фрагментов.
👉 @frontendInterview
Для чего обычно используются анонимные функции?
Анонимные функции используются при создании IIFE — конструкций, переменные, объявленные в которых, не загрязняют глобальную область видимости.
Анонимные функции используются при создании IIFE — конструкций, переменные, объявленные в которых, не загрязняют глобальную область видимости.
(function() {
// Какой-то код.
})();
Анонимные функции применяют в качестве функций обратного вызова, которые используются лишь в одном месте программы. Код будет выглядеть более самодостаточным и читабельным в том случае, если коллбэк будет объявлен прямо в том месте, где он используется. Это избавляет от необходимости просматривать код в поиске тела функции. setTimeout(function() {
console.log('Hello world!');
}, 1000);
Анонимные функции удобно использовать в конструкциях, характерных для функционального стиля программирования, или при работе с библиотеками вроде Lodash (этот вариант их использования похож на их применение в качестве коллбэков). const arr = [1, 2, 3];
const double = arr.map(function(el) {
return el * 2;
});
console.log(double); // [2, 4, 6]Чему равен margin-top элемента div с классом in?
Anonymous Quiz
34%
100px
44%
12.5px
14%
50px
8%
75px
В чём разница между методом Object.freeze() и ключевым словом const?
Ключевое слово const и метод Object.freeze() — это совершенно разные вещи.
Ключевое слово const применяется к привязкам (к «переменным»). Оно создаёт иммутабельную привязку, то есть — к переменной (константе), объявленной с помощью const, нельзя привязать что-то новое. Константе нельзя присвоить новое значение.
Ключевое слово const и метод Object.freeze() — это совершенно разные вещи.
Ключевое слово const применяется к привязкам (к «переменным»). Оно создаёт иммутабельную привязку, то есть — к переменной (константе), объявленной с помощью const, нельзя привязать что-то новое. Константе нельзя присвоить новое значение.
const person = {
name: "Leonardo"
};
let animal = {
species: "snake"
};
person = animal; // Uncaught TypeError: Assignment to constant variable.
Метод Object.freeze() работает со значениями. А точнее — с объектными значениями. Он делает объект иммутабельным, что защищает от изменений значения свойств этого объекта. let person = {
name: "Leonardo"
};
Object.freeze(person);
person.name = "Lima"; // Uncaught TypeError: Cannot assign to read only property 'name' of object
console.log(person);
Обратите внимание на то, что сообщение об ошибке выводится в строгом режиме. В обычном режиме операция просто не сраб