Забавный способ выучить JavaScript для ваших интервью с интервью/веб -кодированием. На все вопросы отвечаются здесь, в тексте, а также есть видео на нашем канале YouTube. Нажмите
Не стесняйтесь обращаться к нам на наших социальных платформах! ?
Раздор || Instagram || Twitter || Тикток || Блог || Facebook
Поддерживать
Пожалуйста, ️ Светь этот проект и поделитесь им с другими, чтобы показать свою поддержку. Следуйте за мной ❤ для обновлений о будущих проектах и учебных пособиях!
Основы языка - массивы - дата и время - объектно -ориентированный JavaScript - Модули - Разное
console . log ( new Date ( 2023 , 1 , 31 ) )Tue Jan 31 2024Tue Jan 31 2023Fri Mar 03 2023ErrorВ JavaScript, в то время как строительство дат с использованием объектов даты месяцы основаны на 0. Что означает, что 0 для января, а 1 - на февраль.
Итак, в этом случае мы просим JavaScript установить дату 2023 года 31 февраля, которой не существует.
Но вместо того, чтобы бросить ошибку, JavaScript переполнит его на следующий месяц, который будет март.
А с февраля 2023 года всего 28 дней, код будет переполнен на 3 дня, что сделает результат 3 марта 2023 года.
var username = 'kirandash'
var username = 'bgwebagency'
console . log ( username )bgwebagencykirandashReferenceErrorSyntaxError Мы можем объявить одну и ту же переменную несколько раз, используя ключевое слово var . И переменная будет иметь значение, которое было назначено в конце.
Но мы не можем объявить одну и ту же переменную несколько раз, используя let или const
const user = {
username : 'kirandash' ,
updateUsername : newName => {
this . username = newName
} ,
}
user . updateUsername ( 'bgwebagency' )
console . log ( user . username )bgwebagencyReferenceErrorkirandashundefined Потому что функция updateUsername не работает должным образом и не может обновить username user .
Функция updateUsername в пользовательском object является функцией стрелки и не связана с объектом user .
Таким образом, this ключевое слово внутри функции UpdateUsername не относится к объекту user , а относится к глобальной области.
Чтобы решить эту проблему, мы должны изменить функцию стрелки на нормальную функцию.
const len1 = 'kiran' . length
const len2 = '?' . length
console . log ( len1 , len2 )5, 25, 15, undefined5, SyntaxErrorВ JavaScript свойство длины строки возвращает количество байтов, а не количество символов, которые мы ожидаем.
Эмодзи - это символ Unicode, который кодируется в двух байтах. Поэтому ответ 2 для этого вопроса.
Длина строки для kiran возвращает 5 потому что в строке каждый символ составляет 1 байт.
console . log ( undefined == null , undefined === null )true, truetrue, falsefalse, falsefalse, trueСначала позвольте мне объяснить разницу между равным и строгим равным оператором.
Равный оператор проверяет, только оба значения равны. Строгие равные операторы проверяют, как значение, так и тип равны.
Таким образом, в этом коде первое оператор undefined == null возвращает true поскольку как undefined , так и null имеют одинаковое значение, которое является пустым.
Но второе утверждение undefined === null возвращает false . Поскольку typeof undefined undefined , тогда как typeof null является object .
Вы можете задаться вопросом, почему typeof null является object , когда null в основном является примитивным типом данных. Это в основном ошибка в JavaScript с самого начала.
Теперь еще один совет для вас: когда вы хотите установить пустое значение для переменной. Используйте null вместо undefined . Поскольку undefined в основном используется для проверки, не присваивается ли у переменной значение.
function getFruits ( x , ... multi , y ) {
console . log ( x , y , multi ) ;
}
getFruits ( "?" , "?" , "?" , "?" , "?" )? ? ["?", "?", "?"]SyntaxErrorОператоры REST были добавлены в рамках функции ES6.
Он принимает все аргументы, передаваемые функции и ставит его в массив.
Если несколько аргументов передаются в функцию, то оператор REST должен прийти в конце. Вот почему этот фрагмент кода принесет ошибку.
Чтобы решить эту проблему, пожалуйста, переместите оператора REST до конца, а затем он должен работать.
let x = Number . NEGATIVE_INFINITY
let y = Number . POSITIVE_INFINITY
let z = x + y
console . log ( z )0undefinedNaNTypeErrorOTED_INFINITY и POLITION_INFINITY являются свойствами объекта числа в JavaScript, который представляет математическую концепцию негативной бесконечности и положительной бесконечности.
Когда вы добавляете number.negative_infinity и number.positive_infinity, результат - NAN.
Добавление положительного бесконечного значения к отрицательному бесконечному значению не приводит к значимому численному значению.
Так что в этом случае Z будет NAN.
Обратите внимание, что код не будет выбросить типов, так как javaScript может выполнить операцию добавления между Number.negative_infinity и Number.positive_infinity.
console . log ( 'BG Web Agency' === NaN , isNaN ( 'BG Web Agency' ) )true, truefalse, truetrue, falsefalse, false Использование === NaN , чтобы проверить, не будет ли значение, не будет работать.
В JavaScript NaN (не число) является специальным значением, которое представляет собой неверное число.
NAN не равна ничему, включая себя, поэтому выражение "BG Web Agency" === NaN всегда вернет false .
Чтобы проверить, является ли значение в JavaScript, вы можете использовать функцию isNaN() . Эта функция возвращает true если аргумент передан к NaN , или если она не может быть преобразована в число.
console . log ( isFinite ( Infinity ) , isNaN ( Infinity ) )false, falsefalse, truetrue, falsefalse, false Функция isFinite() используется для определения того, является ли данное значение конечным числом.
Он возвращает false, если значение -NAN, Infinity или -infinity, и true, если значение является конечным числом.
Таким образом, в этом примере isFinite(Infinity) вернет ложь, потому что бесконечность не является конечным числом.
С другой стороны, функция ISNAN () используется для определения того, является ли данное значение не числом (NAN).
Он возвращает True, если значение является NAN, и false, если значение является числом или любым другим типом данных.
Таким образом, в этом примере isNaN(Infinity) также вернет ложь, потому что бесконечность не NAN.
Поэтому всегда используйте функцию isFinite вместо функции isNaN , когда вы хотите проверить, конечно ли число
const user = {
name : 'John' ,
age : 30 ,
getName : ( ) => {
return this . name
} ,
getAge : function ( ) {
return this . age
} ,
}
const getName = user . getName
const getAge = user . getAge
console . log ( getName ( ) )
console . log ( getAge ( ) ) Функция стрелки getName использует this ключевое слово для обозначения свойства имени объекта, но поскольку функции со стрелками имеют лексическую this привязку, значение this ключевого слова внутри функции стрелки будет глобальным объектом, который является window в браузере или global в node.js.
Поскольку на global объекте нет свойства имен, функция возвращает undefined .
Функция getAge использует регулярное выражение функции и правильно относится к возрастному свойству user объекта, используя this ключевое слово.
Но когда getAge назначается переменной getAge , она теряет ссылку на user объект, поэтому, когда функция называется с помощью getAge() , это снова обратится к глобальному объекту, и, поскольку на глобальном объекте нет возрастного свойства, функция возвращает неопределенную.
for ( var i = 0 ; i < 3 ; i ++ ) {
setTimeout ( function ( ) {
console . log ( i )
} , 0 )
}Закрытие - это функция, которая сохраняет доступ к переменным в его внешней области, даже после возвращения внешней функции.
В этом примере ответ B, потому что функция Settimeout является асинхронной и не выполняется сразу.
К тому времени, когда функция обратного вызовов передается в Settimeout, цикл уже завершен, а переменная I имеет значение 3.
Следовательно, каждый вызов в консоли. Log (i) Внутри функции обратного вызова будет печатать 3.
Чтобы решить эту проблему и печатать 0, 1, 2, мы можем использовать IIFE (немедленно вызывшее выражение функции), чтобы создать новую область для каждой итерации цикла.
Это создает новую переменную j внутри каждого IIFE, с собственной копией текущего значения I на этой итерации цикла.
Когда функция обратного вызова, передаваемая в Settimeout, выполняется, она имеет доступ к j переменной в своем закрытии, что имеет ожидаемое значение 0, 1 или 2 для каждой итерации цикла.
function add ( x ) {
return function ( y ) {
if ( y !== undefined ) {
x += y
return arguments . callee
} else {
return x
}
}
}
console . log ( add ( 1 ) ( 2 ) ( 3 ) ( ) )Правильный ответ - A. Код определяет функцию добавления, которая принимает один аргумент x и возвращает другую функцию, которая принимает один аргумент y.
Эта внутренняя функция проверяет, определяется ли Y. Если это определено, он добавляет y к X и возвращает ссылку на себя, используя свойство Arguments.callee, которое позволяет рекурсивно вызову функции со следующим аргументом.
Если y не определен, он возвращает текущее значение x.
Затем кодовые вызовы добавить (1) (2) (3) (). Эти первые вызовы добавляют (1) с 1 как его аргумент, который возвращает функцию, которая принимает один аргумент y.
Затем он вызывает эту функцию с 2 в качестве аргумента, который добавляет 2 к 1 и возвращает ссылку на функцию.
Наконец, он вызывает эту функцию с 3 в качестве аргумента, который добавляет 3 к 3 и возвращает ссылку на функцию.
Поскольку в последнем вызове не передается никаких аргументов, он возвращает текущее значение X, которое составляет 6.
Этот код демонстрирует более сложный пример каррики в JavaScript, где карри возвращает ссылку на себя, позволяя его рекурсурсивному аргументу.
function multiply ( x ) {
return function ( y ) {
return x * y
}
}
const double = multiply ( 2 )
console . log ( double ( 5 ) )Правильный ответ - B. Код определяет функцию умножения, которая принимает один аргумент x и возвращает другую функцию, которая принимает один аргумент y. Эта внутренняя функция умножает x и y и возвращает результат.
Затем код создает новую функцию вдвое, вызывая умножение с 2 в качестве аргумента. Двойная функция теперь является карри -функцией, которую можно вызвать с одним аргументом, чтобы удвоить его значение.
Наконец, код вызывает удвоение с 5 в качестве аргумента, что приводит к тому, что 10 зарегистрировано в консоли.
Этот код демонстрирует концепцию каррики в JavaScript, где функция возвращает другую функцию, которая может быть частично применена с некоторыми аргументами.
Какое из следующих утверждений верно в отношении next() метода итератора в JavaScript?
Правильный ответ А.
В JavaScript итерабильный - это объект, который определяет последовательность и может быть повторена из -за использования цикла.
Итератор - это объект, который знает, как получить доступ к элементам итерабируемого за раз.
Итерабильный объект имеет метод с ключевым Symbol.iterator , который возвращает итераторный объект.
Объект итератора имеет метод next() , который возвращает объект с двумя свойствами: value , которое является следующим элементом в последовательности, и done , который является логическим, указывающим, достиг ли итератор конец последовательности.
Итерации обычно используются во многих приложениях в реальном времени при работе с большими наборами данных или при реализации пользовательских структур данных
function * counter ( ) {
let i = 0
while ( true ) {
yield i ++
}
}
const gen = counter ( )
console . log ( gen . next ( ) . value )
console . log ( gen . next ( ) . value )
console . log ( gen . next ( ) . value )Что выведен вышеупомянутый кодовый фрагмент?
Правильный ответ D.
Функция counter - это функция генератора, которая создает бесконечный цикл, который дает увеличение значений i .
Переменная gen установлена на функцию генератора, и каждый вызов gen.next() возвращает объект с свойством значения, установленным следующим дальному значению.
Загласки console.log затем печатают значения, возвращаемые gen.next() .
Функция генератора - это особый тип функции, которую можно использовать для управления итерацией по последовательности значений.
В отличие от традиционных функций, функции генератора позволяют вам остановиться и возобновить их выполнение и приносить несколько значений с течением времени.
Какой из следующих сценариев может потенциально вызвать утечку памяти в JavaScript?
Круглые ссылки возникают, когда два или более объектов ссылаются друг на друга, создавая цикл, который предотвращает собранную мусор.
Это может вызвать утечку памяти, если объекты больше не нужны, но не могут быть освобождены из -за круговой ссылки.
Варианты A, C и D обычно не вызывают утечки памяти в JavaScript.
Сбор мусора - это процесс автоматического освобождения памяти, которая больше не используется программой.
В JavaScript алгоритм марки и развертки обычно используется для мусора.
Этот алгоритм работает, сначала маркируя все объекты в памяти, на которые все еще ссылается программа, а затем пробираясь и освобождая любую память, которая не помечена в качестве использования.
function getData ( ) {
return new Promise ( ( resolve , reject ) => {
setTimeout ( ( ) => {
resolve ( 'Data retrieved successfully' )
} , 1000 )
} )
}
async function main ( ) {
try {
const data = await getData ( )
console . log ( data )
throw new Error ( 'Something went wrong' )
} catch ( err ) {
console . log ( 'Caught an error:' , err . message )
return 'Error occurred'
} finally {
console . log ( 'Finally block executed.' )
return 'Finally block value'
}
}
; ( async ( ) => {
console . log ( await main ( ) )
} ) ( )Что выведен вышеупомянутый кодовый фрагмент?
Когда код выполняется, вызывается функция main (), которая является асинхровой функцией, которая использует ожидание данных из функции getData() .
После получения данных оператор console.log(data) регистрирует данные «Полученные полученные» в консоли.
После этого оператор « throw new Error("Something went wrong") вызывает ошибку.
Блок catch ловит ошибку, и журналы "Caught an error: Something went wrong" на консоли, а затем возвращает строку "Error occurred" .
Наконец, наконец -то блок выполняется, и журналы "Finally block executed." к консоли, а затем возвращает строку "Finally block value" .
Когда вызывается функция main() , она возвращает обещание, потому что это асинхровая функция. Поскольку finally блок также возвращает значение, это значение будет окончательным разрешенным значением обещания.
Следовательно, когда console.log(main()) называется "Finally block executed." и "Finally block value" будет зарегистрировано в консоли.
Попробуйте, поймайте и, наконец, являются ключевыми словами, используемыми в JavaScript для обработки ошибок времени выполнения.
const arr = [ 1 , 2 , 3 , 4 , 5 ] ;
let sum = 0 ;
for ( let num of arr ) {
sum += num ;
if ( sum >= 6 ) break ;
}
console . log ( sum ) ;
const arr2 = [ 1 , 2 , 3 , 4 , 5 ] ;
let sum2 = 0 ;
arr . forEach ( ( num ) => {
sum2 += num ;
if ( sum2 >= 6 ) break ;
} ) ;
console . log ( sum2 ) ;Что выведен вышеупомянутый кодовый фрагмент?
Потому что оператор break не действителен внутри функции обратного вызова, переданной на forEach .
forEach не поддерживает досрочное прекращение, используя оператор break . Следовательно, ошибочна: "Uncaught SyntaxError: Illegal break statement".
В случае для петли, заявление break разрешено.
Чтобы решить проблему, удалите заявление break с Foreach, и это должно работать.
В целом, for of было рекомендовано for in или forEach
let arr = [ 1 , 2 , 3 , 4 ]
let result = arr . push ( 5 )
console . log ( 'result: ' , result , 'arr: ' , arr )Что выведен вышеупомянутый кодовый фрагмент?
Метод array.push() в JavaScript добавляет один или несколько элементов в конце массива и возвращает новую длину массива.
В данном коде arr - это массив со значениями [1, 2, 3, 4] . Метод push() вызывается с аргументом 5, который добавляет 5 к концу массива arr .
Метод push() возвращает новую длину массива после добавления элемента. В этом случае новая длина ARR будет 5, потому что 5 добавляется к окончанию массива.
let arr = [ 3 , 5 , 7 , 9 ]
let result = arr . unshift ( 1 , 2 )
console . log ( 'result: ' , result , 'arr: ' , arr )Что выведен вышеупомянутый кодовый фрагмент?
Метод array.unshift() в JavaScript добавляет один или несколько элементов в начало массива и возвращает новую длину массива.
В данном коде arr - это массив со значениями [3, 5, 7, 9] . Метод unshift() вызывается с аргументами 1 и 2, которые добавляют 1 и 2 в начало массива arr .
Метод unshift() возвращает новую длину массива после добавления элемента (ы). В этом случае новая длина arr будет 6, потому что 1 и 2 добавляются в начало массива, сдвигая существующие элементы вправо.
const myArray = [ 1 , 2 , 3 , 4 , 5 ]
const poppedValue = myArray . pop ( )
console . log ( poppedValue )Что выведен вышеупомянутый кодовый фрагмент?
Метод Array.pop() в JavaScript удаляет последний элемент из массива и возвращает этот элемент.
В этом случае myArray - это массив с элементами [1, 2, 3, 4, 5] , и называется myArray.pop() , который удаляет элемент 5 из массива и возвращает его.
const arr = [ 10 , 20 , 30 , 40 , 50 ]
const removedElement = arr . shift ( )
console . log ( 'removedElement: ' , removedElement , 'arr: ' , arr )Что выведен вышеупомянутый кодовый фрагмент?
Метод Array.shift() удаляет первый элемент из массива arr , который составляет 10 , и возвращает его. Полученный массив arr будет тогда [20, 30, 40, 50] .
Таким образом, вариант A является правильным ответом, так как он отражает правильное значение removedElement и обновленное состояние arr после Array.shift() . Вариант B неверен, так как он утверждает, что removedElement будет 50, что не так. Вариант C также неверен, так как утверждает, что arr остается неизменным, что не является точным. Вариант D немного сбивает с толку, поскольку он утверждает, что Array.shift() возвращает массив, что не так.
let arr = [ 1 , 2 , 3 , 4 , 5 ]
let removed = arr . splice ( 1 , 2 , 'a' , 'b' )
console . log ( 'removed:' , removed , 'arr: ' , arr )Что выведен вышеупомянутый кодовый фрагмент?
Метод Array.splice() используется для изменения массива путем добавления, удаления или замены элементов.
В этом случае фрагмент кода использует arr.splice(1, 2, 'a', 'b') , который начинается с индекса 1 (удаление 2 элементов) и вставляет элементы a и b на их место. Элементы, которые удаляются (т. Е. 2 и 3) возвращаются и присваиваются удаленной переменной. После исполнения удаленные будут [2, 3] , а arr будет [1, 'a', 'b', 4, 5] . Вариант C неверен, поскольку он включает вставленные элементы в удаленном массиве, что не является точным. Вариант D также неверен, так как упоминает неверные элементы, которые удаляются из массива.
const fruits = [ 'apple' , 'banana' , 'orange' , 'grape' , 'apple' , 'kiwi' ]
const index = fruits . indexOf ( 'orange' )
const lastIndex = fruits . lastIndexOf ( 'apple' )
const result = fruits . includes ( 'grape' )
console . log ( 'index: ' , index , 'lastIndex: ' , lastIndex , 'result: ' , result )Что выведен вышеупомянутый кодовый фрагмент?
Метод Array.indexOf() ищет индекс первого появления указанного значения в фруктах массива. В этом случае «оранжевый» находится в индексе 2, поэтому index будет 2.
Метод Array.lastIndexOf() ищет индекс последнего появления указанного значения в фруктах массива. В этом случае «Apple» появляется дважды в массиве, и его последнее событие находится в индексе 4, поэтому lastIndex будет 4.
С другой стороны, метод Array.includes() проверяет, существует ли указанное значение «виноград» в фруктах массива, и, поскольку в массиве присутствует «виноград», result будет правдой.
function isDivisibleBy7 ( num ) {
return num % 7 == 0
}
const nums = [ 28 , 7 , 3 , 29 , 15 , 1 , 2 , 23 ]
const filterResult = nums . filter ( isDivisibleBy7 )
const findResult = nums . find ( num => num < 10 )
const findIndexResult = nums . findIndex ( num => num / 2 == 14 )
console . log (
'filterResult:' ,
filterResult ,
'findResult:' ,
findResult ,
'findIndexResult:' ,
findIndexResult ,
)Что выведен вышеупомянутый кодовый фрагмент?
Метод Array.filter() возвращает массив, содержащий все элементы, для которых функция передавалась в него, возвращает True. В этом случае функция isDivisibleBy7 возвращает истину для любого числа, которое делится на 7. В массиве nums 7 и 28 делятся на 7, поэтому nums.filter(isDivisibleBy7) возвращается [28, 7].
Метод Array.find() возвращает первый элемент в массиве, для которого функция передается в него, возвращает true. В этом случае функция, передаваемая ей, возвращает истину для любого числа менее 10. В nums есть несколько чисел, которые меньше 10, но, поскольку Array.find() только возвращает первое, для которого она истина, nums.find((num) => num < 10) возвращает 7.
Метод Array.findIndex() аналогичен методу Array.find() , но возвращает индекс первого элемента в массиве, для которого функция передается ей, возвращает истину, а не сам элемент. В этом случае функция, передаваемая ей, возвращает true для 28, так как 28/2 == 14. 28 находится в nums и находится в индексе 0, поэтому nums.find((num) => num / 2 == 14) возвращает 0.
const numbers = [ 1 , 2 , 3 , 4 , 5 ]
const doubledNumbers = numbers . map ( num => num * 2 )
console . log ( doubledNumbers )Что выведен вышеупомянутый кодовый фрагмент?
Метод Array.map() в JavaScript создает новый массив, применяя предоставленную функцию к каждому элементу исходного массива.
В этом случае предоставленная функция num => num * 2 умножает каждое число в массиве чисел на 2, что приводит к новому массиву [2, 4, 6, 8, 10] .
const numbers = [ 1 , 2 , 3 , 4 , 5 ]
const sum = numbers . reduce ( ( acc , val ) => acc + val )
console . log ( sum )Что выведен вышеупомянутый кодовый фрагмент?
Array.reduce() принимает массив и «уменьшает» его до одного значения, неоднократно применяя функцию к каждому элементу и отслеживая накопленный результат. Он обычно используется для таких задач, как суммирование массива чисел, поиск максимального значения или объединение массива струн в одну строку.
В этом случае метод Reduct () принимает функцию обратного вызова, которая выполняется для каждого элемента массива. Функция обратного вызовов принимает два параметра: acc и val , которые представляют аккумулятор и текущее значение массива, соответственно.
Внутри функции обратного вызова текущее значение массива добавляется в аккумулятор, и результат возвращается. Метод reduce() обновляет значение аккумулятора с каждой итерацией до тех пор, пока он не будет имитирован по всем элементам массива.
Наконец, метод reduce() возвращает конечное значение аккумулятора, которое является суммой всех чисел в массиве, то есть 15.
const arr = [ 1 , 2 , 3 , 4 ]
const result = arr . reduceRight ( ( acc , curr ) => acc + curr )
console . log ( result )Что выведен вышеупомянутый кодовый фрагмент?
Метод reduceRight() аналогичен методу reduce() , за исключением того, что он начинает уменьшать массив от самого правого элемента до самого левого элемента. Метод reduceRight() применяет функцию против аккумулятора и каждое значение массива (от правого налегих), чтобы уменьшить ее до одного значения.
В данном фрагменте кода массив arr содержит значения [1, 2, 3, 4] . Метод reduceRight() вызывается на этом массиве с функцией обратного вызова, которая добавляет acc с текущим элементом curr .
В первой итерации значение curr будет 4 , а значение ACC будет undefined , поскольку начальное значение не предоставляется. Следовательно, результат первой итерации будет 4 .
Во второй итерации значение curr будет 3 , а значение acc будет результатом предыдущей итерации, которая составляет 4 . Следовательно, результат второй итерации будет 7 .
В третьей итерации значение curr будет 2 , а значение acc будет результатом предыдущей итерации, которая составляет 7 . Следовательно, результат третьей итерации будет 9 .
В четвертой и последней итерации значение curr будет 1 , а значение acc будет результатом предыдущей итерации, которая составляет 9 . Следовательно, результат четвертой итерации будет 10 .
Следовательно, конечный вывод кода будет 10 . Следовательно, правильный вариант - А.
const arr = [ 'Centauri' , 3.14159 , 'canine' , 11235 , undefined ]
const result = arr . sort ( )
console . log ( result )Что выведен вышеупомянутый кодовый фрагмент?
По умолчанию метод sort() сортирует элементы по символу, поэтому 11235 поступает до 3.14159, потому что 1 приходит до 3.
Слова и буквы отсортируются в алфавитном порядке по коду ASCII, поэтому «Centauri», который начинается с сортировки (ASCII Code 67) перед «собакой», который начинается с строчного C (код ASCII 99).
Неопределенные элементы всегда сортируют в конце массива.
Таким образом, окончательный вывод кода будет [11235, 3.14159, «Centauri», «Canine», неопределенное], что является опцией D.
let numbers = [ 1 , 2 , 3 , undefined , 6 , 7 , 8 , 9 ]
let [ a , , b , c = 2 , ... rest ] = numbers
console . log ( a , b , c , rest )Что выведен вышеупомянутый кодовый фрагмент?
При деструкции массива можно распаковывать определенные значения из массива в отдельные переменные. Значения, которые мы создали в левой стороне ( a, b, c, rest ), соответствуют значениям и порядок массива, который мы присваивали в правой стороне ( numbers ).
Переменная a соответствует первому элементу массива, который составляет 1 .
Поскольку мы не указали переменную для следующего значения 2 , значение не учитывается при оценке и пропущено.
Переменная b соответствует третьему элементу массива, который составляет 3 .
Можно установить значения по умолчанию для переменных, если элемент в массиве undefined . Поскольку четвертый элемент в массиве undefined , переменная c имеет значение по умолчанию 2 .
С оператором спреда ( ... ) мы можем назначить оставшиеся значения массива переменной. Поскольку значения [ 6, 7, 8, 9 ] являются оставшимися значениями массива, они rest переменным.
Следовательно, конечный результат: 1 3 2 [ 6, 7, 8, 9 ] , который является вариантом B.
const date1 = new Date ( )
const date2 = new Date ( '1995-12-17T05:10:00' )
const date3 = new Date ( '1995-10-15T08:12:15+02:00' )
console . log ( date1 , '' , date2 , '' , date3 )Что выведен вышеупомянутый кодовый фрагмент?
new Date() вернет текущую дату и время, за которым следуют две указанные даты в формате «yyyy-mm-ddthh: mm: ss.sssz», где «z» представляет смещение часового пояса UTC.
YYYY-MM-DDTHH:mm:ss.sssZ -это формат, используемый для представления дат и времени в стандарте ISO 8601. Он состоит из следующих компонентов:
YYYY : четырехзначный год (от 0000 до 9999), или как расширенный год с + или - с последующим шестью цифрами. Знак требуется для расширенных лет. -000000 явно запрещен как действительный год.MM : двухзначный месяц (01 = январь, 02 = февраль и т. Д.). По умолчанию по умолчанию 01.DD : Двух цифровой день месяца (с 01 до 31)T : сепаратор, указывающий начало компонента времениHH : двухзначный час дня в 24-часовом формате (от 00 до 23). В качестве особого случая разрешено 24:00:00 и интерпретируется как полуночи в начале следующего дня. По умолчанию до 00.mm : двухзначная минута часа (от 00 до 59). По умолчанию до 00.ss : двухзначный второй в минуту (от 00 до 59). По умолчанию до 00..sss : миллисекунд компонент (от 000 до 999). По умолчанию до 000.Z : суффикс, указывающий, что время в UTC (скоординированное универсальное время), без смещения. Это может быть буквальный символ Z (указывающий UTC), или + или - с последующим HH: MM, смещение в часы и минуты от UTC. const date = new Date ( 'Mart 15, 1975 23:15:30' )
date . setMinutes ( 10 )
date . setUTCDate ( 5 )
console . log (
'Minutes:' + date . getMinutes ( ) + ',' ,
'' ,
'Year:' + date . getFullYear ( ) + ',' ,
'' ,
'UTCDate:' + date . getUTCDate ( ) ,
)Что выведен вышеупомянутый кодовый фрагмент?
Предоставленный код создает объект даты, инициализированный с датой и временем «15 марта 1975 г. 23:15:30».
Затем он изменяет протокол и дату UTC объекта Date, используя методы setMinutes() и setUTCDate() соответственно.
Наконец, он регистрирует обновленные значения минут, года, года и даты UTC с использованием console.log() .
После изменения протокола до 10 с использованием setMinutes(10) метод getMinutes() возвращает обновленное значение 10.
После изменения даты UTC на 5 с использованием setUTCDate(5) метод getUTCDate() возвращает обновленное значение 5.
Метод getFullYear() возвращает неизменный год, который составляет 1975 год.
const date1 = new Date ( '2023-5-1' )
const next_us_election = new Date ( '2024-11-5' )
const difference_in_time = next_us_election . getTime ( ) - date1 . getTime ( )
const difference_in_days = difference_in_time / ( 1000 * 3600 * 24 )
console . log ( parseInt ( difference_in_days , 10 ) + ' Days' )Что выведен вышеупомянутый кодовый фрагмент?
Код рассчитывает разницу в дни между датой «2023-5-1» и следующей датой выборов в США «2024-11-5». Он использует объект Date для создания двух дат: date1 представляет 1 мая 2023 года, а next_us_election представляет 5 ноября 2024 года.
Метод getTime() используется для получения значения времени в миллисекундах для каждой даты. Вычитая время времени date1 из next_us_election , мы получаем разницу во времени в миллисекундах.
Чтобы преобразовать разницу во времени с миллисекунды в дни, мы делим ее на количество миллисекунд за день (1000 _ 3600 _ 24). Результат хранится в переменной difference_in_days .
Наконец, функция parseInt() используется для преобразования значения Diven_in_days в целое число, и результат регистрируется в консоли вместе со строкой «дней». Выход будет «554 дня».
let person = {
name : 'John' ,
age : 30 ,
hobbies : [ 'reading' , 'traveling' , 'cooking' ] ,
address : {
street : '123 Main St' ,
city : 'New York' ,
state : 'NY' ,
} ,
sayHello : function ( ) {
console . log ( 'Hello, my name is ' + this . name )
} ,
}
console . log ( person . name )
console . log ( person . hobbies [ 1 ] )
console . log ( person . address . city )
person . sayHello ( )Что выведен вышеупомянутый кодовый фрагмент?
Код определяет person объект с такими свойствами, как name , age , hobbies и address , и метод sayHello .
Заявления console.log() печатают значение name , второй элемент массива hobbies (который является «путешествием»), и значение city собственности в объекте address (который является «Нью -Йорк»).
Наконец, метод sayHello вызывается на объект person используя Dot Notation, которая выводит строку «Привет, меня зовут Джон» в консоли.
function User ( username ) {
this . username = username
this . updateUsername = newName => {
this . username = newName
}
}
const user1 = new User ( 'kirandash' )
const user2 = new User ( 'bgwebagency' )
user1 . updateUsername ( 'kirandash-website' )
user2 . updateUsername ( 'bgwebagency-app' )
console . log ( user1 . username , user2 . username )Что выведен вышеупомянутый кодовый фрагмент?
Код определяет User функции конструктора, который создает user объекты со свойством username и методом имени updateUsername . Два user объекта, user1 и user2 , созданы с начальными именами пользователей «Kirandash» и «bgwebagence» соответственно.
Метод updateUsername вызывается как на объектах user1 , так и user2 для обновления своих имен пользователей. Имя пользователя user1 обновляется на «Kirandash-Website», а имя пользователя user2 обновляется до «bgwebagence-app».
Наконец, код регистрирует объединение user1.username и user2.username , что приводит к выводу 'Kirandash-Website bgwebagency-app'.
function greet ( name ) {
console . log ( `Hello, ${ name } ! Welcome to ${ this . location } .` )
}
const person = {
location : 'New York' ,
}
greet . call ( person , 'John' )
greet . apply ( person , [ 'Alex' ] )
const greetPerson = greet . bind ( person )
greetPerson ( 'Thomas' )Что выведен вышеупомянутый кодовый фрагмент?
The call function is used to invoke the greet function with the person object as the context (the value of this ) and 'John' as the argument.
The apply function is used to invoke the greet function with the person object as the context (the value of this ) and an array ['Alex'] as the arguments.
The bind function is used to create a new function greetPerson with the person object as the bound context (the value of this ).
In summary, the code demonstrates how call , apply , and bind can be used to invoke a function with a specific context and arguments
class Animal {
constructor ( name ) {
this . name = name
}
static makeSound ( ) {
console . log ( 'Generic animal sound' )
}
sayName ( ) {
console . log ( `My name is ${ this . name } ` )
}
}
const a1 = new Animal ( 'Lion' )
const a2 = new Animal ( 'Time' )
Animal . makeSound ( )
a1 . makeSound ( )
a2 . makeSound ( )What does the above code snippet output?
The static method makeSound() is defined on the Animal class, and is accessible directly through the class itself, ie, Animal.makeSound() . This will output "Generic animal sound" to the console.
However, when we try to call makeSound() on an instance of the Animal class (a1.makeSound() and a2.makeSound()) , we get a TypeError, because static methods can only be accessed through the class itself and not through its instances.
function Animal ( name ) {
this . name = name
}
Animal . prototype . eat = function ( ) {
console . log ( this . name + ' is eating.' )
}
function Dog ( name ) {
Animal . call ( this , name )
}
Dog . prototype = Object . create ( Animal . prototype )
Dog . prototype . constructor = Dog
Dog . prototype . bark = function ( ) {
console . log ( this . name + ' is barking.' )
}
function CustomArray ( ) {
Array . call ( this )
}
CustomArray . prototype = Object . create ( Array . prototype )
CustomArray . prototype . constructor = CustomArray
CustomArray . prototype . sum = function ( ) {
return this . reduce ( ( acc , val ) => acc + val , 0 )
}
var dog = new Dog ( 'Buddy' )
dog . eat ( )
dog . bark ( )
var numbers = new CustomArray ( )
numbers . push ( 1 , 2 , 3 , 4 , 5 )
console . log ( numbers . sum ( ) )What will be the output of the following code
Explanation: In this example, we have a base class called Animal that defines a constructor and an eat() method. The subclass Dog extends the Animal class and adds its own constructor, bark() method, and a specific property breed .
Furthermore, we extend the built-in Array class using the class syntax to create a CustomArray class. The CustomArray class adds a custom method called sum() that calculates the sum of the array elements.
In the usage section, we create an instance of Dog named dog with the name "Buddy" . We can call the inherited eat() method from the Animal class, the bark() method defined in the Dog class.
Additionally, we create an instance of CustomArray called numbers and add some numbers to it. We can call the custom sum() method, which is added to the built-in Array class through subclassing.
This example showcases inheritance, subclassing, and extending a built-in class in JavaScript, illustrating how classes can be extended and customized to add additional functionality.
const person = {
name : 'John' ,
age : 30 ,
city : 'New York' ,
}
const { name , age , city } = person
console . log ( name )
console . log ( age )
console . log ( city )What will be the output of the following code
In the code above, we have an object literal called person with properties name , age , and city . We then use object destructuring to extract those properties into separate variables ( name , age , and city ). After destructuring, we can use these variables to access the corresponding values from the object.
Consider the following code snippet:
// module.mjs
export const PI = 3.14159
export function calculateArea ( radius ) {
return PI * radius * radius
}
export default function calculateCircumference ( radius ) {
return 2 * PI * radius
}
// script.mjs
import calculateCircumference , { PI , calculateArea } from './module.mjs'
console . log ( PI ) // Output: ________
console . log ( calculateArea ( 5 ) ) // Output: ________
console . log ( calculateCircumference ( 5 ) ) // Output: ________What will be the output of the console.log statements in the code above?
Параметры:
3.14159 , 78.53975 , 31.41593.14159 , 78.53975 , 62.83183.14159 , 78.53975 , NaN3.14159 , NaN , 62.8318 The module.js file exports three entities:
PI is a named export, exported using the export keyword.calculateArea is a named export, exported using the export keyword.calculateCircumference is the default export, exported using the export default syntax. In the main.js file, we import PI and calculateArea as named exports using the destructuring assignment syntax. We also import calculateCircumference as the default export. The import statements reference the module.js file using the relative file path ./module.js .
The outputs of the console.log statements will be:
console.log(PI) will output 3.14159 since we imported the named export PI .console.log(calculateArea(5)) will output 78.53975 since we imported the named export calculateArea and called the function with a radius of 5.console.log(calculateCircumference(5)) will output 62.8318 since we imported the default export calculateCircumference and called the function with a radius of 5. Consider the following code snippet:
// foo.js
function foo ( ) {
console . log ( `Foo` )
}
export { foo } What is the correct Syntax to import the function foo ?
Параметры:
import foo from "./foo"import foo as FooFunction from "./foo"import { foo } from "./foo"import { foo } from "./bar" Named exports are imported into different files with braces and must be imported with the name of the object, function or variable that was exported. In this example, a function with the name foo is exported from the file foo.js . Accordingly, the correct expression is: import { foo } from "./foo" .
In JavaScript, when importing a default export from a module, which syntax correctly assigns an alias "myAlias" to the default import?
Explanation: Both option B and C are valid syntaxes for importing a default export from a module and assigning it an alias. The difference between the two syntaxes is that option B does not use the { default as myAlias } syntax. This means that the default export will be imported under the name myAlias, rather than the name default.
Here is an example of how to use the option B syntax:{import myAlias from 'module';},This will import the default export from the module module and assign it the name myAlias. You can then use the myAlias variable to access the default export from the module module. Here is an example of how to use the option C syntax:{import { default as myAlias } from 'module';},This will import the default export from the module module and assign it the alias myAlias. You can then use the myAlias alias to access the default export from the module module.
The choice of which syntax to use is up to you. The option B syntax is simpler, but it can lead to collisions if there is already a variable named myAlias in the current scope. The option C syntax is more verbose, but it avoids collisions.
Which method is used to convert a JavaScript object to a JSON string while preserving data types like Dates and RegEx?
JSON.stringify()JSON.stringify() with a custom replacer functionJSON.toTypedString()JSON.stringify()JSON.stringify() with a custom replacer function. Explanation: The JSON.stringify() method can be used to convert a JavaScript object to a JSON string. However, by default, it will not preserve data types like Dates and RegEx . To preserve these data types, you can use a custom replacer function. The replacer function takes an object as input and returns a new object with the modified values.
The code below would show you how to use a custom replacer function to preserve data types:
function replacer ( key , value ) {
if ( typeof value === 'Date' ) {
return value . toJSON ( )
} else if ( typeof value === 'RegExp' ) {
return value . toString ( )
} else {
return value
}
}
const object = {
date : new Date ( ) ,
regex : / some regex / ,
}
const jsonString = JSON . stringify ( object , replacer )