Skip to content

Instantly share code, notes, and snippets.

@abhisheksliam
Forked from getify/add.js
Created June 16, 2017 15:16
Show Gist options
  • Save abhisheksliam/b13a69dc484ef13ce79880d2225a988a to your computer and use it in GitHub Desktop.
Save abhisheksliam/b13a69dc484ef13ce79880d2225a988a to your computer and use it in GitHub Desktop.

Revisions

  1. @getify getify renamed this gist Sep 4, 2015. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. @getify getify revised this gist Sep 4, 2015. 2 changed files with 12 additions and 1 deletion.
    11 changes: 11 additions & 0 deletions add-golfed.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    // 96 characters, from @sainaen, @rreverser, others:

    function add(a,s){return(a=add.bind(0,s=[].join.call(arguments,'+'))).toString=eval.bind(0,s),a}

    add() + 0; // NaN
    add(1) + 0; // 1
    add(1,2) + 0; // 3
    add(1)(2) + 0; // 3
    add(1,2)(3) + 0; // 6
    add()()(1,2)()(3) + 0; // 6
    add(1,2)(3)(4,5)(6) + 0; // 21
    2 changes: 1 addition & 1 deletion add.js
    Original file line number Diff line number Diff line change
    @@ -21,4 +21,4 @@ add(1,2) + 0; // 3
    add(1)(2) + 0; // 3
    add(1,2)(3) + 0; // 6
    add()()(1,2)()(3) + 0; // 6
    add(1,2)(3)(4,5)(6) + 0; // 21
    add(1,2)(3)(4,5)(6) + 0; // 21
  3. @getify getify revised this gist Sep 4, 2015. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion add.js
    Original file line number Diff line number Diff line change
    @@ -6,7 +6,7 @@ function add() {
    sum += Number(arguments[i]);
    }
    return add;
    };
    }
    add.valueOf = function valueOf(){
    return sum;
    };
  4. @getify getify revised this gist Sep 4, 2015. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion add.js
    Original file line number Diff line number Diff line change
    @@ -3,7 +3,7 @@ function add() {

    function add() {
    for (var i=0; i<arguments.length; i++) {
    sum += +arguments[i];
    sum += Number(arguments[i]);
    }
    return add;
    };
  5. @getify getify revised this gist Sep 4, 2015. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion add.js
    Original file line number Diff line number Diff line change
    @@ -3,7 +3,7 @@ function add() {

    function add() {
    for (var i=0; i<arguments.length; i++) {
    sum += arguments[i];
    sum += +arguments[i];
    }
    return add;
    };
  6. @getify getify revised this gist Sep 4, 2015. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions add.js
    Original file line number Diff line number Diff line change
    @@ -1,13 +1,13 @@
    function add() {
    var sum = 0;

    function add(){
    function add() {
    for (var i=0; i<arguments.length; i++) {
    sum += arguments[i];
    }
    return add;
    };
    add.valueOf = function(){
    add.valueOf = function valueOf(){
    return sum;
    };
    return add.apply(null,arguments);
  7. @getify getify created this gist Sep 4, 2015.
    24 changes: 24 additions & 0 deletions add.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    function add() {
    var sum = 0;

    function add(){
    for (var i=0; i<arguments.length; i++) {
    sum += arguments[i];
    }
    return add;
    };
    add.valueOf = function(){
    return sum;
    };
    return add.apply(null,arguments);
    }

    // ...

    add() + 0; // 0
    add(1) + 0; // 1
    add(1,2) + 0; // 3
    add(1)(2) + 0; // 3
    add(1,2)(3) + 0; // 6
    add()()(1,2)()(3) + 0; // 6
    add(1,2)(3)(4,5)(6) + 0; // 21