1. Что на выходе?
function sayHi() {
console.log(name)
console.log(age)
var name = 'Lydia'
let age = 21
}
sayHi()
Ответ: undefined и ошибка Поскольку переменная, определенная с помощью var, имеет эффект продвижения переменной, но это только продвижение объявления переменной без присвоения, поэтому оно не определено.Объявление переменной, определенное с помощью let, будет повышено, но не будет инициализировано. инициализация сообщит об ошибке, которая является временной мертвой зоной.
2. Что на выходе?
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1)
}
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1)
}
Ответы: 333 и 012, из-за механизма циклов событий JS setTimeout является макрозадачей, и она не может быть выполнена до тех пор, пока не будет выполнен код синхронизации. var определяет здесь глобальную переменную, поэтому после выполнения кода синхронизации, i стал 3, поэтому печатаются 3 3, но переменные, определенные let, образуют область блока, поэтому 0 1 2
3. Что на выходе?
const shape = {
radius: 10,
diameter() {
return this.radius * 2
},
perimeter: () => 2 * Math.PI * this.radius
}
shape.diameter()
shape.perimeter()
Ответ: Вывод равен 20 и NaN, потому что это в диаметре относится к радиусу в форме, но поскольку периметр является стрелочной функцией, когда мы вызываем периметр, это указывает не на объект формы, а на окружающую его область (в окне в пример).
4. Что на выходе?
+true;
!"Lydia";
Решение: Знак + превращается в истину в 1, знак + имеет тенденцию возвращать значение, но ! имеет тенденцию возвращать логическое значение, потому что «Лидия» реальна, поэтому отрицание ложно.
5. Какой из них правильный?
const bird = {
size: 'small'
}
const mouse = {
name: 'Mickey',
small: true
}
Ответ: A, потому что предпосылка вызова мыши птицей в виде точек заключается в том, что у мыши есть этот атрибут, но у нее его нет, поэтому он недействителен, но bird.size реален, а строка small хранится в [] call , это то же самое, что и вариант C. Точно так же это означает, что утверждение D неверно, поэтому выберите A для этого вопроса.