1) Что покажут эти два alert()? ```js var foo = 'Hello'; (function() { var bar = ' World'; alert(foo + bar); })(); alert(foo + bar); ``` Ответ: 'Hello World' и ReferenceError: bar is not defined. 2) Что вернет следующий код? ``` var Employee = { company: 'xyz' } var emp1 = Object.create(Employee); delete emp1.company console.log(emp1.company); ``` Ответ: Код выше будет выводить xyz в качестве вывода. Здесь объект emp1 получил компанию в качестве прототипа. Оператор удаления не удаляет свойство прототипа. 3) Что вернет следующий код? ``` var trees = ["xyz", "xxxx", "test", "ryan", "apple"]; delete trees[3]; console.log(trees.length); ``` Ответ: 5. delete() не влияет на длину массива. 4) Что будет в консоли? ``` let number = 0; console.log(number++); console.log(++number); console.log(number); ``` Ответ: C Постфиксный унарный оператор ++: Возвращает значение (0) Инкрементирует значение (теперь число равно 1) Префиксный унарный оператор ++: Инкрементирует значение (число теперь равно 2) Возвращает значение (2) Результат: 0 2 2. 5) Что произойдет при выполнении следующего куска кода? ``` myname = "global"; function func() { console.log(myname); var myname = "local"; console.log(myname); } func(); ``` Ответ: Интерпретатор JavaScript всегда перемещает («поднимает») объявления функций и переменных в начало области видимости (вверх текущего скрипта или функции). Код в вопросе аналогичен следующему: ``` myname = "global"; function func() { var myname; console.log(myname); // "undefined" myname = "local"; console.log(myname); // "local" } func(); ``` 6) Что вернет следующие строки? ``` !function(){}() !function(){} ``` Ответ: true, false