this的指向为什么是undefined
生活随笔
收集整理的這篇文章主要介紹了
this的指向为什么是undefined
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
不知道你在開發中是否遇到過this的指向為undefined的問題呢
例如:
class Doge { constructor (name,age){this.name = name this.age = age } cry(){//console.log(this) } const d = new Dog('旺財','8') const x = d.cry() x() //undefined為什么打印為undefined 呢,首先明確的是類中所有定義的方法,在瀏覽器運行時候全部都加上了 user strict,何為user strict,就是瀏覽器的嚴格模式。那第二個問題就來了,為什么在嚴格模式下就為undefined。嚴格模式下無法再意外創建全局變量記住這點就可以了。
<html> <script type="text/javascript"> "use strict"; var foo = function foo(){console.log(this) }; foo();//undefined </script> </html>二、另外嚴格模式對箭頭函數沒有效果
由于這來自于周圍的詞法上下文,因此與此相關的嚴格模式規則將被忽略。詞法的意思是this引用一個詞法封閉函數的this值。
<html> <script type="text/javascript"> "use strict"; var foo = () => {console.log(this) }; foo(); //Window </script> </html>嚴格模式
總結
以上是生活随笔為你收集整理的this的指向为什么是undefined的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【笔记】wincap收集并统计网络流量
- 下一篇: SpringBoot数据库连接池常用配置