[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/07 09:57 / Filesize : 397 KB / Number-of Response : 1030
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

+ JavaScript の質問用スレッド vol.120 +



328 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 00:15:08.11 ID:KJUuPgzh.net]
>>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






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<397KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef