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里模拟sleep(两种实现方式)
Jan 25 Javascript
js 立即调用的函数表达式如何写
Jan 12 Javascript
利用js制作html table分页示例(js实现分页)
Apr 25 Javascript
Javascript 赋值机制详解
Nov 23 Javascript
最全面的JS倒计时代码
Sep 17 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
Dec 22 Javascript
Angular 向组件传递模板的两种方法
Feb 23 Javascript
JavaScript实现模态对话框实例
Jan 13 Javascript
ES6如何用一句代码实现函数的柯里化
Jan 18 Javascript
javascript实现智能手环时间显示
Sep 18 Javascript
记一次vue跨域的解决
Oct 21 Javascript
vue祖孙组件之间的数据传递案例
Dec 07 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
一次编写,随处运行
2006/10/09 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
Python实现的简单万年历例子分享
2014/04/25 Python
python持久性管理pickle模块详细介绍
2015/02/18 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
解决python字典对值(值为列表)赋值出现重复的问题
2019/01/20 Python
python实现函数极小值
2019/07/10 Python
Python调用C语言的实现
2019/07/26 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
将相和教学反思
2014/02/04 职场文书
2014年外联部工作总结
2014/11/17 职场文书
先进个人材料怎么写
2014/12/30 职场文书
教师工作能力自我评价
2015/03/04 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
企业投资意向书
2015/05/09 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript