乙個例子看懂js函式作用域

2021-08-21 11:16:20 字數 781 閱讀 9375

var myobject = ());

}};myobject.func();

程式的輸出是什麼?

依次輸出bar bar undefined bar

理解關鍵:方法/函式是由誰(物件) 

呼叫

的,方法/函式內部的這就是指向誰(該物件);

注意:被誰

呼叫,

不是處於誰的作用域,即使在作用域

1,func是由myobject呼叫的,這個指向myobject。

2,自我指向myobject的,

相當於 

myobject的的這個的副本。

3,這個立即執行匿名函式表示式(iife)是由視窗呼叫的,這個指向視窗。

4,iife的作用域處於myobject.func的作用域中,本作用域找不到自變數,沿著作用域鏈向上查詢自變數,找到了指向myobject物件的自我。

按順序依次分析:

1.第乙個this.foo輸出吧,因為當前該指向物件myobject的。

2.第二個self.foo輸出吧,因為自己是這個的副本,同指向myobject的物件。

3.第三個this.foo輸出未定義,因為這個iife(立即執行函式表示式)中的這個指向視窗。

4.第四個self.foo輸出吧,因為這個匿名函式所處的上下文中沒有自我,所以通過作用域鏈向上查詢,從包含它的父函式中找到了指向myobject的物件的自我。this是不向上找的。

JSONP跨域的乙個例子

最近的專案碰到了跨域的問題。之前有關於跨域一直研究得不是很深刻。剛好借這次機會,好好看了看。有看到jsonp的方法,例子如下 test.html 這裡只是做測試,以後可以使用php或者jsp 動態生成 這裡就不多說了 cb ps第二個頁面 html js function cb result fun...

乙個關於JS作用域鏈的例子

乙個關於js作用域鏈的例子,如下 1 var x 10 function foo function 執行結果 2 var x 10 function foo function 執行結果 簡單分析 兩段 唯一的區別是第6行,即匿名函式中對變數x的賦值。1,var x 20,2,x 20。在函式建立時,...

LineDDA的乙個例子

unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,extctrls,stdctrls,buttons type tfmmain class tform ...