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 匿名调用实现代码
Jun 19 Javascript
js模拟类继承小例子
Jul 17 Javascript
原创javascript小游戏实现代码
Aug 19 Javascript
jquery maxlength使用说明
Sep 09 Javascript
JavaScript之自定义类型
May 04 Javascript
jquery toolbar与网页浮动工具条具体实现代码
Jan 12 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
Sep 22 Javascript
js实现遍历含有input的table实例
Dec 07 Javascript
纯js实现页面返回顶部的动画(超简单)
Aug 10 Javascript
Vue源码解析之数据响应系统的使用
Apr 24 Javascript
vue实现的多页面项目如何优化打包的步骤详解
Jul 19 Javascript
Vue SPA 首屏优化方案
Feb 26 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屏蔽过滤指定关键字的方法
2014/11/03 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
vue组件三大核心概念图文详解
2019/05/30 Javascript
JS实现简单tab选项卡切换
2019/10/25 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
Python中的ctime()方法使用教程
2015/05/22 Python
Python数据结构之翻转链表
2017/02/25 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
python3 判断列表是一个空列表的方法
2018/05/04 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
历史系毕业生自荐信
2013/10/28 职场文书
顶撞领导检讨书
2014/01/29 职场文书
学生自我评价范文
2014/02/02 职场文书
上班玩游戏检讨书
2014/02/07 职场文书
交通事故委托书范本
2014/09/28 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
销售会议开幕词
2015/01/28 职场文书
工程部部长岗位职责
2015/02/12 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android