【作用】

  [1]消除js语法的一些不合理、不严谨、不安全问题,减少怪异行为并保证代码运行安全

  [2]提高编译器效率,增加运行速度

【使用】

  [1]整个脚本启用严格模式,在顶部执行:"use strict";

  [2]在指定函数中执行严格模式,在函数体第一行:"use strict"

  [3]不支持strict模式的浏览器把"use strict"当做一个字符串语句执行,支持strict模式的浏览器将开启strict模式

  [4]支持严格模式的浏览器包括IE10+、Firefox4+、safari12+、opera12+、chrome

【规则】
【1】变量
  [a]不允许意外创建全局变量

"use strict";
message = 'hello world!';

  [b]不能对变量调用delete操作符

"use strict";
var color = 'red';
delete color;

【2】对象
  [a]不能为只读属性赋值

"use strict";
var person = {
name:'cook'
};
Object.defineProperty(person,'name',{
writable: false
});
person.name = 'Nicholas';

  [b]不能为不可配置的属性使用delete操作

"use strict";
var person = {
name:'cook'
};
Object.defineProperty(person,'name',{
configurable: false
});
delete person.name;

【3】函数
  [a]参数必须唯一

"use strict";
function sun(num,num){
//TODO
}

  [b]修改形参不会反映到arguments中

function showValue(value){
value = "Foo";
alert(arguments[0]);
//非严格模式:"Foo"
//严格模式:"Hi"
}
showValue("Hi");

  [c]不允许使用arguments.callee和arguments.caller

"use strict";
function fn(num){
return arguments.callee(num);
}
fn(2);
"use strict";
function outer(){
inner();
}
function inner(){
alert(inner.caller());
}
outer();

【4】不允许eval()在包含上下文中创建变量或函数

"use strict";
function fn(){
eval("var x=10");
alert(x);
}
fn();
//允许以下操作
var result = eval("var x = 10, y = 11; x+y");
alert(result);//

【5】不允许使用eval和arguments作为标识符,也不允许读写他们的值

"use strict";
var eval = 10;
var arguments = 20;

【6】不允许this值为null或undefined

"use strict";
var color = "red";
function fn(){
alert(this.color);
}
fn();

【7】不允许使用with语句

"use strict";
with(location){
alert(href);
}

【8】不允许使用八进制字面量

"use strict";
var value = 010;

javascript严格模式下的8点规则的更多相关文章

  1. JavaScript严格模式下this指向

    一般认为:严格模式下this不允许指向全局对象.是函数体是否处于严格模式! 如:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mod ...

  2. 关于javascript严格模式下七种禁止使用的写法

    分享至javascript语言精髓与编程实践 开启严格模式(”use strict"): 在全局代码的开始处加入 在eval代码的开始处加入 在函数声明代码处加入 在new Function ...

  3. Javascript 严格模式下保留关键字

    为了应对未来的版本,以下关键字在严格模式下禁止使用. implements interface let package private protected public static yield 示例 ...

  4. Javascript 严格模式下不允许删除一个不允许删除的属性

    如下代码,在严格模式下,如果删除 Object.prototype 浏览器会报错,目前 IE10 也支持 严格模式. <script> "use strict"; de ...

  5. 关于 Javascript 严格模式下多文件合并时注意

    Javascript 在第一行使用 "use strict" 声明严格模式. 但是在多个 js 文件合并时就需要注意了,可能你的是严格模式,但别的文件不是,就会造成错误. 为什么使 ...

  6. MySQL MGR 单主模式下master角色切换规则

    MGR单主模式,master节点可读可写,其余节点都是只读.当配置MGR为单主模式,非master节点自动开启super_read_only 当可读可写的节点异常宕机,会进行怎样的切换?在选择新的可写 ...

  7. Javascript 严格模式下几个禁忌

    禁止使用未声明的变量. 禁止删除变量或对象 禁止删除函数 禁止使用八进制 禁止对只读属性赋值 禁止对一个使用getter方法读取的属性进行赋值 禁止删除一个不允许删除的属性 变量名禁止使用 " ...

  8. 严格模式下的javascript

    arguments: ECMA5移除了实参对象(arguments),在非严格模式下函数里的arguments只是一个标识符,在严格模式下它变成了保留字.严格模式下无法使用arguments作为形参名 ...

  9. Javascript 在严格模式下禁止指向 this

    如下代码, f() 输出的是 false,而 f2() 输出的是 true. 这是因为 f2 在严格模式下禁止 this 指向全局,所以 this 是 undefined, !this 当然是 tru ...

随机推荐

  1. java 基础题 很基础, 很有趣

    都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底, 老手们就不用进来了,免得笑话我们这些未出校门的孩纸们, ...

  2. petapoco 使用 MiniProfiler Glimpse监控

    PetaPoco是一款适用于.Net(window) 和Mono( linux )的微小.快速.单文件的微型ORM. MVC MiniProfiler是Stack Overflow团队设计的一款对AS ...

  3. weui 问题

    1.阻止checkbox 被 checked 方法1: $('.weui-check').on('click', function(e){ $(this).attr('disabled', true) ...

  4. 用Win7自带的磁盘管理工具给硬盘分区

    最近新买了一台笔记本,要给硬盘分几个区,心想还是用个工具方便点,于是就上网准备下个“硬盘分区魔术师”,但是看到有一篇文章介绍Win7系统也自带了硬盘分区工具,这我以前倒没听说过,试了一下,还挺方便好用 ...

  5. 多线程_先产后销_运行结果有BUG

    class Shop { public static void main(String[] args) { Things t=new Things(); Custom c=new Custom(t); ...

  6. php下xcache的安装

    下载xcache: wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz 安装: tar zxvf xcache ...

  7. WLAN信道

  8. SSIS oracle 64位 数据源链接

    新建数据源 提供程序选择:本机OLE DB ORACLE Provider For OLE DB 服务器名或文件名中选择Oracle Net Manager中配置好的服务名即可 填写账号,密码,测试, ...

  9. [leetcode 24] Swap Nodes in k-Group

    1 题目: 目前被墙,看不了. 2 思路: 比较简单,注意处理边界点就好 3 代码: public ListNode swapPairs(ListNode head) { int temp; if(h ...

  10. Dubbo框架选型

    一.为什么会是dubbo 1.Dubbo是一个分布式服务框架,提供RPC(远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.) 远程服务调用方案,以及SOA ...