1.DOCTYPE 不是标签,并且必须置于html标签之前,声明的是该html文档采用的是哪个版本的(html4.01,xhtml,html5),在HTML 4.01中,由于采用的是SGML,所以还要声明DTD,这样浏览器才能正确呈现html内容,HTML4.01有三个版本,strict(严格模式),transitional,frameset。 xhtml有四个版本,strict 、transitional、frameset、template。(详情参考:http://www.w3school.com.cn/tags/tag_doctype.asp)
2.JS严格模式,是针对JS引擎执行的模式,严格模式能让你发现以前一直忽略的错误,在严格模式下运行得代码,如果出现某些以前可以被忽略的错误时,会显式的抛出错误。有助于正确的修正该错误,能更方便的调试代码。严格模式与非严格模式有哪些不同和改进,可以参考改篇文章:http://flandycheng.blog.51cto.com/855176/982719。
3.doctype的严格模式(strict)与js的严格模式,是针对两个不同的方面,前者是对html标签,后者是对js引擎。
4.举个例子来说明js严格模式:
源码:
<script>
//开启js严格模式
"use strict";
var person = new Object();
Object.defineProperty(person, "name", {
writable : false, //设置该属性不可写
value : "zhangda"
});
console.log(person.name);
person.name = "tom";
console.log(person.name);
</script>
结果:
不开启严格模式(注释掉“use strict;”)的结果:
会忽略掉对那么属性的修改。依旧打印原来的值。