小米的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)
共有0 条评论 发言请遵守【相关规定

网友评论

会员头像
发 表同步腾讯微博    验证码:  点击更新请先登陆
  • 暂无评论
关闭模块文章图片 article Pictrue
  • 我的妈妈爸爸
  • 基于koa2+mysql+vue2.0+Element阳光内容管理系统
  • 代码覆盖率工具 Istanbul 入门教程
  • 全栈工程师的武器——MEAN
  • 9款超炫的 CSS3 复选框(Checkbox)
  • 微信开发在线翻译功能
  • CSS3那些不为人知的高级属性
  • 给easyui的datebox添加清空事件
  • flash写字效果
  • kendoUI系列教程之DropDownList下拉菜单
  • kendoUI系列教程之datetimepicker日期时间选择
  • kendoUI系列教程之datepicker日期选择
  • kendoUI系列教程之combobox下拉列表框
  • kendoUI系列教程之colorpicker
  • kendoUI系列教程之calendar日历表
  • kendoUI系列教程之autocomplete自动补齐