前言:
目前咱们对“js条件and”都比较关怀,你们都想要剖析一些“js条件and”的相关文章。那么小编在网络上搜集了一些有关“js条件and””的相关内容,希望大家能喜欢,看官们快快来学习一下吧!JS严格模式算是老生常谈的一个问题了,但这也是JS基础之中比较重要的一个部分,因为他起着承上启下的作用,下面我们一起来看看吧。
一、严格模式介绍
除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。
设立"严格模式"的目的,主要有以下几个:
消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;消除代码运行的一些不安全之处,保证代码运行的安全;提高编译器效率,增加运行速度;为未来新版本的Javascript做好铺垫。
"严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它。
另一方面,同样的代码,在"严格模式"中,可能会有不一样的运行结果;一些在"正常模式"下可以运行的语句,在"严格模式"下将不能运行。
二、严格模式使用
1、为整个脚本开启严格模式
为整个脚本文件开启严格模式,需要在所有语句之前放一个特定语句 "use strict"; (或 'use strict';)
// 整个脚本都开启严格模式的语法"use strict";var v = "Hi! I'm a strict mode script!";
2、为函数开启严格模式
要给某个函数开启严格模式,得把 "use strict"; (或 'use strict'; )声明一字不漏地放在函数体所有语句之前。
function strict(){ // 函数级别严格模式语法 'use strict'; function nested() { return "And so am I!"; } return "Hi! I'm a strict mode function! " + nested();}function notStrict() { return "I'm not strict."; }三、严格模式的改变
1、普通变量
严格模式下,变量都必须先用var命令声明,然后再使用。严格模式下对不可写属性赋值,将报错。严格模式下对只读属性赋值,将报错。严格模式下对禁止扩展的对象添加新属性,将报错。严格模式下删除一个不可删除的属性,将报错。严格模式下删除声明变量,将报错。严格模式下对八进制语法:var n = 023和var s = "\047"将报错。
2、重名问题
严格模式下函数不能有重名的参数
//严格模式下函数不能有重名的参数//正常模式下,如果函数有多个重名的参数,可以用arguments[i]读取。function demo6(a,a,b){return ;} //报错
3、禁止this关键字指向全局对象
严格模式下,全局作用域的函数中的this不再指向全局而是undefined。
如果使用构造函数时,如果忘了加new,this不再指向全局对象,而是undefined报错。
4、静态绑定
禁止使用with语句eval语句本身就是一个作用域,它所生成的变量只能用于eval内部。
5、arguments对象的限制
不允许对arguments赋值arguments不再追踪参数的变化禁止使用arguments.callee
6、禁止在函数内部遍历调用栈
function demo12(){ demo12.caller; // 报错 demo12.arguments; // 报错}demo12();
7、保留字
使用保留字:implements, interface, let, package, private, protected, public, static,和yield作为变量名或函数名会报错。
总结
以上就是JS严格模式的大致内容,可能不是很全面,如果大伙有发现不对的地方,欢迎指正批评。
标签: #js条件and