this在什么时候为undefined
生活随笔
收集整理的這篇文章主要介紹了
this在什么时候为undefined
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
this 為undefined的情況
首先我們要知道
在嚴(yán)格模式下,獨(dú)立function中的this指向?yàn)閡ndefined;非嚴(yán)格模式指向?yàn)槿肿饔糜颉?/p>
而在es6的類當(dāng)中:
首先明確的是類中所有定義的方法,在瀏覽器運(yùn)行時(shí)候全部都加上了 user strict,何為user strict,就是瀏覽器的嚴(yán)格模式。那第二個(gè)問題就來了,為什么在嚴(yán)格模式下就為undefined。嚴(yán)格模式下無法再意外創(chuàng)建全局變量記住這點(diǎn)就可以了
'use strict'function a() {b()function b() {console.log(this);}}a()//undefined如果不使用'use strict',打印的就是指向window
看看類
class Person {constructor(name) {this.name = namethis.init()this.geter()}init() {console.log(this);}geter() {function success() {console.log(this);}success()/* 這里是在沒有嚴(yán)格模式的情況下是window來調(diào)用,但嚴(yán)格模式下沒有window,所以是undefined */}}let jack = new Person('jack')另外,嚴(yán)格模式對箭頭函數(shù)沒有效果
由于這來自于周圍的詞法上下文,因此與此相關(guān)的嚴(yán)格模式規(guī)則將被忽略。詞法的意思是this引用一個(gè)詞法封閉函數(shù)的this值。,恢復(fù)到以前的上下文規(guī)則
<html> <script type="text/javascript"> "use strict"; var foo = () => {console.log(this) }; foo(); //Window </script> </html>總結(jié)
以上是生活随笔為你收集整理的this在什么时候为undefined的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 定时程序_python每天
- 下一篇: Basic Test Knowledge