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 相关文章推荐
JSON.parse 解析字符串出错的解决方法
Jul 08 Javascript
深入分析js中的constructor和prototype
Apr 07 Javascript
原生js和jQuery实现淡入淡出轮播效果
Dec 25 Javascript
不同js异步函数同步的实现方法
May 28 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 Javascript
jquery根据name取得select选中的值实例(超简单)
Jan 25 jQuery
Node 升级到最新稳定版的方法分享
May 17 Javascript
vue项目持久化存储数据的实现代码
Oct 01 Javascript
详释JavaScript执行环境与执行栈
Apr 02 Javascript
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
Django+Vue实现WebSocket连接的示例代码
May 28 Javascript
Vue Element UI自定义描述列表组件
May 18 Vue.js
详解使用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 array的学习笔记
2012/05/10 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
PHP信号量基本用法实例详解
2016/02/12 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
layui递归实现动态左侧菜单
2019/07/26 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
Python快速从注释生成文档的方法
2016/12/26 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
python腾讯语音合成实现过程解析
2019/08/01 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
Keras实现DenseNet结构操作
2020/07/06 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
植树节活动总结
2014/04/30 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
小学生暑假安全保证书
2015/07/13 职场文书
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript