一.怎么用

<script type="text/javascript">

"use strict";     //放在脚本文件第一行,整个脚本将以“严格模式运行”。如果这行语句不在第一行,则无效,整个脚本以"普通模式"运行

</script>

也可以将它放在某个函数体内,但是也要放在第一行,则整个函数以“严格模式”运行

二.如果多人协作开发,有好几个函数,但是我想用严谨模式,别人没用,那怎么办?

用一个匿名函数

(function(){

"use strict";

})();

三.严格模式和普通模式的区别

1.严谨模式下,变量必须通过var声明,否则会报错

2.严谨模式下,不能使用with关键字,会报错 (with关键字平时也少用,运行时特别是在ie下可能会存在内存泄露的情况,会导致js运行起来很慢)

3.严格模式下多了一种作用域,普通模式下两种作用域:全局作用域和函数作用域。严谨模式下,多了一种eval作用域,eval可以把字符串变成真正的js去运行。

普通模式下eval语句的作用域,取决他处于全局作用域,还是处于函数作用域,严格模式下,eval语句本身就是一个作用域,不能够再生成全局变量了,它所生成的变量只能用于eval内部

普通模式下

eval("var x=20;");

alert(x);      //弹出20

若改成

var a=function(){

eval("var x=20;");

}

a();

alert(x);

输出x没有定义

eval("var x=20;alert(x);")

alert(x);

普通模式下,弹出两次20

严谨模式下,就第一次弹出20,第二次未定义

4.严谨模式下,禁止this关键字指向全局对象,即构造函数只要不通过new实例化对象,那么就会直接报错

5.严谨模式下,为了让代码更安全,禁止在函数内部遍历调用栈

var fn=function(){

alert(fn.arguments.length);

};

fn(12,34);

普通模式下,输出2,严谨模式下报错

6.严谨模式下,为了让代码更安全,禁止删除变量

平时也无法删除变量(用delete),但不会报错(delete能删除对象中的元素)

严谨模式下,用delete删除变量会报错

7.普通模式下,对一个对象的只读属性赋值,不会报错,只会默默地失败(赋值不上)。严谨模式下会报错

8.严谨模式下,对禁止扩展的对象添加新属性,会报错

var o={};

o.x=100;

Object.preventExtensions(o);

o.y=200;

console.log(o);

会报错,x属性可以添加上去

普通模式下,虽然y也添加不上去,但不会报错

9.普通模式下,如果对象有多个重名属性,最后赋值的那个属性会覆盖前面的值,严格模式下属于语法错误

10.普通模式下,如果函数有多个重名参数,可以通过arguments[i]读取,严格模式下有多个重名参数属于语法错误

11.禁止八进制数表示法,普通模式下,整数第一位如果是0,表示这是八进制数,严谨模式下,整数第一位是0将报错

12.严谨模式下对arguments对象的限制

①不允许对arguments赋值

②arguments不再追踪参数的变化

var fn=function(num){

num+=100;

alert(num);

alert(arguments[0]);

}

fn(100);

普通模式下输出200,200

严谨模式下输出200,100

③禁止使用arguments.callee这意味着,我们无法在匿名函数内部调用自身(没办法递归)

13.严谨模式下,函数声明必须在全局作用域或函数作用域的顶层,不允许在非函数代码块内声明函数

var a=6;

if(a>5){

function a(){

alert("严格模式下,我不应该在这里声明");            //但是匿名函数可以

}

fn();

}

14.严谨模式下,不能使用一些关键字,但是为了向将来的js新版本过渡,还是增加了一些保留字

优点

js代码可以写的更严谨,更完善,更安全

js的严谨模式的更多相关文章

  1. Js 职责链模式 简单理解

    js 职责链模式 的简单理解.大叔的代码太高深了,不好理解. function Handler(s) { this.successor = s || null; this.handle = funct ...

  2. 【转】EXT JS MVC开发模式

    原文链接:EXT JS MVC开发模式 在app(亦即根目录)文件夹下面创建controller.model.store和view文件夹,从名称上就知道他们该放置什么代码了吧.然后创建Applicat ...

  3. js中State模式的解析及运用

     状态模式,在大的范畴中的定义为当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类.每种编程语言有不同的实现方式,运用的范围也多用于游戏之中. 这里我用javascript来模拟状 ...

  4. js的严格模式详解

    什么是js的严格模式? 严格模式指的是使js在更为严格的条件下运行.严格模式的主要作用是规范我们写代码习惯,以及为js升级做好铺垫.  如何使用严格模式? <script> //直接在代码 ...

  5. JS的异步模式

    JS的异步模式:1.回调函数:2.事件监听:3.观察者模式:4.promise对象 JavaScript语言将任务的执行模式可以分成两种:同步(Synchronous)和异步(Asychronous) ...

  6. JavaScript---正则使用,日期Date的使用,Math的使用,JS面向对象(工厂模式,元模型创建对象,Object添加方法)

    JavaScript---正则使用,日期Date的使用,Math的使用,JS面向对象(工厂模式,元模型创建对象,Object添加方法) 一丶正则的用法 创建正则对象: 方式一: var reg=new ...

  7. 关于js的严格模式

    最近在看你不知道js,补充自己的js基础,加深理解.在读的过程中写点笔记. 严格模式下与非严格模式的区别 . 严格模式是es5新增的,es6是默认为严格模式的!js默认状态下是非严格模式的!   一般 ...

  8. 如何做JS 单体模式的设计---->>js设计模式<<-------单体模式

    1. 单体模式是js中最基本 单最有用的模式之一,非常常用. 单体模式的基本结构如下: var Person = { name: 'lilu', age:', sayHi: function(){ a ...

  9. 由项目浅谈JS中MVVM模式

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.    背景 最近项目原因使用了durandal.js和knock ...

随机推荐

  1. linux学习笔记2-命令总结5

    压缩解压命令 bzip2,gunzip,gzip,tar,zip 网络命令 ifconfig - 查看和配置网卡 lastlog - 检查某特定用户上次登录的时间 last - 列出目前和过去登入系统 ...

  2. Python学习(5)条件语句

    目录 Python 条件语句 Python 简单的语句组 Python 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了 ...

  3. show slave status

    Slave_IO_State: Waiting for master to send event                   Master_Host: 10.1.1.1             ...

  4. paoracle中的包头(Package)与包体(Package body)

    http://www.th7.cn/db/Oracle/201406/56949.shtml 简单的实例 create or replace package body integrationEgoTo ...

  5. Android保存图像到相册

    在应用的图集中,通常会给用户提供保存图片的功能,让用户可以将自己喜欢的图片保存到系统相册中. 这个功能其实很好做,系统提供了现成的API: 简单的来说就这一行代码: [java]  MediaStor ...

  6. @synchronized (object)使用详解

    synchronized关键字代表这个方法加锁,相当于不管哪一个线 程A每次运行到这个法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运 ...

  7. 3 javascript

    3 javascript javascript基础 html: 负责了一个页面的结构.   css: 负责了一个页面的样式.    javascript: 负责与用户进行交互. 1997年欧洲的计算机 ...

  8. 三大平衡树(Treap + Splay + SBT)总结+模板[转]

    Treap树 核心是 利用随机数的二叉排序树的各种操作复杂度平均为O(lgn) Treap模板: #include <cstdio> #include <cstring> #i ...

  9. linux 后台执行命令

    本文主要内容: 1. 设置ctontab文件,并用它来提交作业. 2. 使用at命令来提交作业. 3. 在后台提交作业. 4. 使用nohup命令提交作业. 名词解释: cron 系统调度进程.可以使 ...

  10. J2EE 第二阶段项目之部署项目、分工安排

    SVN 先通过使用教程,和能够介绍了解svn. svn使用教程总结   ;   svn功能介绍. 分工安排:我的任务就是项目统计. 1 效益统计 1 教育效益统计表 (教育效益统计表,增,改,查看,查 ...