在 JavaScript 中,以下兩個程式碼區塊似乎產生相同的結果:
(function () { bar = 'bar'; alert('foo'); })(); alert(bar);
(function () { bar = 'bar'; alert('foo'); }()); alert(bar);
兩個程式碼區塊都顯示訊息“foo”,後面跟著“bar”。不過,這兩種程式碼結構有功能上的差別嗎?
程式碼區塊是一樣的
一般情況下,「(function ( ) { }) ()" 和"(function ( ) { })()" 在JavaScript 中功能相同。它們都調用匿名函數並立即執行它。該函數初始化 bar 變數並警告訊息“foo”。
但是,當在程式碼中加入其他語法時,可能會出現差異。
考慮以下程式碼:
new (function () { this.prop = 4; }) ().prop;
此程式碼建立函數類別的新實例並擷取新實例的 prop 屬性。它傳回值 4。
考慮以下程式碼:
new ( function() { return { Class: function() { } }; }() ).Class;
此程式碼呼叫 Class 屬性上的 new 運算子。由於嵌套的括號,該函數被正常調用,其返回值用於創建一個新實例。
以上是JavaScript 中的「(function () { }) ()」和「(function () { })()」在功能上相等嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!