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实现键盘Enter键提交表单的方法
May 27 Javascript
jquery代码实现多选、不同分享功能
Jul 31 Javascript
jquery带动画效果幻灯片特效代码
Aug 27 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
May 11 Javascript
JavaScript html5利用FileReader实现上传功能
Mar 27 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
Aug 16 Javascript
jQuery模拟爆炸倒计时功能实例代码
Aug 21 jQuery
JS加密插件CryptoJS实现AES加密操作示例
Aug 16 Javascript
详解vue中axios的使用与封装
Mar 20 Javascript
深入解析koa之异步回调处理
Jun 17 Javascript
js Array.slice的8种不同用法示例
Jul 10 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
Nov 04 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
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
2019/05/28 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
javascript笔记 String类replace函数的一些事
2011/09/22 Javascript
JQuery循环滚动图片代码
2011/12/08 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
极简主义法编写JavaScript类
2017/11/02 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
python使用matplotlib绘制热图
2018/11/07 Python
Python3.4解释器用法简单示例
2019/03/22 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
python 写一个性能测试工具(一)
2020/10/24 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
Oakley西班牙官方商店:太阳眼镜和男女运动服
2019/04/26 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
财务总监岗位职责
2014/03/07 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
研发工程师岗位职责
2014/04/28 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python