严格模式:由ECMA-262规范定义的JavaScript标准,对javascrip的限制更强。

(非严格的模式,被称为“马虎模式/稀松模式/懒散模式”。)
一、严格模式的使用
严格模式可以在脚本或函数级别实现。(即全局和局部模式)
1.全局
在js文件的最前面添加 "use strict"
2.局部
在函数内部添加 "use strict",如下
function fn() {
"use strict";
//some code
}
二、严格模式和非严格模式的对比
1.严格模式下,无法删除(delete)变量(delete是不合格的标识符))。非严格模式下会删除失败返回false
"use strict"; var x; delete x;//报错Delete of an unqualified identifier in strict mode.(不合格的标识符)
2.严格模式中,函数形参存在同名的,抛出错误; 非严格模式不会
严格模式下
function fn(a,a){
"use strict";
result=a+a;
console.log(result);
}
fn(2,4);//Duplicate parameter name not allowed in this context(重复的参数名称在此上下文中不允许)
非严格模式下
function fn1(a,a){
"use strict";
result=a+a;
console.log(result);
}
fn1(2,4);//结果为8
3.严格模式不允许八进制整数直接量(如下)。非严格模式下不会报错。
"use strict" var x=089; console.log(x);//报错:Decimals with leading zeros are not allowed in strict mode.
4.严格模式中,arguments对象是传入函数内实参列表的静态副本(即不再追踪参数的变化);非严格模式下,arguments对象里的元素和对应的实参是指向同一个值的引用。
严格模式下
fn(5);
function fn(a){
"use strict";
a = 42;
// return a==arguments[0];//返回false
console.log(a);//结果为42
console.log(arguments[0]);//结果为5,严格模式下arguments[0]表示这个调用方法的第一个参数 (不再追踪 参数的变化,在函数内部,参数a被重新赋值为42,但arguments[0]仍然为5.)
}
非严格模式下
fn(5);
function fn(a){
a = 42;
// return a==arguments[0];//返回true
console.log(a);//结果为42
console.log(arguments[0]);//结果为42(追踪参数变化)
}
5.严格模式中 eval和arguments当做关键字,它们不能被赋值和用作变量声明
"use strict"; var eval=3;//报错:Unexpected eval or arguments in strict mode var argument=6;//同样报错
6.严格模式会限制对调用栈的检测能力,访问arguments.callee,arguments.callee.caller会抛出异常
严格模式下:
"use strict";
function fn(n){
if(n==0){
return 1;
}else{
return n*arguments.callee(n-1);
}
}
console.log(fn(5));//报错
非严格模式下:
function fn(n){//阶乘
if(n==0){
return 1;
}else{
return n*arguments.callee(n-1);
}
}
console.log(fn(5));//正常120
caller:在一个函数调用另一个函数时,被调用函数会自动生成一个caller属性,指向调用它的函数对象。如果该函数当前未被调用,或并非被其他函数调用,
则caller为null。如下:
严格模式下:
"use strict"
function fn1() {
var n1= fn1.caller;
console.log(n1);
}
function fn2() {
fn1();
}
fn2();//报错
非严格模式下:
function fn1() {
var n1= fn1.caller;//此例中caller指向调用它的函数(fn2)
console.log(n1);
}
function fn2() {
fn1();
}
fn2();// 结果打印出:function fn2(){ fn1( ) };
7.严格模式变量必须先声明,直接给变量赋值,不会隐式创建全局变量,不能用with。
严格模式下
"use strict";
with(obj){
x;
}//报错:Strict mode code may not include a with statement
解释:道运行脚本时,首先是编译,然后再执行。显然在编译的时候,所以就不能在编译时确定with语句块中的变量到底归属哪个对象。[with语句块中的变量是(cl)的属性
还是上一层变量作用域链中的变量。]。只能在执行时才能确定(c1)是Clothes的一个实例。这与严格模式有编译时就检查变量是否定义冲突,所以严格模式不会with语句的使用。
扩展:with语句的使用(用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。)
with(object instance)
{
//代码块
}
eg:function Clothes(){
this.color="red";
this.size="m";
this.price="cheap";
}
var c1=new Clothes();
with(c1){
var str="颜色:"+color+",尺寸:"+size+",价格:"+price;
document.write(str);
}//结果(颜色:red,尺寸:m,价格:cheap)
严格模式中 call apply传入null undefined保持原样不被转换为window
总结
以上所述是小编给大家介绍的Javascript 严格模式use strict详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言小编会及时回复大家的!
# js
# use
# strict
# 严格模式
# JavaScript严格模式use strict的介绍
# JavaScript 严格模式(use strict)用法实例分析
# JavaScript 中实现 use strict的方法及优势
# 模式下
# 报错
# 不合格
# 不能用
# 抛出
# 小编
# 第一个
# 在此
# 就不
# 能在
# 给大家
# 然后再
# 被称为
# 时就
# 不被
# 更强
# 转换为
# 这与
# 时才
# 所述
相关文章:
香港网站服务器数量如何影响SEO优化效果?
网站制作的步骤包括,正确网址格式怎么写?
建站之星如何优化SEO以实现高效排名?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何用AWS免费套餐快速搭建高效网站?
成都网站制作报价公司,成都工业用气开户费用?
如何在阿里云完成域名注册与建站?
如何通过智能用户系统一键生成高效建站方案?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
如何通过.red域名打造高辨识度品牌网站?
如何解决ASP生成WAP建站中文乱码问题?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
如何通过虚拟主机快速搭建个人网站?
网页设计与网站制作内容,怎样注册网站?
如何在香港免费服务器上快速搭建网站?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
建站之星安装后如何配置SEO及设计样式?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
广州美橙建站如何快速搭建多端合一网站?
如何用y主机助手快速搭建网站?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
C#如何在一个XML文件中查找并替换文本内容
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
,柠檬视频怎样兑换vip?
如何通过wdcp面板快速创建网站?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
建站主机与虚拟主机有何区别?如何选择最优方案?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
如何快速搭建高效WAP手机网站吸引移动用户?
如何设置并定期更换建站之星安全管理员密码?
网站制作公司,橙子建站是合法的吗?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
南京网站制作费用,南京远驱官方网站?
建站主机服务器选购指南:轻量应用与VPS配置解析
宝塔建站无法访问?如何排查配置与端口问题?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
如何快速上传自定义模板至建站之星?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
临沂网站制作企业,临沂第三中学官方网站?
已有域名和空间如何搭建网站?
,在苏州找工作,上哪个网站比较好?
如何快速搭建高效简练网站?
建站OpenVZ教程与优化策略:配置指南与性能提升
c++ stringstream用法详解_c++字符串与数字转换利器
如何通过二级域名建站提升品牌影响力?
建站之星备案是否影响网站上线时间?
魔方云NAT建站如何实现端口转发?
*请认真填写需求信息,我们会在24小时内与您取得联系。