2014-12-08 30 views

回答

2

第二種形式傳遞的this值到IIFE內部IIFE所以this將具有相同的值,它有IIFE外部。在很多情況下,這並沒有什麼區別,但是如果IIFE在this被設置爲一些有意義的值的範圍內,那麼第二種形式將在IIFE內保留該值this

如果this在外部範圍是全局對象,你是不是嚴格的運行模式,那麼第二個形式並沒有真正改變任何東西作爲this仍將是IIFE內的全局對象。

但是,如果是this在嚴格模式或小於所述全局對象時不嚴格模式,則第二形式將的this值延伸到外殼之外的任何有意義的值的任何有意義的值。

在你指出的例子中,我的猜測是第二種形式只是被用作一種常見的設計模式,並不是因爲在這種特殊情況下確實有一個原因。實際上,如果你看看你指出的代碼示例,它甚至不會在IIFE的頂層使用this的值,所以在這個特定的例子中它絕對是多餘的。

+0

在什麼情況下,* this *未設置爲「有意義的值」? – RobG 2014-12-08 00:51:10

+0

@RobG - 在嚴格模式下,'this'通常是'undefined'(例如在任何正常的函數調用中)。 – jfriend00 2014-12-08 01:41:49