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 相关文章推荐
HTML页面如何象ASP一样接受参数
Feb 07 Javascript
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
Mar 22 Javascript
JavaScript 加号(+)运算符号
Dec 06 Javascript
对table和ul实现js分页示例分享
Feb 24 Javascript
js打造数组转json函数
Jan 14 Javascript
js判断图片加载完成后获取图片实际宽高的方法
Feb 25 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
Dec 11 Javascript
详解angular应用容器化部署
Aug 14 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
Apr 19 Javascript
react实现antd线上主题动态切换功能
Aug 12 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
Nov 01 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
Aug 10 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中利用sleep函数实现定时执行功能实现代码
2016/08/25 PHP
php5与php7的区别点总结
2019/10/11 PHP
浅析js中取绝对值的2种方法
2013/07/09 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
js绘制圆形和矩形的方法
2015/08/05 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
[35:39]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第二场 11.22
2020/11/24 DOTA
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
python抓取文件夹的所有文件
2018/02/27 Python
python语音识别实践之百度语音API
2018/08/30 Python
详解django的serializer序列化model几种方法
2018/10/16 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
python3实现的zip格式压缩文件夹操作示例
2019/08/17 Python
python datetime中strptime用法详解
2019/08/29 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
.NET常见笔试题集
2012/12/01 面试题
介绍下Lucene建立索引的过程
2016/03/02 面试题
毕业自我评价范文
2013/11/17 职场文书
预备党员承诺书
2014/03/25 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书