平常我们在ECMAscript5中可以声明以下的变量

num = 5;

console.log(num);//输出的是变量5

而为了Javascript更合理、更安全、更严谨的方向发展,添加了一种新的模式进来 - “严格模式”

严格模式的主要目的

1、消除javascript的一些不严谨、不合理之处,减少一些怪异的错误;

2、消除代码的一些不安全,保证代码的安全

3、提高编译效率,增加运行速度

4、为未来新版本的javascript做好铺垫

支持严格模式下的浏览器:Internet Explorer 10 +、 Firefox 4+ Chrome 13+、 Safari 5.1+、 Opera 12+

进入严格模式使用 “use strict”语句

老版本的浏览器会默认当成一串字符串执行

如果要以严格模式进行代码编译,需要把“use strict”写在脚本内的第一行

例1:

  <script>

    “use srtrict”; //这是一个严格模式的执行代码,写在脚本内的第一行

     var num = 1;

     console.log(num);

  </script>

  

  <script>  

     var num = 1;  //这是正常模式

     console.log(num);

  </script>

严格模式也可以针对单个函数进行执行

例2:<script>

    function strict (){  

    “use strict”;

     return ‘这是严格模式’;

    }

     

    function notStrict (){  

     return ‘这是正常模式’;

    }

   </script>

可以将严格模式放在立即执行函数中

例3:  (function(){

    “use strict”;

    })();

严格模式对Javascript的语法和行为,都做了一些改变

在正常模式中,如果一个变量没有生命便赋值,默认是全局变量 例如:a = 1; 严格模式中严禁这种写法,全局变量必须显示生命,添加var

例4: <script>

     “use strict”;

      i = 1;

      for(i = 0; i < 2; i++) { // 报错,i声明错误
      }

     </script>

禁止this关键字指向全局对象

在普通函数下,this的指向是全局对象window,在严格模式下,this的值为undefined,所以在构造函数下

function f(){

    "use strict";

    this.a = 1;

  };

  f();// 报错,this未定义

严格模式下无法删除变量,只有将configurable设置为true
“use strict”;

var x;

delete x //报错,语法错误

var o = Object.create(null, {'x': {
      value: 1,
      configurable: true
  }});

  delete o.x; // 删除成功

Javascript 严格模式的一些理解的更多相关文章

  1. (转)深入理解JavaScript 模块模式

    深入理解JavaScript 模块模式 (原文)http://www.cnblogs.com/starweb/archive/2013/02/17/2914023.html 英文:http://www ...

  2. 深入理解JavaScript 模块模式

    http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html 模块模式是JavaScript一种常用的编码模式.这是一般的 ...

  3. javascript运行模式:并发模型 与Event Loop

    看了阮一峰老师的JavaScript 运行机制详解:再谈Event Loop和[朴灵评注]的文章,查阅网上相关资料,把自己对javascript运行模式和EVENT loop的理解整理下,不一定对,日 ...

  4. Javascript原型模式总结梳理

    在大多数面向对象语言中,对象总是由类中实例化而来,类和对象的关系就像模具跟模件一样.Javascript中没有类的概念,就算ES6中引入的class也不过是一种语法糖,本质上还是利用原型实现.在原型编 ...

  5. JavaScript严格模式详解

    转载自阮一峰的博客 Javascript 严格模式详解   作者: 阮一峰 一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict m ...

  6. JQuery日记6.5 Javascript异步模式(一)

    理解力JQuery前实现异步队列,有必要理解javascript异步模式. Javascript异步其实并不严重格异步感,js使某些片段异步方式在将来运行,流不必等待继续向下进行. 在多线程的语言中最 ...

  7. Javascript 严格模式(strict mode)详解

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

  8. Javascript 严格模式 strict mode(转)

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

  9. 面向对象的JavaScript --- 原型模式和基于原型继承的JavaScript对象系统

    面向对象的JavaScript --- 原型模式和基于原型继承的JavaScript对象系统 原型模式和基于原型继承的JavaScript对象系统 在 Brendan Eich 为 JavaScrip ...

随机推荐

  1. uart接口介绍和认识

    接口/总线/驱动 UART (Universal Asynchronous Receiver/Transmitter) 通用异步收发器. UART是用于控制计算机与串行设备的芯片.有一点要注意的是,它 ...

  2. uni-app h5端跨域问题解决

    例如我现在的项目运行在 http://localhost:8080,而我有个接口是 https://service.picasso.adesk.com/v1/wallpaper/album,发起请求就 ...

  3. DLL转存为IL文件及修改后重新生成DLL文件

    DLL反编译工具有:dotPeek (jetbrains) .ILSpy DLL转存IL使用:ildasm 打开DLL文件,选择file->dump. il .res重新生成DLL工具: ila ...

  4. Numpy入门(简单)

    NumPy介绍 最近因为需要使用python做一个数据处理的项目,所以粗略的学习了一下numpy,在此分享一下自己学习中遇到的一些问题和一些基础的名词. 什么是NumPy? python用于科学计算的 ...

  5. 我用 Python 撸了一个 plist 图集拆图工具!附上github源码

    这些年,我一直在使用 JavaScript .CocosCreator 做开发,只要是他们不能解决的,我都不太愿意去弄,或者说是不太情愿去做.真的是手中有把锤子,看什么都是钉子,越是熟悉一样东西,越容 ...

  6. [Luogu P2827] 蚯蚓 (巧妙的模拟)

    题面: 传送门:https://www.luogu.org/problemnew/show/P2827 Solution 看到这题,我们肯定会有一个大胆想法. 那就是直接用堆模拟这个过程. 对于q,我 ...

  7. git/SQL/正则表达式的在线练习网站

    虽说我没事就喜欢喷应试教育,但我也从应试教育中发现了一个窍门:如果能够以刷题的形式学习某项技能,效率和效果是最佳的.对于技术的学习,我经常面临的困境是,理论知识知道的不少,但是有的场景实在无法模拟,缺 ...

  8. Mybatis之plugin插件设计原理

    大多数框架,都支持插件,用户可通过编写插件来自行扩展功能,Mybatis也不例外. 我们从插件配置.插件编写.插件运行原理.插件注册与执行拦截的时机.初始化插件.分页插件的原理等六个方面展开阐述. 一 ...

  9. Docker(3)- Centos 7.x 下 Docker 镜像加速配置

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 前言 默认情况下,Docker ...

  10. Python - 生成 requirement.txt 文件

    前言 Python项目中,一般都会有一个 requirements.txt 文件 这个文件主要是用于记录当前项目下的所有依赖包及其精确的版本号,以方便在一个新环境下更快的进行部署 如何生成 requi ...