2019独角兽企业重金招聘Python工程师标准>>>

一、什么是严格模式:

除了正常运行模式(混杂模式),ES5还添加了第二种运行模式:“严格模式”(strict mode),使用严格模式的时候运行环境会更加严格要求JavaScript的语法。

二、严格模式的使用:

在全局或函数的第一条语句定义为'use strict' ,如果浏览器不支持,只解析为一条简单的语句,没有任何副作用。如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>严格模式</title>
</head>
<body><script type="text/javascript">'use strict';</script></body>
</html>

三、严格模式的影响。

  1. 必须使用var声明变量
  2. 禁止自定义的函数中的this指向window。
  3. 创建eval作用域。
  4. 对象不能有重名的属性。

例子1:必须使用var声明变量。

下面的代码不是严格模式,username变量直接写,没有用var声明。相当于在window上添加了一个全局的属性username。

<script type="text/javascript">username ='张三';//window.usernameconsole.log(username);</script>

严格模式下:这段代码会报错。

<script type="text/javascript">'use strict';username ='张三';//window.usernameconsole.log(username);</script>

在浏览器中打开html运行,会报错。"username is not defined" 。

严格模式下正确的写法:使用var声明变量。

<script type="text/javascript">'use strict';var username ='张三';//window.usernameconsole.log(username);</script>

例子2:禁止自定义的函数中的this指向window。

<script type="text/javascript">function Person(name,age) {this.name = name;this.age=age;}Person("zhangsan",18);//这里的person相当于被window调用,函数里面的this指向了windowconsole.log(window.name);console.log(window.age);
</script>

上面的代码不是严格模式。当直接调用person函数时,相当于被window调用,函数里面的this指向了window。并且能打印出window.name、window.age的值。

下面使用严格模式

<script type="text/javascript">'use strict';function Person(name,age) {this.name = name;this.age=age;}Person("zhangsan",18);console.log(window.name);console.log(window.age);
</script>

使用严格模式之后。执行Person("zhangsan",18)代码时,里面的this会指向undefined,报错信息如下:

严格模式下的正确调用

<script type="text/javascript">'use strict';function Person(name,age) {this.name = name;this.age=age;}var p = new Person("zhangsan",18);console.log(p.age);console.log(p.name);
</script>

例子3:创建eval作用域。

eval()函数里面传递一个字符串作为参数,会把里面的字符串当做一个js来运行。

<script type="text/javascript">var username = "zhangsan";//这里会打印内部的username=李四eval("var username='李四';console.log('eval内部:'+username);")console.log(username);
</script>

上面的代码:最后打印的username是 “李四”,也就是eval函数里面的代码影响了外部的变量值。

如果是严格模式,那eval函数里面的代码会被封装,不影响外面的username的值。username的值会是"zhangsan"。

例子4:对象不能有重名的属性。

严格模式下,一个对象里面有2个重名的属性。编译器会报错。如下一个对象有2个username属性。

转载于:https://my.oschina.net/kunBlog/blog/1634403

2、ES5的严格模式use strict相关推荐

  1. JavaSript严格模式use strict详解

    1.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. ...

  2. Javascript 严格模式use strict详解

    一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. ...

  3. 严格模式 use strict

    ##严格模式下需要注意的点: 全局变量显式声明 直接调用函数this指向undefined delete删除全局变量会报错 对象不能有重名的属性 函数不能有重名的参数 对arguments做了限制 1 ...

  4. JS中的严格模式(Strict Mode)

    什么是严格模式? 严格模式是ECMAScript5的新特性,它是采用具有限制性JavaScript变体的一种方式,从而使代码隐式地脱离"马虎模式/稀松模式/懒散模式"(sloppy ...

  5. JavaScript严格模式 use strict

    1.在严格模式下,变量必须显示声明(var/let/const),直接给变量赋值,不会隐式创建全局变量 (function(){//非严格模式a = 10;console.log(a); //10 } ...

  6. JavaScript 严格模式(use strict)

    使用 "use strict" 指令 "use strict" 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增. 它不是一条语句, ...

  7. Hive笔记之严格模式(strict mode)

    Hive有一个严格模式,在严格模式下会对可能产生较大查询结果的语句做限制,禁止其提交执行. 一.切换严格模式 查看当前的模式: hive> set hive.mapred.mode; hive. ...

  8. JavaScript进阶【二】JavaScript 严格模式(use strict)的使用

    版权声明:本文为博主原创文章,未经博主允许不得转载.更多学习资料请访问我爱科技论坛:www.52tech.tech https://blog.csdn.net/m0_37981569/article/ ...

  9. 点位拍照打卡完成任务小程序JavaScript 严格模式(use strict)

    </head> <body><h2>全局 "use strict" 声明.</h2> <p>浏览器按下 F12 开启调试 ...

最新文章

  1. 深度分析Java的枚举类型——枚举的线程安全性及序列化问题
  2. 说明:最新谷歌AI智商不超过6岁研究来自中国科学院而非美国康内尔大学
  3. 使用PHP对数据库输入进行恶意代码清除
  4. qsort与sort()
  5. Mysql数据类型之字符串的案例介绍(含latin1下varchar的最大长度是65532还是65533)
  6. winCVS 使用方法
  7. ACM Doing Homework again
  8. Android之webview与js交互
  9. linux 查看各个cpu使用率
  10. 【算法】排序_基数排序
  11. 容器技术Docker K8s 29 容器服务ACK基础与进阶-弹性伸缩
  12. hadoop2.6.0的eclipse插件编译和设置
  13. cad隐藏图层命令快捷键_CAD中,有没有快速隐藏其他图层的快捷键啊? 新上
  14. 沉浸式体验在文化展馆设计中应用
  15. 群晖Docker的高级操作
  16. 蓝桥杯:C语言实现字母图形
  17. C语言——初识C语言(define定义常量和宏,指针,结构体)
  18. java有substr方法_java substring和substr
  19. UVa 10382 - Watering Grass
  20. Java实现将本地.html文件以.docx文件格式导出并添加水印

热门文章

  1. ACM-树重心的性质及动态维护
  2. 学习scala03 控制结构
  3. Google 的三篇论文
  4. Ubuntu安装python3虚拟环境
  5. PHP 中 this,self,parent 的区别、用法
  6. 配置LANMP环境(9)-- 安装Git与vsftp
  7. keychain 专研
  8. HTTP协议状态码详解(HTTP Status Code)(转)
  9. 今天加班做了昨天晚上要写的页面,用到了一些之前用过但还不熟悉需要上网搜索才能用的知识点:...
  10. xp本地服务器虚拟目录创建,WindowsXp系统怎么创建虚拟目录