首頁  >  文章  >  後端開發  >  關於javascript的參數使用方式

關於javascript的參數使用方式

WBOY
WBOY原創
2016-08-08 09:06:42920瀏覽

<code>var nickNames = {};

handleMessageBroadcasting = function(socket, nickNames){
    socket.on('message', function(message){
        socket.broadcast.to(message.room).emit('message', {
            text: nickNames[socket.id] + ': ' + message.text
        });
    });
};

handleMessageBroadcasting(socket, nickNames);

</code>

上面handleMessageBroadcasting函數內部用到了nickNames,我是將nickNames當參數傳入再使用呢?還是直接當成全域變數來使用好呢?為什麼?

回覆內容:

<code>var nickNames = {};

handleMessageBroadcasting = function(socket, nickNames){
    socket.on('message', function(message){
        socket.broadcast.to(message.room).emit('message', {
            text: nickNames[socket.id] + ': ' + message.text
        });
    });
};

handleMessageBroadcasting(socket, nickNames);

</code>

上面handleMessageBroadcasting函數內部用到了nickNames,我是將nickNames當參數傳入再使用呢?還是直接當成全域變數來使用好呢?為什麼?

傳參,可以降低程式碼耦合度

程式設計裡最禁忌的就是全域變數了吧,全域變數越少越好,就算項目規模比較小,不妨養成這個好習慣

建議是傳參,全域變數可能會污染全域環境

能不用全域變數盡量不用

樓上幾位說的很對。還是傳參比較好,特別說明一下我對經歷,因為當時寫對js代碼比較多定義了全局的倒置我其他地方用參數的時候,怎麼設置都不行,就是受到全局的影響了。

都是在建議傳參,但有沒有發現你這段程式碼傳參或全局,都是一樣的結果,都會有且只有兩個 nickNamessocket 全域變數。 (只是針對當前程式碼)

所以我反而覺得,這裡不是全域變數個數的問題,而成了是否需要將函數函數進行良好封裝的問題。

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