全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Javascript 严格模式use strict详解

严格模式:由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的方法及优势  # 模式下  # 报错  # 不合格  # 不能用  # 抛出  # 小编  # 第一个  # 在此  # 就不  # 能在  # 给大家  # 然后再  # 被称为  # 时就  # 不被  # 更强  # 转换为  # 这与  # 时才  # 所述 


相关文章: 如何通过虚拟主机快速搭建个人网站?  网站制作员失业,怎样查看自己网站的注册者?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  建站之星×万网:智能建站系统+自助建站平台一键生成  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何用VPS主机快速搭建个人网站?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  如何通过PHP快速构建高效问答网站功能?  制作网站的公司有哪些,做一个公司网站要多少钱?  如何通过FTP空间快速搭建安全高效网站?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  宝塔新建站点为何无法访问?如何排查?  网站企业制作流程,用什么语言做企业网站比较好?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  如何在景安服务器上快速搭建个人网站?  如何在腾讯云免费申请建站?  如何在七牛云存储上搭建网站并设置自定义域名?  如何在自有机房高效搭建专业网站?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  如何在IIS7中新建站点?详细步骤解析  成都响应式网站开发,dw怎么把手机适应页面变成网页?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  制作网站外包平台,自动化接单网站有哪些?  自助网站制作软件,个人如何自助建网站?  北京专业网站制作设计师招聘,北京白云观官方网站?  如何在阿里云香港服务器快速搭建网站?  如何基于云服务器快速搭建网站及云盘系统?  贸易公司网站制作流程,出口贸易网站设计怎么做?  ,怎么在广州志愿者网站注册?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  临沂网站制作公司有哪些,临沂第四中学官网?  潮流网站制作头像软件下载,适合母子的网名有哪些?  如何通过FTP服务器快速搭建网站?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  网站制作难吗安全吗,做一个网站需要多久时间?  建站之星CMS五站合一模板配置与SEO优化指南  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  Swift中swift中的switch 语句  购物网站制作公司有哪些,哪个购物网站比较好?  已有域名和空间如何快速搭建网站?  制作销售网站教学视频,销售网站有哪些?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  红河网站制作公司,红河事业单位身份证如何上传?  如何高效配置香港服务器实现快速建站?  广州美橙建站如何快速搭建多端合一网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。