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 目录列举函数
Nov 06 Javascript
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
Mar 21 Javascript
今天是星期几的4种JS代码写法
Sep 17 Javascript
jQuery前端框架easyui使用Dialog时bug处理
Dec 05 Javascript
jQuery+ajax实现文章点赞功能的方法
Dec 31 Javascript
jQuery中ajax的load()与post()方法实例详解
Jan 05 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
Jan 14 Javascript
详解vue中引入stylus及报错解决方法
Sep 22 Javascript
微信小程序上传图片功能(附后端代码)
Jun 19 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
Aug 24 Javascript
vue axios重复点击取消上一次请求封装的方法
Jun 19 Javascript
JSONP解决JS跨域问题的实现
May 25 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
Smarty Foreach 使用说明
2010/03/23 PHP
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
php导出CSV抽象类实例
2014/09/24 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
2017/02/05 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
jQuery $.each的用法说明
2010/03/22 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
web.js.字符串与正则表达式操作
2017/05/13 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
fetch 如何实现请求数据
2018/12/20 Javascript
详解vue路由篇(动态路由、路由嵌套)
2019/01/27 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
Python实现拼接多张图片的方法
2014/12/01 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
python之文件读取一行一行的方法
2018/07/12 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
python 读取数据库并绘图的实例
2019/12/03 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
平面设计的岗位职责
2013/11/08 职场文书
小车司机岗位职责
2013/11/25 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
销售辞职信范文
2015/03/02 职场文书
运动与健康自我评价
2015/03/09 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书