質問: **下記のようなコードを見かけたのですが、どういう意味でしょうか?** ・第3引数を渡さないとき、cはundefinedになるため、常にfalse? ・第3引数を渡すとき、cは常にtrue? ``` function test (a, b, c) { // if (c) { // } else { // } } test(1, 2); ``` ・これは一般的な書き方でしょうか?
回答: 一般的な書き方ですが、 ``` function(a, b, c){ if(!!c){ someFunc(c); // cについて処理する } else{ someFunc({}); // cがなかった時の処理 } // ... } ``` のように、 `if(!!c){ ...` というのも多いです。 たとえば、前述の `someFunc` は「引数にtrueかfalseが欲しい! nullやundefinedはこまる!」 というようなときに、`someFunc(!!c)` とすれば、引数cを省略した時も、falseを入れた時も、trueが来た時も問題なく動きます。 `!!`のパターンもよく見るので一応覚えておいたほうが良いですよ