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 相关文章推荐
jquery ui dialog里调用datepicker的问题
Aug 06 Javascript
Jquery跨域获得Json的简单实例
May 18 Javascript
基于Vuejs实现购物车功能
Aug 02 Javascript
Javascript实现前端简单的路由实例
Sep 11 Javascript
AngularJS通过$location获取及改变当前页面的URL
Sep 23 Javascript
javascript对浅拷贝和深拷贝的详解
Oct 14 Javascript
jQuery中get方法用法分析
Dec 07 Javascript
Node+Express+MongoDB实现登录注册功能实例
Apr 23 Javascript
javaScript 逻辑运算符使用技巧整理
May 03 Javascript
VUE中使用Vue-resource完成交互
Jul 21 Javascript
微信小程序url与token设置详解
Sep 26 Javascript
Node.js中console.log()输出彩色字体的方法示例
Dec 01 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获取随机数字和字母的方法详解
2013/06/06 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
js直接编辑当前cookie的脚本
2008/09/14 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
5种处理js跨域问题方法汇总
2014/12/04 Javascript
JavaScript入门基础
2015/08/12 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
基于JS代码实现实时显示系统时间
2016/06/16 Javascript
React中ES5与ES6写法的区别总结
2017/04/21 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
初步解析Python中的yield函数的用法
2015/04/03 Python
详解Python中的__new__()方法的使用
2015/04/09 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
Python3.x对JSON的一些操作示例
2017/09/01 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
python 正确保留多位小数的实例
2018/07/16 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
Python中psutil的介绍与用法
2019/05/02 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
美国战术品牌:5.11 Tactical
2019/05/01 全球购物
教育系毕业生中文求职信范文
2013/10/06 职场文书
办公文员的工作岗位职责
2013/11/12 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
2014年医务科工作总结
2014/12/18 职场文书
城管年度个人总结
2015/02/28 职场文书
护理培训心得体会
2016/01/22 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL