更加严格的语法,叫做严格模式。
"use strict";
【注】在哪个作用域下,写上这句话,哪个作用域下的语法,就必须采用严格模式。
【注】一般情况下,大家不要将严格模式写在全局的位置。
function show(){ "use strict"; var a = 10; } show(); alert(a);
使用严格模式以后,有哪些变化
1、声明变量必须使用var
2、函数内部不允许参数重名
3、arguments对象不允许被动态改变,传参的时候值是多少,arguments里面永远存储的是多少。
4、新增保留字:implements, interface, let, package, private, protected, public, static, yield。
function show(num, num, num2){//非严格模式下形参重名并不会报错 alert(num + ", " + num2);//20, 30 } show(10, 20, 30);
"use strict"; function show(num, num1, num2){//严格模式下形参重名会报错 alert(num + ", " + num2);//10, 30 } show(10, 20, 30);
function show(a){ a = 20; alert(a + ", " + arguments[0]); } show(10); //20, 20 非严格模式修改了arguments的值 function show(a){ "use strict"; a = 20; alert(a + ", " + arguments[0]); } show(10); //20, 10 严格模式不会修改arguments的值。
"use strict"; function show(implements){ var interface = 10; alert(implements); } show(20);//写了"use strict" 报错implements为关键字