JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net (766レス)
JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1449440793/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
304: デフォルトの名無しさん [sage] 2016/07/18(月) 00:12:28.04 ID:CK8ZYmxh >>302 Note1だろ? > Date objects handle the absence of a hint as if the hint String were given. 辿ってみたが、なるほど[[DefaultValue]](8.12.8)の所でデフォがDateに関してはStringというのは分かった。 そしてValueOf()が返してくるのはこれだから、Add側がString連結になっているのはこれでいい。 ただこれだとsub側が都合が悪い。つまり、もう一度書くと、以下になっているわけだが、 > - は ToNumber(GetValue(target)) を引いて差を返す (11.6.2) (>>291) GetValue(target)がデフォでStringを返してくるのでデフォのままでは引き算は出来ない。 一応GetValueにはPreferredTypeを指定することが出来て、 Numberを指定していれば数値が返ってくる。 だから仕様としてsubを定義する為には、subの時はNumber指定しないといけない。 で、それはどこに書いてあるんだ? なおお前が大好きなmoment.jsも確認したが、同様に直ではなく、こちらはvalueOfを使っていた。 > mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); > http://momentjs.com/downloads/moment.js つってもMDNには同じだと明記されているが。 > This method is functionally equivalent to the Date.prototype.getTime() method. > https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/valueOf いずれにしても、何かしら理由があったんだと思うが。 とりあえず5.1で確認出来たらその記載が旧仕様にあるかどうかを確認すればいい。 つかこの際英語は関係ないだろ。そういうのもコンプレックス出まくりだから止めたほうがいい。 英語は日本語より下手なのを自覚した上で、ヒット件数と内容をとるか、言語をとるかでしょ。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/304
305: デフォルトの名無しさん [sage] 2016/07/18(月) 00:17:12.76 ID:CK8ZYmxh しかし話はそれるが、この仕様だと + と - なら - の方がToPrimitive()がない分処理が軽いな。 ベンチマークに現れるかは謎だが。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/305
308: デフォルトの名無しさん [sage] 2016/07/18(月) 01:13:38.23 ID:CK8ZYmxh ああ、なるほど分かった。 String変換はToPrimitiveの時であって、GetValue時ではないんだな。 この点を>>304では間違えていた。 Add: ToPrimitive(GetValue(target))でStringになって、それを連結。 Sub: ToNumber(GetValue(target))でNumberになって、引き算。 SubではToPrimitiveがないのがミソだ。 となるとそちらの主張通り、 > ○ 2. addの方は「仕様」で、subの方も「仕様」 (>>302) のように見える。 さて、記載されている箇所は分かったので初期仕様(1997)版を確認したが、 http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June%201997.pdf 11.6.1 The addition operator(+) 11.6.2 The subtraction operator(-) 9.1 ToPrimitive 9.3 ToNumber 15.9 Date Object に本質的な違いがあるようには見えない。 つまり、最初から仕様としてaddもsubも使えた(今と同じ動作だった)ように見える。 しかし誰もsubを使っていない。となると結論としては、 仕様には最初から盛り込まれていたが、 A. 実装が追いつかず、動かない環境が多かった。(あった) B. バグっていて使える状況ではなかった。 のどちらかだね。 今後については、自分が対象とするブラウザで動作を確認出来れば使えばいいということになる。 はい、お疲れさまでした。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/308
311: デフォルトの名無しさん [sage] 2016/07/18(月) 01:44:14.47 ID:CK8ZYmxh >>309 まあどう思おうが勝手だが、 基本的にはライブラリ開発者もMDN執筆者も俺よりJavaScriptの経験は明らかに豊富で、 その彼等が回避している事を俺がわざわざ試す意味はないよ。 君のアプリは君が好きなようにすればいい。 俺がセンス無いと思うのならそれでいい。 ただ、そんな無駄吠えしている限り、君は上達しないよ。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/311
314: デフォルトの名無しさん [sage] 2016/07/18(月) 02:02:36.39 ID:CK8ZYmxh >>313 +は文字列内埋め込みにはこの方がいいからだろ。あれはあの仕様でも良いんだよ。 ただいちいち toString() する仕様でも良いんだよ。 てかお前は異様に「仕様」談義が好きみたいだが、マジで何か書いた方がいいぞ。 そしてその中で素晴らしいライブラリの使い方を披露すれば、布教も出来るだろ。 ついでに言っておくと、今回の質問者の「ライブラリは…」ってのはかなり妥当な状況だよ。 いちいちあの程度でライブラリを導入する方が手間なんだよ。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/314
315: デフォルトの名無しさん [sage] 2016/07/18(月) 02:06:50.86 ID:CK8ZYmxh あーそういえば43cmってなに? 厨二病だとは思うが聞いておいてやるよw http://mevius.5ch.net/test/read.cgi/tech/1449440793/315
318: デフォルトの名無しさん [sage] 2016/07/18(月) 02:16:59.61 ID:CK8ZYmxh あーまあ確かに今回は結局の所ほぼ自力で辿り着いているから、 確かに談義もしてないし、協力も大してしてもらってないわな。 とはいえ、getTime()については俺は前から疑問を持っていたからついでに調べたんだ。 >>317 これか? http://d.hatena.ne.jp/sandai/20100916/p1 んー、まあこれを読んでも今回の結論には至らないけどな。 ちなみに俺は仕様書を断片的にしか読んでないから、多分 ToPrimitive(Number)がvalueOfを呼び、 ToPrimitive(String)がtoStringを呼ぶのは予想出来るが、 それがどこに書いてあるかまでは確認してない。まあもういいが。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/318
320: デフォルトの名無しさん [sage] 2016/07/18(月) 02:33:00.01 ID:CK8ZYmxh >>313 ああちなみに一応コメントしておくとな、 11.6.1のNOTE1で例外規定を書いているだろ?これは結局の所 if 文が必要になるんだよ。 だから仕様としては、「文字列として連結したいなら常に toString() 」の方が綺麗になる。 そうすれば+だけあるToPrimitiveが除去可能で、+と-を同じ関数で処理する目が出てくるだろ。 現実にはこれだけでは駄目だけど、そうやって無駄な関数を増やさないのが良い設計なんだよ。 本来腕前ってのはこういう「如何に無駄をなくすか」で勝負すべきであって、 お前らがやっているみたいな 「1行のチューニング」「俺の方が仕様に詳しい」「俺の方が短い」ではないんだよ。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/320
322: デフォルトの名無しさん [sage] 2016/07/18(月) 02:42:22.09 ID:CK8ZYmxh >>319 これか。確かに俺が確認したのと同じ事だな。 http://os0x.hatenablog.com/entry/20100916/1284650917 http://mevius.5ch.net/test/read.cgi/tech/1449440793/322
324: デフォルトの名無しさん [sage] 2016/07/18(月) 02:47:05.64 ID:CK8ZYmxh >>321 まあ今のお前にいくら言っても分からないとは思うが、必要なのは、 「構造的」簡潔さなんだよ。 「記述的」簡潔さではない。 もちろん記述も簡潔な方がいいんだけどね。 とはいえ、構造が簡潔なら記述が複雑になることもないんだよ。 とにかくお前は大きいのをまずは書いてみることだよ。 そうすれば色々と至らなさが分かると思うよ。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/324
325: デフォルトの名無しさん [sage] 2016/07/18(月) 02:49:44.99 ID:CK8ZYmxh >>323 それはない。 俺の疑問はgetTime()が何故いるのか?であって、 add/subについてではないから。 まあこの際どうでもいいが。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/325
331: デフォルトの名無しさん [sage] 2016/07/18(月) 23:56:44.27 ID:CK8ZYmxh >>330 基本的には ・getTime要らないなら何故いちいち付いているのか?(全員付けているのか) ・今確かに動いているが本当に引き算は出来るのか?(仕様内なのか) の確認だから。 今の仕様でもそんなに悪くないけど、直交してないから実装に負担がかかる。 とはいえ今更変更することは無理だし、 新仕様を検討している連中はこの辺全て分かっているだろうから、見守るしかないね。 なおgetTimeが要らないといっているのは引き算時限定であって、(これは経緯を見れば分かるはずだが) やっぱりlodash君は「前との関連で」の会話が出来ないんだな。 多分ガチのアスペなんだと思う。 とはいえここは匿名掲示板なんだから、俺たちがアスペに対して気を使う必要はない。 (個人を特定して気を使う必要はない) 過去の発言は全部読めるのだから、ちゃんと読み直して付いてこいとしか言えんね。 lodash君の会話の組み立て方では普通は荒らし扱いされる。 それは読み直すことによって多少は改善するから、まずはそれを心がけることだ。 という書き方だと伝わらないのかな? まあしかしこれ以上面倒見れんが。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/331
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.041s