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 ...
随机推荐
- linux添加新LUN,无需重启
linux添加新LUN,无需重启 在给存储增加新的Lun时,在linux下一般是: A.重启操作系统B.重启HBA卡驱动 1. kudzu添加完新硬盘后,运行命令kudzu重新扫描新的硬件设备,类似a ...
- Eclipse不能自动编译 java文件
在网上的解决方法 方法参考如下: (1) Window-->Preferences-->General-->Workspace 有个"Build automatica ...
- ASP.NET 导出gridview中的数据到Excel表中,并对指定单元格换行操作
1. 使用NPOI读取及生成excel表. (1)导出Click事件: 获取DataTable; 给文件加文件名: string xlsxName = "xxx_" + DateT ...
- HTML5的文档结构和新增标签
一.HTML5 文档结构1.第一步:打开 开发工具,打开指定文件夹:2.第二步:保存 index.html 文件到磁盘中,.html 是网页后缀:3.第三步:开始编写 HTML5 的基本格式.< ...
- Flask的socket.error:10053
一脸懵逼: 学习python一段时间,最近使用flask搭建了一个服务器,然后使用phantom(相当于浏览器)发送请求发送了几条flask就挂掉了,报错信息如下: 由于个人python经验不是很足, ...
- C++ REST SDK in Visual Studio 2013
The C++ REST project provides a modern asynchronous C++ API for cloud-based client-server communicat ...
- 直接通过Ajax 处理程序加 Action名,取得变量值。
var set_value;$(document).ready(function () { var query = createParam('GetValue', '0'); ...
- STC12C5A60S2笔记2(存储)
STC12C5A60S2单片机分为4个物理上独立的存储区域: 1. 程序flash存储器(60KB) 程序Flash存储器用以存储用户程序及数据.单片机复位后默认从0000H单元开始执行指令. 1) ...
- Spring AOP简述
使用面想对象(Object-Oriented Programming,OOP)包含一些弊端,当需要为多个不具有继承关系的对象引入公共行为时,例如日志,安全检测等.我们只有在每个对象中引入公共行为,这样 ...
- java提高篇(二)-----理解java的三大特性之继承
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...