The code that's generated for a keyword argument goes like this:
(ps (defun foo (&key a) (bar a))) =>
(abbreviated for clarity):
"function foo() {
var a;
// ... pick out and assign keyword args ...
if (a === undefined) {
a = null;
};
return bar(a);
};"
It seems to me that this could be made tighter as follows:
"function foo() {
var a = null;
// ... pick out and assign keyword args ...
return bar(a);
};"
The only difference I can think of is when someone explicitly passes undefined
as a value for the argument, but that's an oxymoronic thing to do.
Can anyone think of a reason not to make this change? I like PS's keyword
arguments a lot, but the generated JS is bloated enough to make me wince.