1、为什么HTML5只需要写<!DOCTYPE HTML>就可以?
因为 HTML5 与 HTML4 基于的基准不同。HTML4 基于 SGML 因此需要除了 DOCTYPE 外还需要引入 DTD 来告诉浏览器用什么标准进行渲染。DTD 还分为标准模式、严格模式。如果什么都不写,就完全让浏览器自我发挥,会变成怪异模式。
HTML5 不基于 SGML,因此后面就不要跟 DTD,但是需要 DOCTYPE 来规范浏览器的渲染行为。
注:SGML 是通用标记语言的集合。其中有 HTML、XML,因此需要用 DTD 来指定使用那种规范。
2、什么是闭包?优缺点分别是什么?
闭包是可以访问另一个函数作用域的函数。由于 javascript 的特性,外层的函数无法访问内部函数的变量;而内部函数可以访问外部函数的变量(即作用域链)。
function a(){
var b = 1;
var c = 2;
// 这个函数就是个闭包,可以访问外层 a 函数的变量
return function(){
var d = 3;
return b + c + d;
}
}
var e = a();
console.log(e());
优点:防止变量污染作用域
缺点:不释放则会导致内存泄漏