1 月 24 日に開催された Kyoto.js meetup 4 で「jQuery のバグを見つけてから修正されるまで」と題した発表を行いました。
jQuery へのコミットに関して 2 行でまとめるとすれば次のようになるでしょうか。
発表の筋書きは以下の通りです。
jQuery のバグを見つけてから修正されるまで
街中にクリスマスの装飾が灯り始めるころ
うんうん、変わったよね
…
……
そういえば Deferred
を使ったとき this
の値はどうなるんだったっけ?
$.Deferred().done(function () {
this // ← ココとか
}).then().done(function () {
this // ← ココの値は?
});
jQuery 1.8.3 と jQuery 1.9 Beta 1 で結果が違う!
ふむふむ…… (コードを読む)
ふむふむ…… (コードを読む)
ふむふむ…… あれ?
これ、自分の書いたコードが動かなくなる?
$.Deferred().then(function () {
// ここでの this が
return $.Deferred().resolveWith(this, arguments);
}).done(function () {
// ここにも引き継がれてほしい
this
});
……
まずい!
どこを直せば自分のコードが動くのか
コードとにらめっこ
にらめっこ
にらめっこ
……
問題なのはここ、でもここを変えると先の変更の意味が失われるから……
こことここか!
直すならテストを書かないと
テストを書くならテストを走らせないと
テストを走らせるなら jQuery のビルド環境を作らないと
grunt
? Node.js なら入ってるし楽勝でしょ
……
うわあ、この Node.js バージョンが古い!
うわあ、この OS バージョンが古い!
うわあ、この Python (ry
……
セコメントをする