JavaScript严格模式有什么不同
2017-06-12 19:31
645 查看
看ES6,瞄到“严格模式”,问了下自己什么是“严格模式”?答案好像不是很明朗,遂总结如下:
严格模式声明:“use strict”;
1、禁止变量未声明就赋值
2、限制动态绑定(属性和方法归属哪个对象在编译阶段就要确定)
1)禁止使用with
2)创建eval作用域,eval内声明的变量外部访问不到
3、增强的安全措施
1)禁止this关键字指向全局对象
2)禁止在函数内部遍历调用栈(函数内访问functionName.caller/functionName.arguments均报错)
4、禁止删除变量(只有configurable设置为true的对象属性才能被删除)
5、对只读属性赋值将会报错
6、重名错误
1)函数参数不能重名
7、禁止以零(0)开头的8进制表示法,支持数字0加字母o:“0o”为前缀表示八进制数
8、arguments的限制
1)arguments本身不能被赋值 ,但是arguments[x]仍然可以
2)arguments不再追踪参数的变化,在函数内改变参数值,arguments依然指向旧值
3)禁止使用arguments.callee,匿名函数无法调用自己了
9、函数必须在顶层声明
10、不允许使用以下保留字做变量名
1)implements
2)interface
3)let
4)package
5)private
6)protected
7)public
8)static
9)yield
详细参考:
http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode
严格模式声明:“use strict”;
1、禁止变量未声明就赋值
2、限制动态绑定(属性和方法归属哪个对象在编译阶段就要确定)
1)禁止使用with
2)创建eval作用域,eval内声明的变量外部访问不到
3、增强的安全措施
1)禁止this关键字指向全局对象
2)禁止在函数内部遍历调用栈(函数内访问functionName.caller/functionName.arguments均报错)
4、禁止删除变量(只有configurable设置为true的对象属性才能被删除)
5、对只读属性赋值将会报错
6、重名错误
1)函数参数不能重名
7、禁止以零(0)开头的8进制表示法,支持数字0加字母o:“0o”为前缀表示八进制数
8、arguments的限制
1)arguments本身不能被赋值 ,但是arguments[x]仍然可以
2)arguments不再追踪参数的变化,在函数内改变参数值,arguments依然指向旧值
3)禁止使用arguments.callee,匿名函数无法调用自己了
9、函数必须在顶层声明
10、不允许使用以下保留字做变量名
1)implements
2)interface
3)let
4)package
5)private
6)protected
7)public
8)static
9)yield
详细参考:
http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode
相关文章推荐
- 浏览器兼容性问题,为什么同一段JavaScript代码,不同浏览器上为什么会产生不同效果,甚至bug?浏览器不就是严格按照JavaScript语法进行的吗?java代码为什么从来没听过有什么兼容问题?
- Javascript 严格模式有什么限制
- 严格模式与混杂模式——如何触发这两种模式,区分它们有什么意义呢?·
- 是时候使用Javascript严格模式了
- 关于javascript严格模式下七种禁止使用的写法
- Javascript 严格模式详解 (主要是function的this指针可以为空了!)
- 【ecmascript】Javascript 严格模式详解【转】
- apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?
- Javascript 严格模式详解
- JavaScript——Javascript严格模式笔记
- JavaScript起点(严格模式深度了解)
- 'use strict' JavaScript严格模式
- 如何理解DocType? 什么是严格模式与混杂模式?如何触发这两种模式?
- JavaScript面向对象编程,严格过程的标准化编程法,目前为止最面向对象的JS模式(像Java)
- 【javascript基础】JavaScript语法支持严格模式:”use strict”
- JavaScript语法支持严格模式:”use strict”
- 了解Win7的休眠、睡眠、混合睡眠和离开模式有什么不同?
- 桥接模式与路由模式有什么不同
- javascript 函数表达的问题 fun跟fun()有什么不同?
- 严格模式 (JavaScript)