const a = {}
const b = { key: "b" }
const c = { key: "c" }
a[b] = 123
a[c] = 456
console.log(a[b])
👍4🔥4😁2
Пояснение к ответу
Ключи объекта (кроме Symbol) автоматически преобразуются в строки (даже индексы в массиве). Мы пытаемся добавить объект в качестве ключа со значением 123 к объекту a. Однако, когда мы приводим объект к строке, он превращается в [object Object]. Таким образом, мы говорим, что a["object Object"] = 123. Затем мы повторяем процедуру. c - это другой объект, который мы также неявно приводим к строке. Поэтому a["object Object"] = 456. Наконец, когда мы выводим a[b] в консоль, мы на самом деле обращаемся к a["object Object"]. Поэтому в консоль выводится 456.
👍16
Руководство по Next.js.
Представляю вашему вниманию первую часть обновленного руководства по Next.js.
На мой взгляд, Next.js — это лучший на сегодняшний день инструмент для разработки веб-приложений.
Предполагается, что вы хорошо знаете JavaScript и React, а также хотя бы поверхностно знакомы с Node.js.
Обратите внимание: руководство актуально для Next.js версии 14.
При подготовке руководства я опирался в основном на официальную документацию, но в "отсебятине" мог и приврать (или просто очепятаться) 😁
Ссылка
#статьи
Представляю вашему вниманию первую часть обновленного руководства по Next.js.
На мой взгляд, Next.js — это лучший на сегодняшний день инструмент для разработки веб-приложений.
Предполагается, что вы хорошо знаете JavaScript и React, а также хотя бы поверхностно знакомы с Node.js.
Обратите внимание: руководство актуально для Next.js версии 14.
При подготовке руководства я опирался в основном на официальную документацию, но в "отсебятине" мог и приврать (или просто очепятаться) 😁
Ссылка
#статьи
👍10🔥3👏1
const foo = () => console.log("first")
const bar = () => setTimeout(() => console.log("second"))
const baz = () => console.log("third")
bar()
foo()
baz()
👍8
Что будет в консоли ?
Anonymous Quiz
13%
first second third
69%
first third second
16%
second first third
2%
second third first
Пояснение к ответу
Сначала мы вызываем функцию setTimeout. Однако, ее колбек выполняется последним. Это происходит из-за того, что в браузерах у нас имеется не только движок для запуска (выполнения) кода, но и WebAPI. WebAPI предоставляет нам setTimeout и много других возможностей, например, DOM. После того, как setTimeout отправляется в WebAPI, функция bar удаляется из стека вызовов (call stack). После этого вызывается функция foo, и first выводится в консоль. foo удаляется из стека и вызывается функция baz. third выводится в консоль. WebAPI отправляет функцию обратного вызова setTimeout в очередь событий (task queue, второе слово читается как "кью"). Цикл событий (event loop) проверяет стек вызовов и очередь задач. Если стек оказывается пустым, то в него помещается первый элемент из очереди. Вызывается функция bar и в консоль выводится second.
👍15
const person = { name: "John" }
function sayHi(age) {
console.log(`${this.name} is ${age}`)
}
sayHi.call(person, 30)
sayHi.bind(person, 30)
🤯7❤2
Что будет в консоли ?
Anonymous Quiz
27%
undefined is 30 и John is 30
5%
function и function
25%
John is 30 и John is 30
43%
John is 30 и function
Пояснение к ответу
В обоих случаях мы передаем объект, на который будет указывать this. Но метод call выполняется сразу, а метод bind возвращает копию функции с привязанным контекстом. Эту функцию следует вызывать отдельно или можно сделать так: sayHi.bind(person, 30)().
❤9
Руководство по Next.js. 2/3
Представляю вашему вниманию вторую часть обновленного руководства по Next.js.
На мой взгляд, Next.js — это лучший на сегодняшний день инструмент для разработки веб-приложений.
Предполагается, что вы хорошо знаете JavaScript и React, а также хотя бы поверхностно знакомы с Node.js.
Обратите внимание: руководство актуально для Next.js версии 14.
При подготовке руководства я опирался в основном на официальную документацию, но в "отсебятине" мог и приврать (или просто очепятаться) 😁
Ссылка
#статьи
Представляю вашему вниманию вторую часть обновленного руководства по Next.js.
На мой взгляд, Next.js — это лучший на сегодняшний день инструмент для разработки веб-приложений.
Предполагается, что вы хорошо знаете JavaScript и React, а также хотя бы поверхностно знакомы с Node.js.
Обратите внимание: руководство актуально для Next.js версии 14.
При подготовке руководства я опирался в основном на официальную документацию, но в "отсебятине" мог и приврать (или просто очепятаться) 😁
Ссылка
#статьи
👍9❤2
function sayHi() {
return (() => 0)()
}
console.log(typeof sayHi())
👍6
Пояснение к ответу
Функция sayHi возвращает значение немедленно вызываемого функционального выражения (Immediately Invoked Function Expression, IIFE). Результатом является число 0 типа number. Для информации: в JavaScript имеется 8 встроенных типов данных: string, number, bigint, boolean, null, undefined, object и symbol. function не является отдельным типом, функции - это объекты.
👍14
Что будет в консоли ?
Anonymous Quiz
14%
[1, 2, 3, 7 x null, 11]
20%
[1, 2, 3, 11]
53%
[1, 2, 3, 7 x empty, 11]
13%
ошибка
❤1
Пояснение к ответу
Когда в массив добавляется значение, которое выходит за пределы длины массива, JavaScript создает "пустые ячейки". На самом деле они имеют значение undefined, но в консоль выводятся как [1, 2, 3, 7 x empty, 11] (зависит от среды выполнения кода, от браузера).
👍16🔥1
Руководство по Next.js. 3/3
Представляю вашему вниманию третью и заключительную часть обновленного руководства по Next.js.
На мой взгляд, Next.js — это лучший на сегодняшний день инструмент для разработки веб-приложений.
Предполагается, что вы хорошо знаете JavaScript и React, а также хотя бы поверхностно знакомы с Node.js.
Обратите внимание: руководство актуально для Next.js версии 14.
При подготовке руководства я опирался в основном на официальную документацию, но в "отсебятине" мог и приврать (или просто очепятаться)
Ссылка
#статьи
Представляю вашему вниманию третью и заключительную часть обновленного руководства по Next.js.
На мой взгляд, Next.js — это лучший на сегодняшний день инструмент для разработки веб-приложений.
Предполагается, что вы хорошо знаете JavaScript и React, а также хотя бы поверхностно знакомы с Node.js.
Обратите внимание: руководство актуально для Next.js версии 14.
При подготовке руководства я опирался в основном на официальную документацию, но в "отсебятине" мог и приврать (или просто очепятаться)
Ссылка
#статьи
👍9❤3🔥2
(() => {
let x, y
try {
throw new Error()
} catch (x) {
(x = 1), (y = 2)
console.log(x)
}
console.log(x)
console.log(y)
})()
🤯7🤡1
Что будет в консоли ?
Anonymous Quiz
28%
1 undefined 2
15%
undefined undefined undefined
30%
1 1 2
27%
1 undefined undefined
Пояснение к ответу
Блок catch принимает параметр x. Это не тот x, который объявлен перед блоком try. Мы присваиваем этому аргументу значение 1, а переменной y - 2. После этого мы выводим в консоль значение x, т.е. 1. За пределами catch x все еще имеет значение undefined, а y - 2. Когда мы вызываем console.log(x) за пределами catch, возвращается undefined, а console.log(y) возвращает 2.
👍11👎2