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 相关文章推荐
js 事件处理函数间的Event物件是否全等
Apr 08 Javascript
jQuery源码分析-01总体架构分析
Nov 14 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
Apr 27 Javascript
使用JS读秒使用示例
Sep 21 Javascript
JsRender实用入门教程
Oct 31 Javascript
Node.js编程中客户端Session的使用详解
Jun 23 Javascript
jquery.cookie实现的客户端购物车操作实例
Dec 24 Javascript
javascript 组合按键事件监听实现代码
Feb 21 Javascript
关于Javascript中document.cookie的使用
Mar 08 Javascript
JavaScript 正则命名分组【推荐】
Jun 07 Javascript
使用js在layui中实现上传图片压缩
Jun 18 Javascript
详解JavaScript自定义函数
Jul 29 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中使用灵巧的体系结构
2006/10/09 PHP
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
PHP中is_file()函数使用指南
2015/05/08 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
通过location.replace禁止浏览器后退防止重复提交
2014/09/04 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
vue router2.0二级路由的简单使用
2017/07/05 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
浅谈vue的第一个commit分析
2020/06/08 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
详解重置Django migration的常见方式
2019/02/15 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
python对矩阵进行转置的2种处理方法
2019/07/17 Python
pycharm运行scrapy过程图解
2019/11/22 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
2020/04/22 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
美国从事品牌鞋类零售的连锁店:Famous Footwear
2016/08/25 全球购物
Java和Javasciprt的区别
2012/09/02 面试题
《称象》教学反思
2014/04/25 职场文书
教师节校长致辞
2015/07/31 职场文书
孙振耀退休感言
2015/08/01 职场文书