javascript严格模式下的8点规则
【作用】
[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点规则的更多相关文章
- JavaScript严格模式下this指向
一般认为:严格模式下this不允许指向全局对象.是函数体是否处于严格模式! 如:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mod ...
- 关于javascript严格模式下七种禁止使用的写法
分享至javascript语言精髓与编程实践 开启严格模式(”use strict"): 在全局代码的开始处加入 在eval代码的开始处加入 在函数声明代码处加入 在new Function ...
- Javascript 严格模式下保留关键字
为了应对未来的版本,以下关键字在严格模式下禁止使用. implements interface let package private protected public static yield 示例 ...
- Javascript 严格模式下不允许删除一个不允许删除的属性
如下代码,在严格模式下,如果删除 Object.prototype 浏览器会报错,目前 IE10 也支持 严格模式. <script> "use strict"; de ...
- 关于 Javascript 严格模式下多文件合并时注意
Javascript 在第一行使用 "use strict" 声明严格模式. 但是在多个 js 文件合并时就需要注意了,可能你的是严格模式,但别的文件不是,就会造成错误. 为什么使 ...
- MySQL MGR 单主模式下master角色切换规则
MGR单主模式,master节点可读可写,其余节点都是只读.当配置MGR为单主模式,非master节点自动开启super_read_only 当可读可写的节点异常宕机,会进行怎样的切换?在选择新的可写 ...
- Javascript 严格模式下几个禁忌
禁止使用未声明的变量. 禁止删除变量或对象 禁止删除函数 禁止使用八进制 禁止对只读属性赋值 禁止对一个使用getter方法读取的属性进行赋值 禁止删除一个不允许删除的属性 变量名禁止使用 " ...
- 严格模式下的javascript
arguments: ECMA5移除了实参对象(arguments),在非严格模式下函数里的arguments只是一个标识符,在严格模式下它变成了保留字.严格模式下无法使用arguments作为形参名 ...
- Javascript 在严格模式下禁止指向 this
如下代码, f() 输出的是 false,而 f2() 输出的是 true. 这是因为 f2 在严格模式下禁止 this 指向全局,所以 this 是 undefined, !this 当然是 tru ...
随机推荐
- MATLAB不运行也不报错
今天本来挺激动找到能运行的好几个程序 MATLAB忙到busy也是停不下来 本来不以为然 结果呢 吃了个水果 一杯水都喝下去了 还没结果(⊙o⊙) 这时候解决办法只有一个 Ctrl+c
- NYOJ 737 石子合并(一)
分析: 本题为区间型动态规划,dp[i][j] 表示从第 i 堆合并到第 j 堆的最小代价, sum[i][i] 表示第 i 堆到第 j 堆的石子总和,则动态转移方程: dp[i][j] = min( ...
- 搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台
搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台 By 子敬叔叔 最近在学习麦好的<机器学习实践指南案例应用解析第二版>,在安装学习环境的时候 ...
- C#中的IEnumable与IEnumator接口的简单理解
IEnumerable接口中的方法是返回IEnumator的对象,集合继承了IEnumerator接口才能实现Foreach方法实现遍历.集合类都继承IEnumable和IEnumerator接口,或 ...
- ORACLE10g创建表空间,角色与授权
创建基础表空间,创建用户,授权. -- CREATE TABLESPACE CREATE TABLESPACE TS_JK_LAB_BASIC DATAFILE 'D:\TOOLS\ORACLE\PR ...
- 谈谈eclipse使用技巧一
俗话说的好啊,“工于利启事,必先善其器”,如果说你的编程功底是一个枪法的话,那么强大的eclipse就是android战士们最好的武器. 这里,我们来总结eclipse的使用技巧,从而使我们的编程达到 ...
- C#中使用OpenSSL的公钥加密/私钥解密
在C#中进行公钥加密/私钥解密,需要用RSACryptoServiceProvider,但是它不支持由OpenSSL生成的公钥/私钥字符串. 比如这样的公钥/私钥对( 公私钥生成方法见 http:// ...
- 我的ORM之示例项目
我的ORM索引 示例项目 code.taobao.org/svn/MyMvcApp/ 1. 编译 MyTool ,DbEnt, WebApp, 安装JRE. 2. 配置 Web.config 数据库字 ...
- 团队项目——站立会议DAY6
团队项目--站立会议 DAY6 团队成员介绍(5人):张靖颜.何玥.钟灵毓秀.赵莹.王梓萱 今日(2016/5/13),站立会议已进行了一周时间,大家将这一周所遇到的问题和 ...
- PHP爬虫(2)DOM处理
摘要:在PHP爬虫(1)中详细了介绍了CURL抓取HTML数据的技术.采集数据处理也是爬虫技术中非常重要的部分.处理HTML数据可以用字符串查找,也可以利用正则表达式,但采用Dom处理是最高级的方法. ...