如何让这个javascript更小?

时间:2014-01-27 03:30:11

标签: javascript

正如评论中所述,目标是以最小的字符包含功能。我会研究一下这些缩小器,但不要期望太多,比下面更好。可能的替代实施?

Contra(上,上,下,下,左,右,左,右,b,a)

手动缩小:

(function(f){var s=1;document.body.onkeydown=function(c){c=(c||window.event);c=c.charCode||c.keyCode;if((c==38&&(s|3)==3)||(c==40&&(s|12)==12)||(c==37&&(s|80)==80)||(c==39&&(s|160)==160)||(c==66&&s==1<<8)||(c==65&&s==1<<9)){s=s<<1;if(s==1<<10){s=1;f();};return;}else{s=1;}}})(function(){  alert('contra');  })

更具可读性:

(function (f) {
  var s = 1;
  document.body.onkeydown = function (c) {
    c = (c || window.event);
    c = c.charCode || c.keyCode;
    if ((c == 38 && (s | 3) == 3) || (c == 40 && (s | 12) == 12) || (c == 37 && (s | 80) == 80) || (c == 39 && (s | 160) == 160) || (c == 66 && s == 1 << 8) || (c == 65 && s == 1 << 9)) {
      s = s << 1;
      if (s == 1 << 10) {
        s = 1;
        f();
      };
      return;
    } else {
      s = 1;
    }
  }
})(function () {
  alert('contra');
})

手动缩小回答:

(function(f) {w=window;c="";w.onkeydown=function(e){e=e||w.event;c=c.substr(-9)+String.fromCharCode(e.keyCode||e.which);if(c=="&&((%'%'BA"){f();}}})(function(){alert('contra');})

3 个答案:

答案 0 :(得分:4)

这是我对Konami代码的实现:

(function() {
  var code = "";
  window.onkeydown = function(e) {
    e = e || window.event;
    code = code.substr(-9)+String.fromCharCode(e.keyCode || e.which);
    if( code == "&&((%'%'BA") {
      // do something awesome
    }
  };
})();

当然,您可以根据自己的需要将其缩小。

答案 1 :(得分:1)

答案 2 :(得分:1)

除了通过压缩器运行它之外,您还可以查看此仓库中列出的技巧:https://github.com/jed/140bytes/wiki/Byte-saving-techniques