ES6 —— 严格模式

本文详细介绍了JavaScript的严格模式,包括如何开启严格模式,以及在严格模式下代码执行的变化。严格模式禁止未声明的变量赋值,不允许删除已声明变量,函数的this在全局作用域中变为undefined,构造函数不加new会报错,同时强调了函数参数不能重名和必须在顶层声明。严格模式有助于提升代码质量和效率,为未来版本的JavaScript做好准备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、什么是严格模式?
  1. 在严格的条件下允许 JS 代码。
  2. 消除了 JavaScript 语法的一些不合理、不严谨之处,减少了一些怪异行为。
  3. 提高编译器效率,增加运行速度。
  4. 禁用了在 ECMAScript 的未来版本中可能会定义的一些语法,为未来新版本的 JavaScript 做好铺垫。比如一些保留字,如:class、enum、export、extends、import、super不能做变量名。
二、开启严格模式

严格模式可以应用到整个脚本或个别函数中。因此在使用时,我们可以将严格模式分 为脚本开启严格模式为函数开启严格模式 两种情况。

  1. 为脚本开启严格模式,需要在所有语句之前放一个特定语句 "use strict"; 或者 'use strict';
	'use strict';
  1. 为函数开启严格模式
	// 此时只是给fn函数开启严格模式
    function fn(){
        'use strict'
        // 下面的代码按照严格模式执行
    }
    function fun(){
        // 里面还是按照普通模式执行
    }
三、严格模式中的变化
  1. 在正常模式下,如果一个变量没有声明就赋值,默认是全局变量。严格模式下禁止这种写法,变量必须先声明,再使用。
	'use strict'
    num = 1

在这里插入图片描述

  1. 不能随意删除已经声明好的变量
	'use strict'
    let num = 8
    delete num

在这里插入图片描述

  1. 在严格模式下全局作用域中函数的 this 是 undefined。
	'use strict'
    function fn(){
        console.log(this)
    }
    fn() //undefined
  1. 以前构造函数不加 new 也可以调用,当普通函数,this 指向全局对象。
	function Star(){
        this.sex = '男'
    }
    Star()
    console.log(window.sex) //男
  1. 严格模式下,如果构造函数不加 new 调用,this 指向的是 undefined,如果给它赋值,会报错。
	'use strict'
    function Star(){
        this.sex = '男'
    }
    Star()
    console.log(window.sex)

在这里插入图片描述
6. new 实例化的构造函数指向创建的对象实例。

	'use strict'
    function Star(){
        this.sex = '男'
    }
    let a = new Star()
    console.log(a.sex) //sex
  1. 定时器 this 还是指向 window
	'use strict'
    setTimeout(function(){
        console.log(this)
    }, 100)

在这里插入图片描述

  1. 事件、对象还是指向调用者。
四、严格模式中函数的变化
  1. 函数不能有重名的参数。
	//非严格模式下 后面的值覆盖了前面的,但能执行
	function fn(a, a){
        console.log(a + a)
    }
    fn(1, 2) //4
    //严格模式下 函数不能有重名的参数
    'use strict'
    function fn(a, a){
        console.log(a + a)
    }
    fn(1, 2)

在这里插入图片描述

  1. 函数必须声明在顶层。因为块级作用域,不允许在非函数的代码块内声明函数。(不允许在 if判断for循环 中声明函数)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值