JavaScript 问题
本章节是前端开发者面试问题 - JS 部分的参考答案。 欢迎提出 PR 进行建议和指正!
- 请解释事件委托(event delegation)。
- 请简述
JavaScript
中的this
。 - 请解释原型继承(prototypal inheritance)的工作原理。
- 说说你对 AMD 和 CommonJS 的了解。
- 请解释下面代码为什么不能用作 IIFE:
function foo(){ }();
,需要作出哪些修改才能使其成为 IIFE? null
、undefined
和未声明变量之间有什么区别?如何检查判断这些状态值?- 什么是闭包(closure),为什么使用闭包?
- 请说明
.forEach
循环和.map()
循环的主要区别,它们分别在什么情况下使用? - 匿名函数的典型应用场景是什么?
- 你如何组织自己的代码?(使用模块模式(module pattern)还是经典继承(classical inheritance)?)
- 宿主对象(host objects)和原生对象(native objects)的区别是什么?
- 下列语句有什么区别:
function Person(){}
、var person = Person()
和var person = new Person()
? .call
和.apply
有什么区别?- 请说明
Function.prototype.bind
的用法。 - 什么时候会用到
document.write()
? - 功能检测(feature detection)、功能推断(feature inference)和使用 UA 字符串之间有什么区别?
- 请尽可能详细地解释 Ajax。
- 使用 Ajax 的优缺点分别是什么?
- 请说明 JSONP 的工作原理,它为什么不是真正的 Ajax?
- 你使用过 JavaScript 模板吗?用过什么相关的库?
- 请解释变量提升(hoisting)。
- 请描述事件冒泡。
- “attribute” 和 “property” 之间有什么区别?
- 为什么扩展 JavaScript 内置对象是不好的做法?
- document 中的
load
事件和DOMContentLoaded
事件之间的区别是什么? ==
和===
的区别是什么?- 请解释关于 JavaScript 的同源策略。
- 请使下面的语句生效:
- 请说明三元表达式中“三元”这个词代表什么?
- 什么是
"use strict";
?使用它有什么优缺点? - 创建一个循环,从 1 迭代到 100,
3
的倍数时输出 "fizz",5
的倍数时输出 "buzz",同时为3
和5
的倍数时输出 "fizzbuzz"。 - 为什么不要使用全局作用域?