函数的严格模式
来源:互联网 发布:淘宝的支付转化率指数 编辑:程序博客网 时间:2024/06/07 10:05
严格模式
从 ES5 开始,函数内部可以设定为严格模式。使用 'use strict'
声明。
贴上百度的严格模式好处:
- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
- 消除代码运行的一些不安全之处,保证代码运行的安全;
- 提高编译器效率,增加运行速度;
- 为未来新版本的Javascript做好铺垫。
“严格模式”体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它。
另一方面,同样的代码,在”严格模式”中,可能会有不一样的运行结果;一些在”正常模式”下可以运行的语句,在”严格模式”下将不能运行。掌握这些内容,有助于更细致深入地理解Javascript,让你变成一个更好的程序员。
严格模式和普通模式的区别:
- 不允许用with。
- 所有变量必须声明,赋值给未声明的变量报错,而不是隐匿创建全局变量。
- eval中的代码不能创建eval所在作用域下的变量、函数。而是为eval单独创建一个作用域,并在eval返回时丢弃。
- 函数中的特殊对象arguments是静态副本,而不像非严格模式那样,修改arguments或修改参数变量会相互影响。
- 删除configurable=false的属性时报错,而不是忽略。
- 对象字面量重复属性名报错。
- 禁止八进制字面量,如010(八进制的8)。
- 严格模式下eval、arguments变为关键字,不能用作变量名。
- 一般函数调用时(不是对象的方法调用,也不使用apply/call/bind等修改this)this指向null,而不是全局变量。
- 试图修改不可写属性(writable=false),在不可扩展的对象上添加属性时报TypeError,而不是忽略。
- arguments.caller,arguements.callee被禁用
ES2016 做了一点修改,规定只要函数参数使用了默认值、解构赋值、或者扩展运算符,那么函数内部就不能显式设定为严格模式,否则会报错。
// 报错function doSomething(a, b = a) { 'use strict'; // code}// 报错const doSomething = function ({a, b}) { 'use strict'; // code};// 报错const doSomething = (...a) => { 'use strict'; // code};const obj = { // 报错 doSomething({a, b}) { 'use strict'; // code }};
两种方法可以规避这种限制。第一种是设定全局性的严格模式,这是合法的。
'use strict';function doSomething(a, b = a) { // code}
第二种是把函数包在一个无参数的立即执行函数里面。
const doSomething = (function () { 'use strict'; return function(value = 42) { return value; };}());
阅读全文
0 0
- 函数的严格模式
- ES6-函数的扩展-严格模式
- Javascript的严格模式
- javascript的严格模式
- javascript的严格模式
- JavaScript的严格模式
- 严格模式的限制
- Javascript的严格模式
- 取消mysql的严格模式
- MySQL数据库的严格模式
- 【javascript】 的严格模式 详解
- js的严格模式总结
- JS严格模式的限制
- 关于Javascript的严格模式
- JavaScript严格模式与非严格模式之间的区别
- strict严格模式和非严格模式的区别
- JavaScript严格模式与非严格模式之间的区别
- Js中严格模式和非严格模式的区别
- 用不到1000美元攒一台深度学习用的超快的电脑:继续深度学习和便宜硬件的探奇!
- [重要通知]Strata + Hadoop World北京大会演讲议题招募中!本月24日即将关闭。
- O'Reilly精品图书推荐:Python网络数据采集
- How to use Git ,a magic software
- [重要通知]Strata + Hadoop World北京大会演讲议题招募中!本月24日即将关闭。
- 函数的严格模式
- Linux上TensorFlow的深入研究:构建一个低成本、快速、精准的图像分类器
- [重要通知]Strata + Hadoop World北京大会演讲议题招募中!本月24日即将关闭。
- 2017年安全数据科学领域的4个趋势: 机器人、威胁情报、对抗机器学习以及深度学习是如何影响安全领域的
- [重要通知]Strata + Hadoop World北京大会演讲议题招募中!
- which java
- [重要的事情说三遍]Strata + Hadoop World北京大会演讲议题招募中!
- [重要的事情说三遍]Strata + Hadoop World北京大会开始招募讲师啦!
- O'Reilly精品图书推荐:数据算法:Hadoop/Spark大数据处理技巧