5 типични въпроса за интервю за JavaScript
Въпрос 1: Възможности
Разгледайте следния код:
Какво ще пише на конзолата?
Отговор
Горният код ще напише 5.
Номерът на този въпрос е, че има две задачи в IIFE, но променливата a е декларирана с ключовата дума var. Това означава, че a е функционална променлива. b е присвоен на глобалния обхват.
Друг трик на този въпрос е, че използва 'use strict'; във функцията. Ако строг режим е бил активиран, кодът ще покаже грешката „Uncaught ReferenceError: b не е дефиниран“. Не забравяйте, че строг режим изисква да се обърнете към глобалните обхвати. Следователно трябва да напишете:
Въпрос 2: Създаване на естествени методи
Дефинирайте повтаряща се функция в обектен низ. Функцията приема цяло число, указващо колко пъти трябва да се повтори низът. Функцията повтаря посочения низ указания брой пъти. Например:
Трябва да е "hellohellohello".
Отговор
Възможно изпълнение е показано по-долу:
Друг важен момент е да демонстрирате знания как да не отменяте вече дефинирани функции. Това се прави чрез тестване, за да се гарантира, че функцията не съществува сама по себе си, преди да бъде дефинирана.
Въпрос 3: Повдигане
Какъв е резултатът от изпълнението и защо?
Отговор
Резултатите от кода са подчертани и 2.
Причината е, че и двете функционални променливи са повдигнати (поставени в горната част на функцията), но променливите не задържат присвоените им стойности. По времето, когато променливата a е отпечатана, тя съществува във функцията (тя е декларирана), но все още е недефинирана. С други думи, горният код е еквивалентен на следното:
Какъв е резултатът от следния код? Обосновете своетоотговор.
Отговор
Въпрос 5: обаждане ( ) и кандидатстване ( )
Коригирайте предишния въпрос, така че последният console.log() да стане Aurelio De Rosa.
Отговор
Въпросът може да бъде променен, за да повлияе на контекста на функцията с помощта на функциите call ( ) или apply ( ). Ако не ги познавате и разликите им, трябва да прочетете статията. В кода по-долу ще използвам call (), но в този случай apply (), резултатът ще бъде същият:
Заключение