首頁  >  文章  >  web前端  >  JavaScript 中的「(function () { }) ()」和「(function () { })()」在功能上相等嗎?

JavaScript 中的「(function () { }) ()」和「(function () { })()」在功能上相等嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 08:53:02856瀏覽

Are

「(function () { }) ()」和「(function () { })()」在 JavaScript 中功能相等嗎?

在 JavaScript 中,以下兩個程式碼區塊似乎產生相同的結果:

(function () {
    bar = 'bar';
    alert('foo');
})();

alert(bar);
(function () {
    bar = 'bar';
    alert('foo');
}());

alert(bar);

兩個程式碼區塊都顯示訊息“foo”,後面跟著“bar”。不過,這兩種程式碼結構有功能上的差別嗎?

回答

程式碼區塊是一樣的

一般情況下,「(function ( ) { }) ()" 和"(function ( ) { })()" 在JavaScript 中功能相同。它們都調用匿名函數並立即執行它。該函數初始化 bar 變數並警告訊息“foo”。

與其他語法的差異

但是,當在程式碼中加入其他語法時,可能會出現差異。

情況 1:函數建構子語法

考慮以下程式碼:

new (function () {
    this.prop = 4;
}) ().prop;

此程式碼建立函數類別的新實例並擷取新實例的 prop 屬性。它傳回值 4。

情況 2:命名空間語法

考慮以下程式碼:

new ( function() {
    return { Class: function() { } }; 
}() ).Class;

此程式碼呼叫 Class 屬性上的 new 運算子。由於嵌套的括號,該函數被正常調用,其返回值用於創建一個新實例。

以上是JavaScript 中的「(function () { }) ()」和「(function () { })()」在功能上相等嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn