Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。個の銅バッジ1JavaScriptでfalseと判定される、いわゆるFalsyな値についてはこちらのページをご参照ください。票8すでに承認された回答が付いていますが、念のため補足です。・第3引数を渡さないとき、cはundefinedになるため、常にfalse?Yesです。true/false以外の値を論理値が必要な場所に渡した時に、どのようにtrue/falseに変換されるかは(harry0000さんのコメントにもありますが)しっかり定義されています。ToBooleanリンク先はECMA5.1のものですが、この部分の記述についてはバージョン間での本質的な変更はないはずです。undefinedがfalseとして判定されることは(よほど変な独自実装をしていない限り)間違いありません。・第3引数を渡すとき、cは常にtrue?Noです。''(空文字列)はfalseと判定されます。ここにあげた値を第3引数として渡せばif(c)の判定は成立せず、「第3引数を渡しているのに条件は成立しない」と言うことになります。0)を実行して、if部とelse部のどちらが実行されるか確かめてみてください。''」以外の値を全て真と判定したい場合にはよくある書き方、と言って良いと思います。「必須ではない引数を指定されたかどうか」を判定するには、この条件の書き方ではうまくいかないことも多いです。0や''を指定された場合に、それは何も指定していないものと扱って良いのかどうか、よく考えて、要件に合わないなら、arguments.lengthを使って判定すべきでしょう。引数として渡すことなど全く考慮していませんでした)。「必須ではない引数を指定されたかどうか」の判定はまた異なる要件となるわけですね。すれば、引数cを省略した時も、falseを入れた時も、trueが来た時も問題なく動きます。個の銅バッジ>!!のパターンもよく見るので...。二重否定演算子(検索して調べました)はこういう風に使うのですね。|2省略可能なブール引数として使っています。false、0、""など偽と判断される値を渡した場合はfalseとなります。それ以外の値を渡した場合はtrueとなります。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。undefinedというエラーがでます。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。