toggle

toggle

[1] IRC logs: freenode / #whatwg / 20140523 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20140523

[2] toggle の第2引数は boolean 型なのですが、 false のつもりで undefined を渡すと引数なし → 真、 と解釈されてしまう罠があります。

例えば、

var opts = {};
if (...) {
  opts.enabled = true;
}
element.classList.toggle ('somewhat', opts.enabled);

... は条件に合わせて class="somewhat" を指定するかどうかを変えているつもりが、常にになってしまいます。

var opts = {enabled: false};
if (...) {
  opts.enabled = true;
}
element.classList.toggle ('somewhat', opts.enabled);

... や、

var opts = {};
if (...) {
  opts.enabled = true;
}
element.classList.toggle ('somewhat', !!opts.enabled);

... のように常に値が渡るようにする必要があります。

[3] これ案外はまりがちなので注意。

[4] add, append, remove, delete みたいなの覚えるの難しいから toggle は1つ覚えておけばどっちだったか気にしなくていいというのが便利。