那些逐步掌握的JavaScript('use strict')

早已习惯在use strict模式下编写JavaScript代码,也知道它的一些约束,特性。今日在看视频时竟收获了几个原来不曾知道的特性。

 

    首先科普下JavaScript的严格模式。

慕课网《JavaScript深入浅出》作者写道
严格模式是一种特殊的执行模式,
它修复了部分语言上的不足,
提供更强的错误检查,并增强安全性。

   

严格模式可使用在某个函数内部,也可使用在整个脚本中。开启严格模式的语法为‘use strict’。

  

function foo(){
  'use strict';
}

 

 

'use strict';
function foo(){
}

 介绍就到这,如还未使用的伙伴可自行搜索:JavaScript  严格模式

 

一.use strict前不可写var b;

我知道在定义'use strict'前仍可写代码(即无需写在代码的第一行),但不知道在'use strict'前输入

var a;

类似代码,则不行。

 

二.use strict下,不允许有8进制数。

function foo(){
'use strict';
console.log(0321);
}

 以上代码,则会报错。Uncaught SyntaxError: Octal literals are not allowed in strict mode.

 

三.use strict下,eval、arguments成了关键字,不能作为变量函数名。

function f(){
  'use strict';
  function eval(){
   console.log(eval);
  }
}

 以上代码,依旧会报错。Uncaught SyntaxError: Unexpected eval or arguments in strict mode

 

四.use strict下,eval变成了独立作用域

!function(){
 "use strict";
  eval('var evalVal=2;’);  
   console.log(typeof evalVal);   //number
}();

 在一般模式下,在eval所在的函数内可得到evalVal,则会打印number;在 严格模式下eval中的代码会在独立作用域中执行,所以在外面evalVal则拿不到。即为undefined。

 

 

以上便是今日通过慕课网视频中学习而得。其外严格模式下还有很多限制,约束特性。如Bosn老师在PPT中写道的:

Bosn老师的PPT内容 写道
不允许用with

所有变量必须声明, 赋值给为声明的变量报错,而不是隐式创建全局变量。

eval中的代码不能创建eval所在作用域下的变量、函数。而是为eval单独创建一个作用域,并在eval返回时丢弃。

函数中得特殊对象arguments是静态副本,而不像非严格模式那样,修改arguments或修改参数变量会相互影响。

删除configurable=false的属性时报错,而不是忽略

禁止八进制字面量,如010 (八进制的8)

eval, arguments变为关键字,不可作为变量名、函数名等

一般函数调用时(不是对象的方法调用,也不使用apply/call/bind等修改this)this指向null,而不是全局对象。

若使用apply/call,当传入null或undefined时,this将指向null或undefined,而不是全局对象。

试图修改不可写属性(writable=false),在不可扩展的对象上添加属性时报TypeError,而不是忽略。

arguments.caller, arguments.callee被禁用

 其中一些早已用熟,此处便未贴上代码解释。

 

 

  最后,严格模式的向上兼容的。 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值