严格模式
来源:互联网 发布:php网站打包app 编辑:程序博客网 时间:2024/06/10 23:40
一、严格模式的主要目的
1、消除javascript语法的不合理,不严谨之处,减少怪异行为;
2、消除代码运行的不安全之处,保证代码运行的安全;
3、提高编译器效率,增加运行速度;
4、位未来版本的javascript做好铺垫。
二、进入标志
“use strict”;
三、调用方式
1、针对整个脚本文件:将“use strict”放在脚本文件的第一行,则整个脚本都将以严格模式运行,若这行语句不在第一行,则无效(缺点,不利于js文件的合并)
2、针对单个函数:将“use strict”放在函数体的第一行,则整个函数以严格模式运行。
3、脚本文件的变通写法:借用第二种方法,将整个脚本文件放在一个立即执行的匿名函数中。
(function(){“use strict”//some code here})();
四、语法和行为的改变
1、全局变量的声明
正常模式中,一个变量没有声明就赋值,默认是全局变量。严格模式的全局变量必须显示声明。
2、静态捆绑
动态捆绑:属性和方法到底属于哪一个对象,不是在编译时确定的,而是在运行时确定的。严格模式对动态捆绑做了一些限制,只允许静态捆绑,在编译时确定属性和方法输入哪个对象。这样有理由编译效率的提高,使代码容易阅读,少出意外。
1)禁用with语句
2)正常模式下,Javascript语言有两种变量作用域(scope):全局作用域和函数作用域。严格模式创设了第三种作用域:eval作用域。
正常模式下,eval语句的作用域,取决于它处于全局作用域,还是处于函数作用域。严格模式下,eval语句本身就是一个作用域,不再能够生成全局变量了,它所生成的变量只能用于eval内部。
"use strict"; var x = 2; console.info(eval("var x = 5; x")); // 5 console.info(x); // 2
3增强的安全措施
禁止this关键字指向全局对象、禁止在函数内部遍历调用栈、严格模式下无法删除变量。只有configurable设置为true的对象属性,才能被删除。
0 0
- 严格模式
- 严格模式
- 严格模式
- 严格模式
- 严格模式
- 严格模式
- DOCTYPE 严格模式与JS严格模式
- MySQL 严格模式 sql_mode
- JavaScript严格模式
- Javascript 严格模式详解
- Javascript 严格模式详解
- javascript严格模式
- mysql中的严格模式
- Javascript 严格模式详解
- js strict 严格模式
- Javascript 严格模式详解
- Javascript 严格模式详解
- hive严格模式
- unity3D游戏开发十四之NGUI一
- LayoutInflater类
- jquery仿京东楼层效果
- Linux电源管理-Linux regulator framework概述
- Java调用命令行并获取执行结果
- 严格模式
- 前端模块化开发
- java基础10_数组_排序算法
- 《C++primer Plus6》第五章学习笔记(一)
- 什么是Tower,Rack, blade 服务器
- 双11对程序性能的要求
- 双态运维下,老司机是怎么玩CMDB的?
- SQL Server新建链接服务器连接Oracle
- usaco Runaround Numbers