less

きづかないくらいイージーなクオリティー

Archive

11月
20th
permalink

関数の最後のパラメータに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