update default parameters transformer to use var a = arguments[0] === undefined ? 1 : arguments[0]; instead of if (a === undefined) a = 1;

This commit is contained in:
Sebastian McKenzie 2015-01-04 08:35:14 +11:00
parent 4d5861cfdc
commit cbcad22d81
6 changed files with 27 additions and 14 deletions

View File

@ -0,0 +1 @@
var VARIABLE_NAME = ARGUMENTS[ARGUMENT_KEY] === undefined ? DEFAULT_VALUE : ARGUMENTS[ARGUMENT_KEY];

View File

@ -1 +0,0 @@
if (VARIABLE === undefined) VARIABLE = DEFAULT;

View File

@ -49,16 +49,29 @@ exports.Function = function (node, parent, file, scope) {
var body = []; var body = [];
var argsIdentifier = t.identifier("arguments");
argsIdentifier._ignoreAliasFunctions = true;
var lastNonDefaultParam = 0;
for (i in node.defaults) { for (i in node.defaults) {
def = node.defaults[i]; def = node.defaults[i];
if (!def) continue; if (!def) {
lastNonDefaultParam = +i + 1;
continue;
}
body.push(util.template("if-undefined-set-to", { body.push(util.template("default-parameter", {
VARIABLE: node.params[i], VARIABLE_NAME: node.params[i],
DEFAULT: def DEFAULT_VALUE: def,
ARGUMENT_KEY: t.literal(+i),
ARGUMENTS: argsIdentifier
}, true)); }, true));
} }
// we need to cut off all trailing default parameters
node.params = node.params.slice(0, lastNonDefaultParam);
if (iife) { if (iife) {
var container = t.functionExpression(null, [], node.body, node.generator); var container = t.functionExpression(null, [], node.body, node.generator);
container._aliasFunction = true; container._aliasFunction = true;

View File

@ -1,7 +1,7 @@
"use strict"; "use strict";
var some = function (count) { var some = function () {
if (count === undefined) count = "30"; var count = arguments[0] === undefined ? "30" : arguments[0];
console.log("count", count); console.log("count", count);
}; };

View File

@ -1,12 +1,12 @@
"use strict"; "use strict";
var t = function (t, f) { var t = function () {
if (t === undefined) t = "foo"; var t = arguments[0] === undefined ? "foo" : arguments[0];
if (f === undefined) f = 5; var f = arguments[1] === undefined ? 5 : arguments[1];
return t + " bar " + f; return t + " bar " + f;
}; };
var a = function (t, f) { var a = function (t) {
if (f === undefined) f = 5; var f = arguments[1] === undefined ? 5 : arguments[1];
return t + " bar " + f; return t + " bar " + f;
}; };

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
var t = function (t) { var t = function () {
if (t === undefined) t = "foo"; var t = arguments[0] === undefined ? "foo" : arguments[0];
return t + " bar"; return t + " bar";
}; };