JavaScript严格模式说明

目录

JavaScript严格模式说明

严格模式注意点:

1.必须使用var关键字声明变量

2.在严格模式下,使用delete删除全局变量会直接报错

3.对象不能存在同名的属性

4.函数的形参必须唯一(不能出现同名的参数)

5.禁止使用with语句

6.不能使用eval和arguments作用标识符

7.禁止使用八进制

8.在if语句中不能声明函数

9.不能使用callee和caller,一个指向函数自身,一个指向调用函数的函数

10.在严格模式下,修正函数内部this的指向.函数的内部this始终是你指定的值

11.在严格模式下,arguments的使用有区别

严格模式的书写格式:双引号和单引号都可以

严格模式的作用域


JavaScript严格模式说明

在JS开发中,有严格模式和非严格模式,默认是非严格模式
严格模式:在严格模式下会做更加严格的语法检查,有些在非严格模式下可以使用的代码在严格模式会直接报错或者抛出异常.

开启严格模式:"use strict"

这种语法做了向后兼容处理,支持严格模式的引擎会开启严格模式,不支持会作为一个普通的字符串处理

<script>
    "use strict"; //  开启严格模式


</script>

严格模式注意点:

1.必须使用var关键字声明变量

<script>   
    "use strict";
    // 1.在非严格模式下,未使用var声明的变量是全局变量,会自动成为 window的属性
    // 在严格模式下,必需要使用var声明变量.
    a = 10;
    console.log(a);
    //没使用的全部报错
</script>

2.在严格模式下,使用delete删除全局变量会直接报错

<script>
"use strict";
var a = 10;
console.log(delete a); // false->删除失败 (静默错误)
console.log(a);
</script>

3.对象不能存在同名的属性

<script>
"use strict";
    var obj = {
    name : 'zs',
    age : 20,
    name : 'ls'
  }
 console.log(obj.name);//在非严格模式中,属性同名,后属性会覆盖前属性
</script>

4.函数的形参必须唯一(不能出现同名的参数)

<script>
"use strict";
function fun(a,b,a) {
   console.log(a + b + a);
}
   fun(1,2,3);
</script>

5.禁止使用with语句

<script>
"use strict";
var obj = {
        name : 'zs'
    }
    with(obj){
        name = 'ls';
    }
    console.log(obj.name);
</script>

6.不能使用eval和arguments作用标识符

<script>
"use strict";
var eval = 15;
    console.log(eval);
    var arguments = 20;
    console.log(arguments);
</script>

7.禁止使用八进制

<script>
"use strict";
var a = 020;
    var b = 017;
    var c = 028;
    console.log(b);
</script>

8.在if语句中不能声明函数

<script>
"use strict";
if(true){
        function demo() {
            console.log('demo');
        }
    }
    demo();
</script>

9.不能使用callee和caller,一个指向函数自身,一个指向调用函数的函数

<script>
"use strict";
function f1() {
        console.log(arguments.callee); // f1
        console.log(f1.caller); // f2
   }

    function f2() {
        f1();
    }

    f2();
</script>

10.在严格模式下,修正函数内部this的指向.函数的内部this始终是你指定的值

 <script>
"use strict";
var obj = {
        name : '小明',
        log : function () {
            console.log(this);
        }
    }

    obj.log();// this-->obj
    var log =  obj.log;
    log(); // this->window | undefined
    obj.log.call(null); // null
</script>

11.在严格模式下,arguments的使用有区别

<script>
"use strict";
 // 在非严格模式下,形参和arguments共享同一份数据
 // 在严格模式下,形参和arguments是独立的
    function test(a) {
        console.log(a); // 10
        a = 20;
        console.log(a); // 20
        console.log(arguments[0]); // 10

    }

    var b = 10;
    test(b);
</script>

严格模式的书写格式:双引号和单引号都可以

  1. 双引号和单引号都可以
  2. 分号可以省略
  3. 都是小写,并且只有10个字符
<script>
//    "use strict"; // 正确
//    "Use Strict"; // 错误
//    "Use strict"; // 错误
//    "use Strict"; // 错误
//    "use strict "; // 错误
//    "use  strict"; // 错误
//    "usestrict"; // 错误
//    'use strict'; // 正确
//    "use strict" // 正确
</script>

严格模式的作用域

1."use strict"要写在当前作用域的顶端
           2.
             script标签的顶部:对当前的整一个标签内有效果
             函数的顶部 :对当前这个函数内部有效果

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值