Skip to content

Commit

Permalink
Flip default parameter template (#4515)
Browse files Browse the repository at this point in the history
* Flip default parameter template

YMMV, I saved ~10b on a 2kb library. Not noticeable at the small scale, by why not do it anyway?

I've (unscientifically) found that flipping the default parameter conditional yields better gzip results. I think this is due to the slightly longer string it can now repeatedly match:

```js
// old
var param = arguments.length <= 0 || void 0 === arguments[0] ? null : arguments[0]
--------------------------------------------------------------^

// new
var param = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null
------------------------------------------------------------------------^
```

Though it's entirely likely gzip will also choose up to the index of the arguments if you many default parameters at different indexes.

* Update tests
  • Loading branch information
jridgewell authored and loganfsmyth committed Sep 25, 2016
1 parent 08b45ca commit c2ed9de
Show file tree
Hide file tree
Showing 10 changed files with 31 additions and 31 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
function test() {
var x = arguments.length <= 0 || arguments[0] === undefined ? "hi" : arguments[0];
var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "hi";

return x;
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
var some = function () {
let count = arguments.length <= 0 || arguments[0] === undefined ? "30" : arguments[0];
let count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "30";

console.log("count", count);
};

var collect = function () {
let since = arguments.length <= 0 || arguments[0] === undefined ? 0 : arguments[0];
let since = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
let userid = arguments[1];

console.log(userid);
};
};
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var f0 = function (a) {
var b = arguments.length <= 1 || arguments[1] === undefined ? a : arguments[1];
var c = arguments.length <= 2 || arguments[2] === undefined ? b : arguments[2];
var b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : a;
var c = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : b;

return [a, b, c];
};
Expand All @@ -9,8 +9,8 @@ assert.deepEqual(f0(1), [1, 1, 1]);

var f1 = function (_ref) {
var a = _ref.a;
var b = arguments.length <= 1 || arguments[1] === undefined ? a : arguments[1];
var c = arguments.length <= 2 || arguments[2] === undefined ? b : arguments[2];
var b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : a;
var c = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : b;

return [a, b, c];
};
Expand All @@ -19,10 +19,10 @@ assert.deepEqual(f1({ a: 1 }), [1, 1, 1]);

var f2 = function (_ref2) {
var a = _ref2.a;
var b = arguments.length <= 1 || arguments[1] === undefined ? a : arguments[1];
var c = arguments.length <= 2 || arguments[2] === undefined ? a : arguments[2];
var b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : a;
var c = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : a;

return [a, b, c];
};

assert.deepEqual(f2({ a: 1 }), [1, 1, 1]);
assert.deepEqual(f2({ a: 1 }), [1, 1, 1]);
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = exports.foo = function foo(gen) {
var ctx = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
var ctx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
};

var bar = exports.bar = function bar(gen) {
var ctx = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
};
var ctx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
};
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ import * as t from "babel-types";

let buildDefaultParam = template(`
let VARIABLE_NAME =
ARGUMENTS.length <= ARGUMENT_KEY || ARGUMENTS[ARGUMENT_KEY] === undefined ?
DEFAULT_VALUE
ARGUMENTS.length > ARGUMENT_KEY && ARGUMENTS[ARGUMENT_KEY] !== undefined ?
ARGUMENTS[ARGUMENT_KEY]
:
ARGUMENTS[ARGUMENT_KEY];
DEFAULT_VALUE;
`);

let buildCutOff = template(`
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
function foo() {
var a = arguments.length <= 0 || arguments[0] === undefined ? "foo" : arguments[0];
var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "foo";
var b = arguments[1];
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
var x = "outside";
function outer() {
var a = arguments.length <= 0 || arguments[0] === undefined ? function () {
var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {
return eval("x");
} : arguments[0];
};
return function () {
var x = "inside";
return a();
}();
}
outer();
outer();
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
var t = function () {
var e = arguments.length <= 0 || arguments[0] === undefined ? "foo" : arguments[0];
var f = arguments.length <= 1 || arguments[1] === undefined ? 5 : arguments[1];
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "foo";
var f = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;

return e + " bar " + f;
};

var a = function (e) {
var f = arguments.length <= 1 || arguments[1] === undefined ? 5 : arguments[1];
var f = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;

return e + " bar " + f;
};
};
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var t = function () {
var f = arguments.length <= 0 || arguments[0] === undefined ? "foo" : arguments[0];
var f = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "foo";

return f + " bar";
};
};
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// #3861
function t() {
var x = arguments.length <= 0 || arguments[0] === undefined ? "default" : arguments[0];
var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "default";
var _ref = arguments[1];
var a = _ref.a;
var b = _ref.b;
Expand All @@ -10,4 +10,4 @@ function t() {
}

console.log(x, a, b, args);
}
}

0 comments on commit c2ed9de

Please sign in to comment.