文章分类 Classification
小米的js像雷军一样雷人
稿件来源: 阳光企业网站管理系统 撰稿作者: 太阳光 发表日期: 2014-03-31 阅读次数: 151 查看权限: 游客查看
小米很火,雷军雷人,小米网站的js也一样雷人
这两天抢红米,发现IE8下有js报错,于是随便看了下小米网站的javascript脚本,真想说:“雷军,你们的js也很雷人哦”
打开http://www.xiaomi.com/源代码里有这么几行js脚本:
function createurlcdn(url,t){ t = t || 5; var date = new Date(); var hour = date.getHours(); hour = (hour < 10 ? "0" : "") + hour; var min = date.getMinutes(); min = ( parseInt(min / t) <10?"0":"")+parseInt(min / 5); var day = date.getDate(); day = (day < 10 ? "0" : "") + day; var version = day + hour + min; document.write('<script src="'+url+'?ver=' + version + 'xiaomi"><\/script>'); } createurlcdn("http://www.xiaomi.com/c/service/js/categoryTree.js",5);
代码的目的很明显就是清除菜单数据缓存,每五分钟更新一次。但是雷军你不觉得写得很幼稚吗?
function createurlcdn(url,t){ t = t || 5; var date = new Date(),hour = ("0"+date.getHours()).slice(-2), min = ("0"+parseInt(date.getMinutes()/t)).slice(-2), day = ("0"+date.getDate()).slice(-2); document.write('<script src="'+url+'?ver=' + hour + min + day + 'xiaomi"><\/script>'); } createurlcdn("http://www.xiaomi.com/c/service/js/categoryTree.js",5);
同时http://p.www.xiaomi.com/js/xmst.js里有几个值得思考的函数:
function f() { var a = location.hostname, b = a.split("."); size = b.length; var c = "." + b[size - 2] + "." + b[size - 1]; return c }
这函数作用是把www.xiaomi.com截取到.xiaomi.com,但能不能不用分割?因为假如访问的是xiaomi.com程序就会报错(虽然官网已经做了跳转,但表现很不专业的精神),完全可以改为:
function f() { var a = location.hostname; return a.substring(a.lastIndexOf(".",a.lastIndexOf(".")-1)); }
还有这个
function l(a, b, c, d) { var e = arguments.length; e == 3 ? document.cookie = a + "=" + b + ";path=/;domain=" + c : document.cookie = a + "=" + b + ";path=/;domain=" + c + ";expires=" + d }
arguments属性一般很少用,但你这样用就太低估人家的作用了。你不如直写:
function l(a, b, c, d) { !d ? document.cookie = a + "=" + b + ";path=/;domain=" + c : document.cookie = a + "=" + b + ";path=/;domain=" + c + ";expires=" + d }
再来看看这个最雷人的函数:
function n(a) { var b = ""; for (var c = 0; c < a.length; c++) { var d = a.charAt(c); d != " " && (b += d) } return b }
雷军你们的程序员是小学毕业吗?就用这种方法来去除字符串里的空格!?
function n(a) { a = a||""; return a.replace(/\s+/g,''); }
function q(a) { var b = /.*\:\/\/([^\/]*).*/, c = a.match(b), d = ""; return typeof c != "undefined" && null != c && (d = c[1]), d }
对于这个函数,一看就是没有理解就照抄别人的函数,match正侧匹配不成功返回就是null别疑神疑鬼的还判断typeof。而且获取的是来源域名,所以应该连端口号也过滤了:
function q(a) { a = a || ""; var c = a.match(/.*\:\/\/([^\/:]*).*/); return c ? c[1] : ""; }
还有这种函数我就不知道说什么了
function v(a) { t(a) }
关键词: 小米,雷军,红米手机 编辑时间: 2014-03-31 11:45:58
0
高兴1
支持0
搞笑0
不解0
谎言0
枪稿0
震惊0
无奈0
无聊0
反对0
愤怒
0%(0)
0%(0)
- 中搜索:小米的js像雷军一样雷人
- 中搜索:小米的js像雷军一样雷人
- 暂无评论
文章图片 article Pictrue
网友评论