JavaScript 4©2ch.net (398レス)
JavaScript 4©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1417749547/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
48: デフォルトの名無しさん [sage] 2015/02/17(火) 00:44:58.04 ID:jqPQ5aJG >変数の巻き上げは実際には問題にならない エラーになったほうがバグがすぐわかるじゃん 巻き上げる利点が何もない >未定義値と限らないundefined かなり最近まで「undefined = 1;」とかできた。「undefined 判定」とか検索すると苦労の跡が見える。 最近は変更できなくなったが、古いブラウザへの対応と残されたコードを理解するために知る必要がある。 でも、予約語ではないので変数名には使えて function(){ var undefined = 1; console.log(0[0] === undefined); } とやると0[0]は未定義なのにfalseになる。本来予約語にすべき。 > 使い物にならないtypeof それはさっきあげたJavaScript Gardenより http://bonsaiden.github.io/JavaScript-Garden/ja/#types.typeof 唯一有用なundefinedの判定は上に書いたとおり言語の欠陥がなければいらない記法 文句があるならこれ書いた人にpullreqでも送っとけ >オブジェクトなどに演算子を適用してしまうとエラーも出さずする不可解な挙動 無論、わざと書くことはない。しかし、変数の中身の型を間違えていたりしても一見正常に動いて、中身が変わるとコケる場合がある。 初心者が===を==と書くともっと不思議な動作をするし、逆にこの手の処理がイディオムなってたりもする http://mevius.5ch.net/test/read.cgi/tech/1417749547/48
49: デフォルトの名無しさん [sage] 2015/02/17(火) 00:46:09.01 ID:jqPQ5aJG 以下長いが、これ全部結果の型と値わかる?これ全部結果の型と値わかる? 10*[5] 10*["5"] 10+[5] 10*[null] 10*[undefined] 10*[true] 10*[] 10*{} 10*[5,6] 10+true 10-true 10+[true] Math.min(1,5,null,10); Math.min(1,5,undefined,10); Math.min(1,5,[],10); Math.min(1,5,{},10); [] === [] !![] === !![] Nan === NaN ~NaN -NaN parseInt(true) parseInt([]) Number(true) Number([]) "aa" === new String("aa") "aa" == new String("aa") [1,5,10,50].sort() ["aa",NaN,[2],[1],["a"],[NaN],{"0":2},{"0": 1}].sort() http://mevius.5ch.net/test/read.cgi/tech/1417749547/49
50: デフォルトの名無しさん [sage] 2015/02/17(火) 00:52:59.63 ID:jqPQ5aJG >>49 一番上の行はコピペミスです http://mevius.5ch.net/test/read.cgi/tech/1417749547/50
52: デフォルトの名無しさん [sage] 2015/02/17(火) 01:40:35.02 ID:jqPQ5aJG >だからundefinedになるからエラーになるって言ってんじゃん その場ですぐエラーになるとは限らない グローバル変数を使ったつもりで全く別のタイミングで問題が出るかもしれない >せめて"use strict"での話しをしろよ してるじゃん。use strictでも予約語にはならないし、古いコード読むときに謎のundefined判定に対する知識が必要 その書き方さえ何パターンもあり、少なくとも美しくはない >使い道はある 使い道があるかどうかじゃなくて、きもいかどうかのお話をしてる もっと使い勝手の良くて、Object.prototype.toStringとか不自然なことしなくてすめばいいのに 擬似的なオーバーロードみたいに使い道はあるのに、型よってころころ判定法を変える言語なんてそうないよ http://mevius.5ch.net/test/read.cgi/tech/1417749547/52
61: デフォルトの名無しさん [sage] 2015/02/17(火) 19:50:13.90 ID:jqPQ5aJG >>60 ローカル変数名にundefinedを使ったコードを読むときに仕様を知らないといけない var undefined; とすると、上のスコープと無関係にundefinedを未定義にできる 古いブラウザへの対応も含めてこれを利用したコードが残っている だから、書き換え可能だった頃の対策コードを含めて、害しかない仕様を詳細に理解せざるを得ない お前が熟知してても、勉強途中の理解がたりない人に優しい仕様ではないね。エラーにする言語なら間違えようがないところ http://mevius.5ch.net/test/read.cgi/tech/1417749547/61
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.017s