- + JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
322 :デフォルトの名無しさん[sage]:2016/05/31(火) 00:15:08.11 ID:KJUuPgzh - >>307
混乱を招く回答が追加されているので伝えるが、undefined を返す設計が妥当だと思う 例えば、Map.prototype.get は存在しないキーを検索したら undefined を返す あなたが>>310で気が付いたように配列の値に undefined が代入されていれば、値があるのかないのか区別付かない では、なぜ Map.prototype.get が undefined を返す設計になっているのかといえば、未定義のキーを参照したら未定義値を返す暗黙の了解があるからだろう オブジェクトでも存在しないプロパティを参照すれば undefined を返す (少なくとも俺の知る限りでは)プロパティが存在して undefined が代入されている JavaScript の仕様は存在しない よって、あなたが配列のプロパティに undefined を代入しなければ十分に区別できるだろう それから蛇足ではあるが、>>307のコードでは a === [,,,] な場合に意図せず、undefined を返す(>>307の設計通りなら null を返すのが正しい) Object.prototype.hasOwnProperty を使うことで期待通りの結果を得ることができるだろう Array.prototype.last = function last () { var i = this.length; while (i && !this.hasOwnProperty(--i)); return this[i]; }; console.log([1,2,,,,].last()); // 2 console.log([,,,,].last()); // undefined console.log([].last()); // undefine
| - + JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
328 :デフォルトの名無しさん[sage]:2016/05/31(火) 09:19:18.21 ID:KJUuPgzh - > DBに入ってもない無い値を、入っていた事にされるのは許せんだけ。
誰もそんなことは言ってなかったと思うが、何が許せないんだろうな このスレだと hasOwnProperty, forEach, keys で判定する処理は見かけたが
|
|