this指向面試題兩則


面試題1

let len = 10;
function fn() {
	console.info(this.len)
}
fn(); // A
let Person = {
	len: 5,
	say: function() {
		fn(); // B
		arguments[0](); // C
	}
}
Person.say(fn);

三處的輸出結果均為 undefined

A 處執行結果

  • fnthis 指向為 window
  • let 聲明的變量不掛載在 window 對象上
  • 輸出結果為:window.len = undefined;

B處的執行結果

  • say 函數的 this 指向為 Person
  • fnthis 指向依然為 window
  • 輸出結果依然為:window.len = undefined

C 處的執行結果

  • arguments[0]() 相當於 arguments.fn()
  • fnthis 指向為 arguments
  • 輸出結果為:arguments.len = undefined

面試題2

var length = 10;
function fn() {
	console.info(this.length)
}
fn();  // A
let Person = {
	len: 5,
	say: function() {
		fn();  // B
		arguments[0]();  // C
	}
}
Person.say(fn);

分別輸出 10, 10, 1

  • A , B 處直接輸出 掛載到 window 對象下的 10
  • C 處輸出 arguments.length = 1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM