JavaScript -- 严格模式

用过 js 的都知道这玩意不太严谨,还记得 Nicholas C.Zakas 是这么介绍 js 这门语言的 “JavaScript 是一种非常松散的面向对象语言”,这里说的松散正是指语法的不严谨,比如说,定义变量可以用 var 关键字声明,也可以不用关键字直接使用等等。ES5为了解决这种不严谨的语法,就引入了严格模式这个概念。在W3C标准下,其实严格模式的很多语法我们都不会写,比如定义两个相同的形参名(要是真的这么写你就写想把自己搞晕还是想把解释器搞晕啊~);删除变量,js 自带垃圾回收机制,在开发过程中很少需要直接删除掉某个变量,若是真的需要,则直接将这个变量指向空指针对象 null ,再由垃圾回收机制解决即可。所以,这里就说一个比较常见的在严格模式下不能通过的语法——不使用关键字定义变量就直接使用

严格模式也有“作用域”这说法,也就是说,严格模式有作用范围,可分为全局下的严格模式和局部的严格模式(主要体现在函数内),在一个 js 文件的顶部声明:“use strict”则代表全局环境都使用严格模式:

“use strict”;

a = 1; // 报错,a未定义就使用了,在严格模式下需要使用关键字定义变量才能使用

相似的,在函数体的顶部声明 “use strict”就代表这个函数遵循严格模式。严格模式下一定要先定义变量再使用,不能直接进行操作。当然,除此以外还有一些不太可能会犯的语法错误,下面是W3C列出的一些语法规则:

https://www.w3schools.com/js/js_strict.asp  (需要梯子 -.-)

猜你喜欢

转载自blog.csdn.net/weixin_41030302/article/details/82969897