JS实例教程:当心JavaScript代码陷阱
很久的 bug:
var NOTHING = []; // .... later: function(when, o, fn, data, periodic) { when = when || 0; o = o || {}; var m = fn, d = data, f, r; // ... if (d && !L.isArray(d)) { d = [data]; } f = function() { m.apply(o, d || NOTHING); }; // ... } 当你的调用代码类似Lang.later(delay[0], o, "show", index)时,如果 index 不幸是 base-0 的,那么取 0 时,m.apply(o, d || NOTHING)会让你得到“惊喜”。更妥的做法是类似 YUI3 中的修正: // ... if (!L.isArray(d)) { d = [data]; }? f = function() { m.apply(o, d); }; //... 对于 || 和 && 的用法,很多 JS 书籍(无论中外),都用来片面强调 JS 的灵活性,包括 Douglas 的《JavaScript The Good Parts》中也存在误导。 最后,有感于 NCZ 今天写的 Writing Maintainable Code, 再举一例(和本文主题关系不明显,但的确又有关系,交给你去思考啰): var isBoy = true; isBoy = typeof isGirl !== "undefined" ? !isGirl : true; 或者来个耍酷的代码: var isBoy = true; (typeof isGirl !== "undefined") && (isBoy = !isGirl); 然而,以上两种写法,无论从代码长度还是性能上讲,都不如更直白的写法: var isBoy = true; if(typeof isGirl !== "undefined") isBoy = !isGirl; 简单质朴,往往是最好的。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |