大部分 JavaScript 学习者在学习this
概念时通常觉得一头雾水,许多人觉得是 JavaScript 中最复杂的概念之一,然而this
值是 JavaScript 面试经典题,搞懂 this 值也是战胜面试的第一步。本篇文章会整理出来 this
值的 5 种判断方式,让读者在面试时能轻易掌握这些概念。
在 JavaScript 中,this
的值是动态的,通常会由被呼叫的函式来决定。所以,影响 this
的值不是宣告的时机,关键在于在哪里被调用。
this 值 5 种判断方式
1. 函式调用
当一个函式不是属于一个物件中的方法时,直接作为函式来调用时,this
会指向全局物件,在浏览器中,默认为 Window
。但有一点要注意的是,如果是在严格模式下,this
为 undefined
。
如下代码范例,因为是一般函式调用,this
会是指向 Window
,所以第一个输出结果是 Window
。而因为在全域范围中用 var
定义 name
变数,因此, name
变数也会绑定到 Window
物件上,第二个输出结果也等同于 window.name
的值。 (备注,如果是用 let
定义,并不会绑定在 Window
物件上。)
var name =