JS严格模式原理与用法实例分析


Posted in Javascript onApril 27, 2020

本文实例讲述了JS严格模式原理与用法。分享给大家供大家参考,具体如下:

使用 "use strict" 指令

"use strict" 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。

它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。

支持严格模式的浏览器:

Internet Explorer 10 +、 Firefox  4+ Chrome  13+、 Safari 5.1+、 Opera 12+。

严格模式声明

严格模式通过在脚本或函数的头部添加 "use strict"; 表达式来声明。

实例中我们可以在浏览器按下 F12 (或点击"工具>更多工具>开发者工具")  开启调试模式,查看报错信息。

为什么使用严格模式:

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

严格模式的限制

1、不允许使用未声明的变量;

2、不允许删除变量或对象;

3、不允许删除函数;

4、不允许变量重名;

5、不允许使用八进制;

6、不允许使用转义字符;

7、不允许对只读属性赋值;

8、不允许对一个使用getter方法读取的属性进行赋值;

9、不允许删除一个不允许删除的属性;

10、变量名不能使用'eval'字符串;

11、变量名不能使用'arguments'字符串;

12、不允许使用以下这种语句:

<script>
"use strict";
with (Math){x = cos(2)}; // 报错
</script>

13、由于一些安全原因,在作用域 eval() 创建的变量不能被调用:

<script>
"use strict";
eval ("var x = 2");
alert (x);        // 报错
</script>

14、禁止this关键字指向全局对象。

function f(){
 return !this;
} 
// 返回false,因为"this"指向全局对象,"!this"就是false
function f(){ 
 "use strict";
 return !this;
} 
// 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。

感兴趣的朋友还可以使用本站在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行结果。

更多关于JavaScript相关内容还可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Javascript里使用Dom操作Xml
Jan 22 Javascript
jquery 笔记 事件
Nov 02 Javascript
ScrollDown的基本操作示例
Jun 09 Javascript
jQuery实现图片信息的浮动显示实例代码
Aug 28 Javascript
使用jsonp完美解决跨域问题
Nov 27 Javascript
简单的JS轮播图代码
Jul 18 Javascript
vue如何在自定义组件中使用v-model
May 14 Javascript
Js中使用正则表达式验证输入是否有特殊字符
Sep 07 Javascript
layui之table checkbox初始化时选中对应选项的方法
Sep 02 Javascript
layui table 获取分页 limit的方法
Sep 20 Javascript
使用Node.js实现base64和png文件相互转换的方法
Mar 11 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
Jul 26 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
Apr 27 #Javascript
详解elementUI中input框无法输入的问题
Apr 27 #Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
Apr 27 #Javascript
Node.js API详解之 tty功能与用法实例分析
Apr 27 #Javascript
React.js组件实现拖拽排序组件功能过程解析
Apr 27 #Javascript
element 中 el-menu 组件的无限极循环思路代码详解
Apr 26 #Javascript
微信小程序个人中心的列表控件实现代码
Apr 26 #Javascript
You might like
PHP远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
php压缩文件夹最新版
2018/07/18 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
深入理解javascript中defer的作用
2013/12/11 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
javascript实现动态标签云
2015/10/16 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
Python实现购物系统(示例讲解)
2017/09/13 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
Django获取应用下的所有models的例子
2019/08/30 Python
python双端队列原理、实现与使用方法分析
2019/11/27 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
2014年小学植树节活动方案
2014/03/02 职场文书
超市中秋节促销方案
2014/03/21 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL