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 multibox 全选
Mar 22 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
Apr 02 Javascript
jquery实现无限分级横向导航菜单的方法
Mar 12 Javascript
JS实现简单的键盘打字的效果
Apr 24 Javascript
javascript转换静态图片,增加粒子动画效果
May 28 Javascript
JQuery控制DIV的选取实现方法
Sep 18 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
Jul 05 Javascript
vue页面加载闪烁问题的解决方法
Mar 28 Javascript
详解小程序缓存插件(mrc)
Aug 17 Javascript
微信小程序实现商品属性联动选择
Feb 15 Javascript
vue+egg+jwt实现登录验证的示例代码
May 18 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
Jun 05 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的知识
2006/11/17 PHP
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
url decode problem 解决方法
2011/12/26 PHP
ThinkPHP快速入门实例教程之数据分页
2014/07/01 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
python如何把字符串类型list转换成list
2020/02/18 Python
Python自动创建Excel并获取内容
2020/09/16 Python
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
园艺师求职信
2014/04/27 职场文书
团日活动总结书
2014/05/08 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
大学军训心得体会800字
2016/01/11 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
Java实现聊天机器人完善版
2021/07/04 Java/Android
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers