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实现iframe动态调整高度的代码
Jan 06 Javascript
javascript xml为数据源的下拉框控件
Jul 07 Javascript
JavaScript全局函数使用简单说明
Mar 11 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
Jun 20 Javascript
js实现新年倒计时效果
Dec 10 Javascript
javascript检查某个元素在数组中的索引值
Mar 30 Javascript
微信小程序 SocketIO 实例讲解
Oct 13 Javascript
jquery select2的使用心得(推荐)
Dec 04 Javascript
Node.js websocket使用socket.io库实现实时聊天室
Feb 20 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
Sep 27 Javascript
node.js使用fs读取文件出错的解决方案
Oct 23 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
Aug 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
MYSQL环境变量设置方法
2007/01/15 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
PHP读取ACCESS数据到MYSQL的代码
2011/05/11 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
php判断电脑访问、手机访问的例子
2014/05/10 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
$()JS小技巧
2007/07/21 Javascript
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
python 排列组合之itertools
2013/03/20 Python
Python and、or以及and-or语法总结
2015/04/14 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
python烟花效果的代码实例
2020/02/25 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
家庭户外服装:Hawkshead
2017/11/02 全球购物
新西兰优惠网站:Treat Me
2019/07/04 全球购物
肯尼迪就职演说稿
2013/12/31 职场文书
毕业生个人投资创业计划书
2014/01/04 职场文书
打架检讨书100字
2014/01/19 职场文书
春节联欢会策划方案
2014/05/16 职场文书
2014年个人债务授权委托书范本
2014/09/22 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
白酒代理协议书范本
2014/10/26 职场文书
2015年市场营销工作总结
2015/07/23 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
Redis全局ID生成器的实现
2022/06/05 Redis