js严格模式的要求

JavaScript的严格模式通过"use strict"启用,旨在提前发现并避免一些潜在的错误和有害行为。在严格模式下,变量必须先声明后使用,不允许变量重名,禁止删除变量,对象的只读属性和不可配置属性不能被修改或删除,不可扩展的对象不能添加属性,函数参数不能重名,修改命名参数不会反映到arguments中,eval和arguments不能作为标识符,同时禁止使用八进制表示法。
摘要由CSDN通过智能技术生成

js严格模式

可以在函数内部选择进行较为严格的全局和局部的错误条件检测,使用严格模式的好处是可以提早知道代码中存在的错误,及时补货一些可能导致编程错误的行为。

关键字(编译指示) 为一个不会赋给任何变量的字符串 “use strict”。这个关键字可以选择放在全局作用域上,来限制整个脚本。也可以只放在某个局部作用域中,限制局部脚本的。(例如:放在一个函数里面)

	function doSomething(){
		"use strict";
		//其他代码
	}

1书写变量的要求:

1.变量声明

	"use strict";
	a=10;
    console.log(a);//10

上面的两行代码从两个角度看:
非严格模式: 不会提示错误,即使没有写声明变量的关键字var,也不会提示错误,且此时“a”为全局变量。
严格模式: 会抛出错误信息“Uncaught ReferenceError: a is not defined”。
严格模式下,变量不允许重名,且要先定义再使用。

2.变量删除
非严格模式: 允许使用delete删除变量。
严格模式: 不允许删除变量,会抛出ReferenceError。
3.变量名:
严格模式: 不能使用implements、interface、let、package、private、protected、public、yield作为变量名。(引自js高级程序设计)

2 对象

严格模式下的要求:

  • 不能为只读属性赋值,会抛出TypeError错误。
  • 不可配置的属性使用delete操作符会抛出TypeError错误。
  • 不可扩展的对象添加属性会抛出TypeError错误。
  • 在使用对象字面量时,属性名必须唯一。
	//重名属性
	//非严格:没有错误提示,以第二个为准
	//严格:抛出语法错误
	var Person = {
        name:"早",
        name:"晚"
    }

3函数

1.函数参数重名:

//非严格模式下,没有错误,以第二个属性为准。
//严格模式下,抛出语法错误。
 function sum(num,num){
        var k=num+num;
        console.log(k);//30,非严格模式
    }
    sum(14,15);

2.修改命名参数的值

function showValue(value){
        value = "foo";
        alert(value);//非严格为“foo”,严格“foo”
        alert(arguments[0]);//非严格为“foo”,严格“Hi”
    }
    showValue("Hi");

非严格模式: 修改会反映到arguments中。
严格模式: 修改不会反映到arguments中。
3.函数名:
严格模式: 不能使用implements、interface、let、package、private、protected、public、yield作为变量名。(引自js高级程序设计)
4.严格模式下,只能在脚本的顶级和函数的内部声明函数。因此,当函数声明在判断语句中时会报错。

4.关于eval和arguments

W3School定义 eval():该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此不要为 eval() 函数传递 String 对象来作为参数。

function doSomething(){
        eval("var x=10");
        alert(x);//非严格模式下会显示10,严格模式下会抛出错误。
    }
    doSomething();

eval和arguments两者均不能作为表示符。

5.其他

严格模式下不允许使用八进制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值