Оригінал: JavaScript Interview Questions
Я переглядав мій список про ‘RSS канали в цей вечір – Так, я один з тих людей, які досі читають RSS – і наткнувся на список питань для інтерв’ю JavaScript вивішені Джеймс Padolsey. Це нагадало мені, що у мене було кілька питань захований від того, коли я зв’язався з Meebo рекрутера кілька років тому.
Я не претендую на роботу, тому що я працював на (нині неіснуючої) автозавантаження Viewzi, і я не хочу, щоб викорінити з Далласа і переїхати до Каліфорнії. Просто для ударів, я запитав рекрутер, якщо все буде в порядку, якщо я пішов вперед і спробував мою руку на їхні запитання коду в будь-якому випадку. Після чого, рекрутер відповів:
Ви Aced в Puzzlers, молодці! Ви впевнені, що ви не хочете, щоб бути розглянуті для нашої JavaScript / Front-End Developer позиції? Якщо ви коли-небудь свербіж, щоб перейти до CA, переконайтеся, що, дайте мені знати!
Так, кілька років минуло з тих пір, я сподіваюся, що це кошерне для мене поділитися на ці питання, поряд з відповідями Я надаються …
1. Коли робить div.setAttribute('###')
не дорівнює div.###
Відповідь:
Коли ви намагаєтеся встановити елемента class
атрибут, IE має проблеми. Тому, краще використовувати .className
замість .setAttribute()
Існує також проблема з .setAttribute()
і style
в IE, так.style
повинні бути використані.
// Don't do this: el.setAttribute('class', 'foobar'); // Do this instead: el.className = 'foobar'; // Don't do this: el.setAttribute('style', 'color: #000'); // Do this instead: el.style.color = '#000';
2. У чому різниця між цими двома твердженнями:
var x = 3; x = 3;
Відповідь:
Перший ставить змінну в сферу всі функції було визначено. Другий ставить змінну в глобальній області.Це може призвести до потенційно зіткнення з іншими змінними з тим же ім’ям. Таким чином, ключове слово var
завжди повинні бути використані при визначенні змінних і анонімна функція повинна використовуватися як кришки, якщо буде потрібно, інкапсуляції декілька функцій, які можуть надати доступ до тих же набором змінних. Це гарантує, що змінні залишаються пісочниці, доступні тільки ті функції, які їх потребують.
3. Яка різниця між:
!!(obj1 && obj2); (obj1 && obj2);
Відповідь:
Перший повертає “справжній” логічне значення, тому що ви спочатку звести те, що знаходиться всередині дужок, але тут же заперечувати його знову. Таким чином, це, як кажуть щось »не, не« правда-у, що робить його true
Другий приклад просто перевіряє для існування obj1
і obj2
але не обов’язково повертати “реальний” логічне значення, а не те, що повернення є або істина-брехня у або у-. Це може бути проблематичним, тому що ложно-у може бути число 0 або порожній рядок, і т.д. Проста існування може бути правдою-й. А “реальний” логічне буде тільки true
або false
4. Написати в один рядок шматок коду JavaScript, що об’єднує всі рядків, переданих у функцію. (Примітка: форматування додані для читабельності)
function concatenate() { return String.prototype.concat.apply('', arguments); }
Детальніше про це тут …
http://sitepen.com/blog/2008/05/09/string-performance-an-analysis
5. Що означають ці два приклади мають спільного?
Коротка відповідь:
Обидва створюють потенційні витоку пам’яті, особливо в Internet Explorer.
Приклад 1:
var obj = document.getElementById('adiv'); document.getElementById('adiv').ptr = obj;
Довга відповідь:
Це погана практика, тому що ви спочатку призначити DOM елемент на змінну, а потім привласнити той же елемент у власності (неіснуючого) самого елементу. Це створює свого роду кругової логіки циклу, і негативно позначитися на продуктивності.
Приклад 2:
function assignClick() { var el = document.createElement('div'); function handleClick() { el.innerHTML = 'clicked!'; } el.attachEvent('onclick', handleClick); }
Довга відповідь:
Цей приклад буде працювати тільки в Internet Explorer, тому що це використовує власність .attachEvent()
метод. Звичайно, .innerHTML
Також фірмова (В даний час стандарт), але на відміну від .attachEvent()
.innerHTML
широко підтримується у всіх сучасних браузерах. Для того, щоб цей приклад більш крос-браузерні доброзичливий, стандарт W3C .addEventListener()
необхідно спочатку спробували, і якщо він не існує, то спробуйте .attachEvent()
в якості запасного варіанту.
- Документи, дані, і графіки, що відносяться до тенденціям і мінливості тропічних циклонів
- Много кратко въведение в открит достъп
- Психологія зі стилем. Керівництво написання гіпертексту
- Дизайн дослідження
- Советы по организации семинаров и симпозиумов
- OpenComal
- Академічний спадщини бібліотечних та інформаційних наук: Ресурси і можливості.
- Home
- Проверка-Авар Микроархитектуры
- “Ліберальни мистецтва” бібліотечних та інформаційних наук і досліджень університету навколишнього середовища
- Антропогенний вплив на активність тропічних циклонів
- CLOC. Граф рядків коду
- Написання дослідницьких документів
- Кір
- JAVASCRIPT ІНТЕРВ’Ю ПИТАННЯ
- Три види програм інформаційних систем
- П’ята хвороба (Інфекційна еритема)
- Некоторые современные и менее актуальные проекты