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 秒表实现代码
Jul 24 Javascript
jquery ztree异步搜索(搜叶子)实践
Feb 25 Javascript
如何实现json数据可视化详解
Nov 24 Javascript
ajax异步请求详解
Jan 06 Javascript
js实现鼠标左右移动,图片也跟着移动效果
Jan 25 Javascript
微信小程序 获取session_key和openid的实例
Aug 17 Javascript
在 webpack 中使用 ECharts的实例详解
Feb 05 Javascript
Koa2微信公众号开发之消息管理
May 16 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
Jul 21 Javascript
Windows下Node爬虫神器Puppeteer安装记
Jan 09 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
Nov 01 Javascript
jquery实现图片放大镜效果
Dec 23 jQuery
详解使用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+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
jquery操作cookie插件分享
2014/01/14 Javascript
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
Nginx本地目录映射实现代码实例
2021/03/31 Servers