11月
20th
金
20th
関数の最後のパラメータにundefinedが指定されているかを判別する
全部で判別は出来なそうだけど、最後のパラメータに関してはargumentsを使うと判定出来るようだ。
var foo = function(arg) {
console.log(
typeof arg == 'undefined',
arguments.length
);
};
foo(); // true, 0
foo(undefined) // true, 1
明示的にundefinedを指定した場合はargumentsに入る。
jQueryっぽくゲッターとセッターを1つの関数に書く時、普通は削除フラグにnullを使う。
attr('a', 1);
attr('a'); // 1
attr('a', null);
attr('a') // undefined
みたいな。JSON.stringifyのようにundefinedで値を削除するものと組み合わせる場合、関数もそれに合わせてundefinedで削除したかったので調べました。
attr('a', { a: 'foo' });
attr('a').a; // "foo"
attr('a', { a: undefined });
attr('a').a; // undefined
attr('a', undefined);
attr('a'); // undefined