如何确认this的值

技术·面试 · 2023-09-05
如何确认this的值

JavaScript中的this
在绝大多数情况下,函数的调用方式决定了 this 的值(运行时绑定)。this 不能在执行期间被赋值,并且在每次函数被调用时 this 的值也可能会不同。
如何确认this的值:
在非严格模式下,总是指向一个对象,在严格模式下可以是任意值。
1.全局执行环境中,指向全局对象(非严格模式、严格模式)
2.函数内部,取决于函数被调用的方式
1.直接调用的this值:

a.非严格模式:全局对象(window)
b.严格模式:undefined

2.对象方法调用的this值:调用者

    /**
     * 如何确认this的值
      * 1.全局执行环境
      *   严格模式,非严格模式:全局对象(window)
      * 2.函数内部
      *  2.1 直接调用
      *   严格模式下:undefined
      *   非严格模式:全局对象(window)
      *  2.2 对象方法调用
      *   严格模式,非严格模式:调用者
      * 3.开启严格模式
      *   脚本开启: 'use strict'
      *   函数内部开启:'use strict'
      *   注意:'use strict'写在代码顶端
     * */
 
    // ------------- 1.全局执行环境 -------------
    //  严格模式,非严格模式 全局对象(window)
    // 'use strict'
    // console.log(this)
 
    // ------------- 2.函数内部 -------------
    // 2.1 直接调用-非严格模式
    // function func() {
    //   console.log(this) // window
    // }
    // func()
    // 2.1 直接调用-严格模式
    // function func() {
    //   'use strict'
    //   console.log(this) // undefined
    // }
    // func()
 
    // 2.2 对象方法调用
    const food = {
      name: '猪脚饭',
      eat() {
        'use strict'
        console.log(this)
      }
    }
    // 非严格模式,严格模式
    food.eat() // 调用者
javascript
  1. 云晓晨 2023-09-07

    最近要学java了

    1. 铅笔Naruto (作者)  2023-09-08
      @云晓晨

      嗯啊,我新入职的这家公司,后端全是java,还是很有市场的

Theme Jasmine by Kent Liao