1 名前:デフォルトの名無しさん [2007/09/19(水) 09:08:01 ] 《ECMAScriptを語るスレ》 1. - 概要 - ECMA-262規格として知られる言語(通称 ECMAScript)についての利用法や言語仕様、 その他四方山話をするスレです。 - ECMA-262 3rd Edition 標準規格(英語)- www.ecma-international.org/publications/standards/Ecma-262.htm Under Translation of ECMA-262 3rd Edition (日本語訳) www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ 前スレ ECMAScript デス 2 pc11.2ch.net/test/read.cgi/tech/1088298991/ 過去スレ JavaScript デス pc5.2ch.net/test/read.cgi/tech/1052273054/
231 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 20:08:48 ] >>230 理解できる範囲を明示してくだしあ><
232 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 20:21:44 ] print('hello, world');
233 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:03:06 ] >>230 その命令は、どのコンテキストで実行する?
234 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:13:58 ] ここじゃね? eval.call(null, 'this');
235 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 21:32:53 ] 正直1.6以降ついて行けませんってのどれくらい居る?
236 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 15:38:09 ] ECMAScript 1.6 ですか?
237 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:06:42 ] ついていけないっつーか、 いつになったら新しい機能を使ってもいいか タイミングをはかりかねている。
238 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:26:02 ] ローカルならいいけど、 やっぱ公になってるWebでは使えないよな。 あと3年くらい?
239 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 03:20:12 ] 最長一年半じゃない? ブラウザをアップデイトしない選択肢はないから。
240 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 07:31:57 ] >>239 いや、結構古いまま使ってる人多いよ。
241 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 10:19:39 ] うちのアクセスログ、今でもIE5とかある。
242 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 11:53:15 ] >>241 NS4.7とか言うのもまだあったりするからなぁ
243 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 11:55:04 ] IEなんて2のころからまともに使ったことないが シェルに食い込んでるからバージョンアップだけはやってるな。
244 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:02:45 ] マルチプラットフォームに使えるgeckoとwebkitとoperaだけ確認しておけばok。
245 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:15:22 ] IEはどのみちJavaScript動かないしね。
246 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:37:03 ] JScriptってコンテキスト周りでecmaすら満たしてなかった気がするが
247 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 20:28:36 ] es4はどうよ? 俺は正直イラネ
248 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 21:41:59 ] ActionScript同様に扱える予定なんだろ、方向性自体は悪くないんじゃね? まあ現物見てみないとアレだが、長い目で期待してるよ どうせIEでも使える日は当面来ない
249 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:35:02 ] >>247 別の言語だと思ってるので遠くから見てる。 >>248 も言ってるようにWebで使いものになるのは当分先だろう…
250 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 06:15:58 ] es3のほうが言語として美しい。es4はキメラ化した愚作。
251 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 17:37:52 ] 確かに言語としてはes3の方が美しいよな。 クラスベースにしたのにプロトタイプのこすとかイラネ。 まあIEがまともに実装することは永久にないのでwebでは日の目見ないだろうな。 標準クラスライブラリが多すぎるのも問題だ。
252 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 18:12:50 ] とはいえprototype.jsとか使って疑似クラスとか定義しているのが主流なのを見ると、 言語の機能としてクラスベースを取り入れるのも正しい方向性っちゃそうなのかもしれない。 既存のクラスをprototypeで拡張できなくなるのはちょっと寂しいけどな。
253 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 18:25:13 ] prototype.jsって別にいらないと思うんだがそんなにプロトタイプベースは嫌いかね?
254 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 18:39:39 ] 今のところ既存のクラスをprototypeで拡張出来るはずだが。 es4 は今がりがり仕様を削ってるところなので様子見。 es3.1 がちっとづつ進んでて興味深い(MS主導)
255 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 20:23:02 ] >>253 俺もprototype.jsは嫌い。 つーか、マトモな感覚してたらあんなwarning出まくりのライブラリなんて気味悪くて使えん。
256 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 01:10:40 ] そのマトモな感覚ってのがecmaの仕様理解しててプロトタイプベースも使いこなしてるって事だから 実際にajaxアプリ書いてる連中には居ないだろうな。
257 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 04:26:31 ] このスレ見て俺ってまだ勉強不足なんだなって思ったよ ああ・・・
258 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 13:49:16 ] 似非クラスベースやりたいだけならprototype.jsなしでも 継承モデルとか作れなくもないしな カプセル化の面で多少悩みは残るけど でもjQueryは手放せない
259 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 13:56:49 ] 継承させる場合はFunction.apply()使えば良いけどミックスインしか出来ないんだよな。
260 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 09:11:18 ] Yahoo UIってどうよ めちゃくちゃメソッド・プロパティあるけど
261 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 11:57:47 ] ecma-262関係ないな。
262 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 16:14:32 ] fx3がリリースされてjs1.8が登場したわけだが・・・rhinoはまだか!?
263 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 20:20:40 ] 1.8以前に1.7R2がまだ… ttp://blog.norrisboyd.com/search/label/rhino
264 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:08:11 ] SpiderMonkey の 1.8 が出てからじゃない?そうでないと仕様確定できないとか? Fx 3.0.* が結構出てからでしょ。 developer.mozilla.org/en/docs/New_in_JavaScript_1.8 もまだいまいち、JSON, Slice Syntax は js には入ってないし、 https://bugzilla.mozilla.org/show_bug.cgi?id=404734 が入ってない。
265 名前:sage mailto:sage [2008/06/29(日) 22:55:41 ] tamarin付属のescにて、 es> eval("2/1"); SyntaxError: (EVAL CODE): Binding form not legal: {/*NamespaceFixture*/ 'ns': {/*InternalNamespace*/ 'name': '<#internal (EVAL CODE)>'}} となるのはなぜですか?
266 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 23:43:48 ] まだ文法パースすら出来てないんじゃない? RIもそんな感じだし。
267 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 00:03:49 ] 文法ころころ細かく変わってるからおかしくなるのは仕方ないんだけど、 数値まわりは lexer がおかしいのかも。 RI-M2 で function test2d {...} とやったらエラー出たのはびっくりした。 (2d で数値リテラルと解釈したらしい、なんじゃそら)
268 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 15:03:08 ] >>267 function test2d() { ... } じゃないんですか。
269 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:32:35 ] >>268 typo った。スマン
270 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 23:17:16 ] 無名関数を #(x,y)と書く処理系があったのですが、他でも同じように書いて動くのでしょうか?
271 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 23:24:58 ] 初めて聞いたkwsk
272 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 13:13:42 ] 右シフト演算子、「符号ありが >> で、符号なしが >>>」に 決めたのはなぜだろう。 「符号なしが >> で、符号の分を更にシフトする方が >>>」って考えると しっくり行くのに。っつーかそう誤解してた。 更に、逆に解説してるサイトもある。
273 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 13:56:35 ] >>272 符号の分をさらにシフトすると何がうれしいんだい?
274 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 14:13:07 ] >>273 質問の意図がよく判らないけど、 負の数を負のまま扱えるから嬉しい。 算術シフトの名の通り。
275 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 14:25:28 ] >>274 負の数のまま扱いたければ、普通に算術シフトを使う処理系で>>すればいいだけ。 何かカンチガイしてないか?
276 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 15:20:24 ] よく判らんなー。 元々は>>272 の「>>と>>>を誤解してる人がいる」って話なのに、 >>273 が「何がうれしい」と謎の質問をしてるのが、こじれの発端だ。 嬉しい/嬉しくないっていう評価軸の話は元の質問には無関係。 >>275 も何か変な事を言ってる。 算術右シフトも論理右シフトも、ECMAScriptの話であって、 「そういう処理系で」って話は、どう飛躍してるんだ。
277 名前:272 mailto:sage [2008/07/07(月) 15:26:46 ] 何か話がややこしく(?)なった様で申し訳ない。 >>273 ビット操作物を書いてる時に、論理シフトを期待して>>を使ったら MSB=1の時に意図しない動作をしたのが発見の経緯だったので、 「符号をシフトされて(私個人が)嬉しくなかった」という話。 で、>>と>>>を今の様に割り振った理由を知りたいな、と。
278 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 15:58:02 ] 別に理由なんかないと思うがな。最初にそう決めたからそうなんだろう。 数学で足し算の記号に「+」を割り振ったのはなぜか? とかいわれてもそう定義したからとしか言いようがなくね?
279 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 16:46:53 ] 単に慣例に従っただけってのが大きいと思うよ d.hatena.ne.jp/ryocotan/20070929/p1
280 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 17:43:26 ] 前例があるんじゃ、そりゃ従うわ。 でも>>272 の >「符号なしが >> で、符号の分を更にシフトする方が >>>」って考えると >しっくり行くのに。 はよく判る。 で、>>273 は何を訊きたかったんだろう?
281 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 17:46:03 ] 単に茶々入れたかっただけだと思うけどな
282 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 18:01:01 ] Number型は符号付きだから、 >>が算術シフトで、>>>が論理シフトである方が自然。 C言語でのsigned int + >>の多くの実装(ただし仕様的には未定義動作)と合致してる。
283 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 18:38:19 ] たぶんECMAScriptが慣例にあわせてるってのはわかってて聞いてるんだと思うんだけど… 数値型に対する演算子なんだから算術シフトの方が自然な動作で 論理シフトの方が例外的な振る舞いだよな… 「符号の分を更に…」って感覚はちょっとわからないな… シフトしてるビット数は算術のほうが少ないわけだし
284 名前:283 mailto:sage [2008/07/07(月) 19:18:50 ] なんか違うなw シフトしてるビット数は同じで、「最上位ビットを0にする」っていう処理が 追加されたのが論理シフトなんだから「符号の分を更に…」って感覚は よくわからんと言いたかった。
285 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 19:33:44 ] >>280 いや、MSBを保存することを「更にシフトする」という言い方では普通は理解不能だろ。 俺もわからんかった。普通の算術シフトの後にもう1回シフトするのかと思ったよ。
286 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 19:50:15 ] >>284 わざわざ「最上位ビットを0にする」って訳じゃない。 左シフトだって、別に最下位ビットを0に「する」んじゃない。 アセンブラ経験者だと判ってくれるかな。 シフトは、左、右、算術右で、 論理型がデフォ、算術は敢えて明示するみたいな。
287 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 00:07:50 ] 間違った自分はバカじゃないと同意してほしいわけですね、わかります。
288 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 03:22:22 ] 結局、なんで「さらにシフトする」なんて言ったのか、ワケワカランと思うのは俺だけか? 自称よくわかった人が複数いるみたいだからw、教えてよ。 算術シフトのどこがどう「さらにシフトする」ことになるのか。
289 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 08:10:19 ] 「更にシフト」じゃなく、「更にひと手間」だな。
290 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 09:07:18 ] 更にひと手間つーか、MSBをイジらないだけじゃん。全然手間じゃないよ。
291 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 10:17:28 ] 元の奴の感覚は判るが、言葉が悪い。 動作で<<と(空き位置に0が入るという)対称性があるのは>>>だが、 見た目の対称性は<<と>>だから、違和感がある。 と書けばよかった。
292 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 10:17:37 ] 符号「拡張」っていうくらいで、 nビット(n>1)シフトする時は、 上位nビットに補填するけどな。 (いまどき1ビットづつシフトしない)
293 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 10:20:01 ] >>291 無理やり論理演算の視点になってるよ。 *2, /2だという算術演算の視点なら逆だ。 プログラマは暗黙の仮定に拘泥してはならない。
294 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 13:46:11 ] >>293 無理やりも何も、シフトは論理演算でしょ。
295 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 13:54:51 ] シフトはビット演算です。 11.7 Bitwise Shift Operators 11.7.1 The Left Shift Operator(<<) >>は符号付き算術演算です。 11.7.2 The Signed Right Shift Operator(>>) >>も符号なし算術演算です。 11.7.3 The Unsigned Right Shift Operator(>>>)
296 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 14:02:04 ] >>293 なまじ*2、/2の代用になってるからなー。 っつーか、この発想こそアセンブラだ。 なのにアセンブラ的発想は少数派になってる不思議。
297 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 14:22:08 ] C/C++みたいにbit長も内部表現も仮定しない仕様を持つ言語の「仕様を」知っ ている人と、Java,Javascriptのようにbit長規定、内部表現も暗に仮定し ている言語しか知らない人では、かなり温度差があるんじゃないでしょうかね。 前者は、言語習得時に仕様を確認する習慣があると思います。仕様を確かめな い感覚派は、アセンブラ知っていればこう考えるはずと、自分の感覚に陥って しまうんじゃないでしょうか。
298 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 15:15:53 ] ビット演算で32ビットに丸められるのは、レジスタ幅等の効率の面から判るんだけど、 整数リテラルの±2^53って、どういう根拠なんだろう。 IEEE754の64ビット表現だと、仮数部は52ビットだし。
299 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 16:08:22 ] 仮数部52ビットの上に、見えない1が立ってるからでは?
300 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 16:32:06 ] 本当にアセンブリ言語を知ってる人ならば符号付き演算と符号無し演算に最低限の注意は向けるはずです。 変な思い込みで符号に注意を向けない人は、生兵法でアセンブリを使っている人でしょう。
301 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 17:15:40 ] >>299 あーそっか。俺バカ。
302 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 17:16:55 ] >>300 最初のネタに戻ると、間違えて逆に解説してる本やサイトがある。
303 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 22:35:02 ] そりゃ注意はしてても、まさか演算子の動作を逆に解説してるとは思わないよな。 複雑な関数やバグの確認ならともかく、演算子を事前にテストしてから使う様な事はしないし。
304 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:38:29 ] Webのクソみたいな解説サイトとかあてにしてたらダメだろ 書籍で間違った解説してるものがあるなら被害者を減らすためにも書名を晒すべき
305 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:45:52 ] 今なら乗除はコンパイラ任せの*/で良いね。シフトはunsignedだけで良いんじゃね?
306 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:49:18 ] コンパイラの意義は抽象化にあるんだから、 シフトはビット操作にだけ使うべきでしょ。 符号の有無じゃなく。
307 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:58:03 ] My UNIX Series 『入門 JavaScript』、久野靖、アスキー P.43 ■2項演算子 〜(中略)〜 ●<<、>>、>>> 左シフト、右シフト、算術右シフト。 奥付では初版。 以降の版で直ってるかは不明。
308 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 00:27:41 ] まさかだけど、==と===みたいに 途中で意味が入れ替わった訳じゃないよね?
309 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 09:58:00 ] あれは痛かったなw
310 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 10:27:43 ] >>308 revision 1の仕様書を読んだが、 The left shift operator ( << ) The signe3d right shift operator( >> ) The unsigned right shift operator( >>> ) というわけで、変わってはいないようだな。 久野さんにしては珍しいチョンボだね。
311 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 12:04:33 ] 久野さんって、fjでお馴染みの、 高校の情報の教科書を書いてたりする人?
312 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 13:15:28 ] fjナツカシスw
313 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 18:53:58 ] ES4では、byte型、int型, uint型が増えますが、 shift演算子の意味はES3のままのようですね。 少なくともtamarinでは、今のところそう実装されています。
314 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 19:25:44 ] だからなに?
315 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 19:46:11 ] つ お知らせ
316 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 23:54:34 ] random seed ってないのね。 まったく同じ乱数列をもう一度再現したいんだけど、 自前でそういう乱数を持つしかないか。 そういや、seed を2回設定すると 副作用で時刻が得られる言語があったよね。
317 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:48:57 ] >>313 > ES4では、byte型、int型, uint型が増えますが、 byte 型は× bugs.ecmascript.org/ticket/234 https://mail.mozilla.org/pipermail/es4-discuss/2008-March/002547.html int, uint 型も多分× bugs.ecmascript.org/ticket/371 AS(Tamarin) は独自拡張として残すんだろう、多分。
318 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 10:01:48 ] tamarinは、ES4モードじゃなくてASモードの時だけ 既存のint, uintを有効にするんじゃないかな。 ES4のint, uint除外は最近のことなので、 // lib-march-2008に関連ドキュメントも至急削除のコメント tamarinはまだ追いついてないと思う。
319 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 10:20:45 ] >>316 awkだ。 srandすると、現在時刻がseedになる。 もう一度srandすると、前のseedを返す。
320 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 12:37:48 ] 仕様変更しすぎだな
321 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:01:36 ] Number型、桁あふれで内部で勝手にfloat, doubleに昇格されると、 疑似乱数生成のアルゴリズム実装に神経使うよなあ。
322 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 03:24:05 ] var a() = function { this.b = function() {} } を、prototypeを使って書き直す場合、どうやって書けば良いのでしょうか?
323 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 03:29:37 ] なんだそりゃ var a = function() { }; a.prototype = { b: function() { } };
324 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:29:38 ] >>322 一応言っとくが>>322 と>>323 のコードは等価じゃないぞ。
325 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:07:23 ] 誰が等価なコードを望んだんだろう
326 名前:デフォルトの名無しさん [2008/07/18(金) 05:17:50 ] aを実行しちゃっててわろた
327 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 14:56:37 ] var o = new Object(); o.f = function() { return; // 内容は何でもいい } // ←ここにセミコロン (function() { void 0; // 内容は何でもいい })(); このままだとエラーで、o.f に代入する関数リテラルの最後にセミコロンを付けると問題ない。 ここは暗黙で文の区切りにならない?
328 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 16:47:10 ] ならないからエラーになるんじゃないかな。 とりあえず{}かfuncton() {...}に対する関数呼び出しとして扱われてるはず
329 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 19:35:26 ] 暗黙な 文の区切りなんて obsolete ね いつか動かないはずのコード
330 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 01:43:38 ] というか仕様書読み直して来い どの識別子が終端文字とみなされるか調べて来い
331 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 16:05:45 ] >>321 uintは欲しかったな。 ハッシュ計算、疑似乱数、ビット演算用に。 ブラウザ専用言語だと需要が少ないところだろうが。