<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
代碼比較多定義了全局的倒置我其他地方用參數的時候,怎麼設置都不行,就是受到全局的影響了。
都是在建議傳參,但有沒有發現你這段程式碼傳參或全局,都是一樣的結果,都會有且只有兩個 nickNames
和 socket
全域變數。 (只是針對當前程式碼)
所以我反而覺得,這裡不是全域變數個數的問題,而成了是否需要將函數函數進行良好封裝的問題。