//提取的方法
var push = (function()
})()
方法洋洋灑灑寫完之後,進入自測階段。為了偷懶,再次使用了自執行函式,**如下:
//自測**
(function())(1,2,3)
在node環境中執行,結果拋錯如下:
^typeerror: cannot assign to read only property 'length' of function 'function ()'
首先為了排除測試案例的原因,我修改了我的測試案例,避免function的介入,**如下:
//測試案例
var fn = function()
fn(1,2,3);
修改完成之後發現測試順利通過,說明我提取的方法沒有問題。到此,牽扯出了乙個新問題,我使用自執行函式時為啥會導致出錯。
首先來到我腦海的原因是自執行函式的執行順序,是否有非同步一說。因為我提取push方法也是用的自執行函式,測試案例也是自執行函式,有可能兩自執行函式的先後執行順序導致了問題,為了驗證這個答案,我決定將自測案例延時執行,**如下:
settimeout(function())(1,2,3)
},10);
//提取方法**
var push = (function()
})()
//測試案例**
(function())(1,2,3)
執行結果,丟擲了不一樣的錯誤,不一樣的烟花,錯誤如下
d:\github\jsstudy\heightfn.js:174
})(1,2,3)
^typeerror: (intermediate value)(...)(...) is not a function
這個錯誤提示很容易定位到了問題,自執行函式結尾未寫分號導致。
這個問題其實是乙個小問題導致的,無關乎技巧。分享這個主要是想表達:在遇到問題時,我們看到的問題可能只是表象,尋找解決方案的過程就是乙個不斷自我猜想,驗證猜想,不斷否定的過程,需要持續不斷的挖掘。
最後貼出最終**:
var push = (function()
})();
//測試案例
;(function())(1,2,3);
Flash,一次Bug的思考
我絕對不算是f黑,大部分時候,我還是很挺flash平台的,flash提供了很好的跨平台特性以及flash player11後的gpu加速 stage3d等等,對於開發者來說,絕對讓人欣喜若狂 對我是這樣 flash出bug也算是常有的事,不過大都還好,我能理解adobe開發者們的辛苦,要考慮跨平台 ...
一次不該出現的bug
部門好久沒有出過事件了,ps 事件可以簡單的理解為bug,事件分為5個類別,其中嚴重的是1級,災難性的。但是這次是天災,避免不了。首先說說我們發布程式的過程,首先程式設計師發布到測試環境,測試人員測試通過,然後發布到uat,業務人員接著測,這個地方其實是很薄弱的,uat環境缺失很多資料,有的地方根本...
《開發除錯》一次bug的啟示
最近改了乙個bug,改了好幾天,改的有些崩潰,在每次要放棄的時候,都冷靜的告訴自己,再試試別的方法,再捋一捋思路,再找介面問問清楚,終於解決了,有種如釋重負的感覺,也讓我獲得了一些新的認識 1.先確定自己的演算法沒有問題。在資料大的情況下,寫一下小的例子驗證關鍵步驟。2.確定對介面的資料格式和資料傳...