[問題] module pattern的小疑問

看板Ajax作者 (葛蘭特希爾)時間12年前 (2013/04/10 10:33), 編輯推噓6(608)
留言14則, 4人參與, 最新討論串1/1
小弟剛入門,還在學習JS 關於MODULE PATTERN有些疑問: -- var testModule = function(){ //private variables and methods var privateNum = 0; var privateMethod = function(){ return false; }; //public variables and methods return{ getPrivateNum: function(){ return privateNum; }, setPrivateNum: function(){ return privateNum++; }, getPrivateMethod: function(){ return privateMethod(); } }; }(); -- var testModule = (function(){ //private variables and methods var privateNum = 0; var privateMethod = function(){ return false; }; //public variables and methods return{ getPrivateNum: function(){ return privateNum; }, setPrivateNum: function(){ return privateNum++; }, getPrivateMethod: function(){ return privateMethod(); } }; })(); -- 以上兩段練習的程式碼差別只在小括號包整段程式碼上, 我自己測試起來有沒有括號似乎都一樣!? 因為書上幾乎都是有括號的,所以想向各位高手請教差別, 就我理解不就是在使用anonymous function所以最後要有()去執行, 但包不包起來好像沒差? 因為我測試包整段也可以執行 Orz Ex: var testModule = (function(){ //private variables and methods var privateNum = 0; var privateMethod = function(){ return false; }; //public variables and methods return{ getPrivateNum: function(){ return privateNum; }, setPrivateNum: function(){ return privateNum++; }, getPrivateMethod: function(){ return privateMethod(); } }; }()); 麻煩指導了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.226.65.79

04/10 11:51, , 1F
剛剛在 jsfiddle 試了下: function(){}() 這樣好像不合語法
04/10 11:51, 1F

04/10 11:52, , 2F
所以才要包 () 變成一個運算式後才能呼叫 (的樣子)
04/10 11:52, 2F

04/10 11:56, , 3F
包整段(function(){}())跟包前面(function(){})()都可
04/10 11:56, 3F

04/10 11:56, , 4F
不能不包就是了
04/10 11:56, 4F

04/10 12:21, , 5F
所以可能只是在FIREFOX上不包是可以的 了解
04/10 12:21, 5F

04/10 18:29, , 6F
不對阿 這種情況是可以不包的 只有函式宣告才一定要包
04/10 18:29, 6F

04/10 18:29, , 7F
= 本來就有運算的意義了 我在chrome上不包也可以跑
04/10 18:29, 7F

04/10 18:30, , 8F
但是還是建議要包 因為這樣比較好分辨到底是給予function
04/10 18:30, 8F

04/10 18:30, , 9F
實體還是執行立即函式
04/10 18:30, 9F

04/10 18:31, , 10F
然後{}())跟{})()的差別是...後者JSLint會噴錯誤
04/10 18:31, 10F

04/12 09:47, , 11F
chrome上不包跑不了吧?
04/12 09:47, 11F

04/12 09:50, , 12F
我說過惹在等號右邊可以QQ http://jsfiddle.net/ABc9k/
04/12 09:50, 12F

04/15 21:17, , 13F
04/15 21:17, 13F

04/15 21:18, , 14F
的文章 講得很清楚
04/15 21:18, 14F
文章代碼(AID): #1HPC-BCm (Ajax)
文章代碼(AID): #1HPC-BCm (Ajax)