JavaScriptの三項演算子が読みにくいらしいので、if式ならぬ if関数を作りました。そしてもっと読みにくい感。
JavaScriptの三項演算子が読みにくいらしいので、if式ならぬ if関数を作りました。そしてもっと読みにくい感。:
という噂を聞きました。
なので、VB6とかVBAのIIF関数ならぬ、if関数を考えてみました。
誰でも考えるっぽい関数ですかね。
名前、ifExpression とか ifFunc とか、iff とか、名前考えたのですが、しっくりこなかったので、if_ にしました。
こんな感じです。
[1][2]の使い方は、引数として渡した then/elseプロパティの値が取得できます。
[3][4]の使い方は、then/elseプロパティにわたす値はアロー関数なので、その戻り値が取得されています。
関数渡しの場合は、if_(true/false)の値によって、呼び出されるかどうかが制御されるので、三項演算子的に使えるでしょう。
他段階の場合、三項演算子より、明らかに読みやすい!
読みやすい!...か??
こんなの作るくらいなら、三項演算子になれる方が読みやすくないか?
という遊びネタでした。
三項演算子がよみにくい!
という噂を聞きました。なので、VB6とかVBAのIIF関数ならぬ、if関数を考えてみました。
誰でも考えるっぽい関数ですかね。
名前、ifExpression とか ifFunc とか、iff とか、名前考えたのですが、しっくりこなかったので、if_ にしました。
こんな感じです。
if関数の実装です
const isFunction = (value) => { return (typeof value === 'function'); }; const functionValue = (value) => { if (isFunction(value)) { return value(); } else { return value; } }; const if_ = (condition) => { if (condition) { return (args) => { return functionValue(args.then); }; } else { return (args) => { return functionValue(args.else); } } }; //---------- // 使い方 const thenValue = 'THEN'; const elseValue = 'ELSE'; // [1] var value1 = true; console.log( if_(value1)({ then: thenValue, else: elseValue }) ); // THEN と表示される // [2] var value1 = false; console.log( if_(value1)({ then: thenValue, else: elseValue }) ); // ELSE と表示される // [3] var value1 = true; console.log( if_(value1)({ then: _=>thenValue, else: _=>elseValue }) ); // THEN と表示される // [4] var value1 = false; console.log( if_(value1)({ then: _=>thenValue, else: _=>elseValue }) ); // ELSE と表示される
[3][4]の使い方は、then/elseプロパティにわたす値はアロー関数なので、その戻り値が取得されています。
関数渡しの場合は、if_(true/false)の値によって、呼び出されるかどうかが制御されるので、三項演算子的に使えるでしょう。
他段階の場合、三項演算子より、明らかに読みやすい!
const value2 = if_(true)({ then: 'trueの値', else: 'falseの値' }); const value3 = if_(true)({ then: if_(true)({ then: 'true-trueの時の値', else: 'true-falseの時の値' }), else: 'falseの値' });
こんなの作るくらいなら、三項演算子になれる方が読みやすくないか?
という遊びネタでした。
コメント
コメントを投稿