简要:严格模式(strict mode)是JavaScript在ES5里面新增的编码模式,只要一行代码 就可开启,可谓 非常简单了,而它对于 我们的编码来说到底有什么不同呢?

一. 严格模式的目的?

  • 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
  • 消除代码运行的一些不安全之处,保证代码运行的安全;
  • 提高编译器效率,增加运行速度;
  • 为未来新版本的Javascript做好铺垫。

二. 使用方法?

只要在合适的位置插入这行代码就可以了。

  "use strict";
  • 针对整个脚本文件
<script>

     "use strict"; //插入到这个位置,对整个js文件有效
    
     console.log(somecode);
    
</script>

    

  • 针对独立的函数
  function a(){

      "use strict"; //插入到这个位置,这对这个函数有效

      console.log(somecode)

   }

三、 严格模式有哪些语法变化?

1. 全局变量必须显式声明

  "use strict";

  a = 1; //这时报错,因为严格模式下,不能默认声明为全局变量了,必须加 var等声明。

2. 静态绑定,javascript的动态绑定收到了一些限制,如with语句不再允许使用(with语句是在执行时候runtime才绑定属性、方法到哪个对象)。


3. 增加eval()作用域

  • 普通模式下:2种,全局作用域、函数作用域;此时的eval的作用域取决于它处于全局作用域下还是函数作用域下;

  • 严格模式下:3种,全局作用域、函数作用域、eval作用域;


4. this不再指向全局对象

意味着:当使用构造函数的时候,当没有用new关键字,此时的this将不再默认指向全局对面window,而会报错;


5. 禁止在函数内部遍历调用栈


6. 严格模式下无法删除变量。只有configurable设置为true的对象属性,才能被删除。


7. 正常模式下,对一个对象的只读属性进行赋值,不会报错,只会默默地失败。严格模式下,将报错。


。。。后续更新中

更多内容:请参考阮一峰老师的博客javascript严格模式详解

最新文章

  1. webstorm安装后的一些设置技巧:
  2. MSSQLSERVER服务无法启动的解决方案
  3. 使用抓包工具SpyNet对你的网络进行监控
  4. C++类构造析构调用顺序训练(复习专用)
  5. MFC打开文件对话框
  6. iframe嵌入其他网站,如何自适应高度
  7. ajax的一部分知识
  8. CentOS6.4安装mplayer
  9. OpenStreetMap(OSM) for developers
  10. ASP.NET中的ExecuteNonQuery()方法的用法
  11. MongoDb注意事项
  12. Xen创建新虚拟机
  13. struts2 从一个action跳转到另一个action的struts.xml文件的配置
  14. php 数组变成树状型结构
  15. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十):使用菜单消息功能
  16. 关于mysql设置外键,实现参照性完整性约束,以及workbench上的一个bug(?)
  17. JS 实现DIV 滚动至顶部后固定
  18. 交换路由中期测验20181226(动态路由配置与重分发、NAT转换、ACL访问控制列表)
  19. 利用数据库触发器让字段与自增长Id相关联
  20. 基于MATLAB的Sobel边缘检测算法实现

热门文章

  1. 开源 免费 java CMS - FreeCMS1.9 会员管理
  2. 【u032】均衡发展
  3. [WebGL入门]十三,minMatrix.js和坐标变换矩阵
  4. 概念的理解 —— 奇点(singularity point)、第一性原理(first principle)
  5. 简洁常用权限系统的设计与实现(四):不维护level,用递归方式构造树
  6. 自绘实现半透明水晶按钮(继承CButton,设置BS_OWNERDRAW风格,覆盖DrawItem函数绘制按钮,把父窗口的背景复制到按钮上,实现视觉上的透明,最后通过AlphaBlend实现半透明)
  7. Swift语言实现代理传值
  8. gcc安装教程(学习Linux编程只需安装cygwin)
  9. 类的XML序列化(XML Serialization)
  10. C#步骤控件