トップページ > プログラム > 2016年05月31日 > KJUuPgzh

書き込み順位&時間帯一覧

35 位/197 ID中時間01234567891011121314151617181920212223Total
書き込み数1000000001000000000000002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net

書き込みレス一覧

+ 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 で判定する処理は見かけたが


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。