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/
82 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:02:47 ] 現状のECMAScriptの仕様にはメソッドなどないと。 第4版には盛り込まれてるけどな。
83 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:53:49 ] 関数オブジェクトと関数リテラルならあるけど。 でも結局プロパティに突っ込む。 てか、仕様書嫁。
84 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 11:35:19 ] Javascript1.7が楽しい。Pytnonからyieldとリスト内包をパクってきた んで非常に面白い言語になってる。インデントを強制されるPythonは 個人的につかう気にはならんがjs1.7はその代替になるね。 しかし、rangeは標準で入れておいて欲しかったな・・・
85 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 11:44:45 ] うん、クラスもプリミティブ実装になって、 他のscript言語を駆逐する可能性あり。 Webブラウザが味方だし。 後はCPAN相当の構築。 namespaceとpackageがあるから容易と思われ。
86 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 16:46:53 ] そういや外部ライブラリを読み込む記法って標準化されるのかな。 教えて詳しい人
87 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:28:52 ] 標準ならば、unit つかうことになるんでねーの wiki.ecmascript.org/doku.php?id=proposals:program_units AS3か4がどーするかはわからんけど。
88 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 20:47:36 ] >>87 ありがとう。 外部ライブラリっていうか、外部のソースを読み込む方法について聞くつもりでした。 どちらにせよ、use使えばいけるのね。 早く使ってみたい。
89 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 21:41:20 ] >>85 >後はCPAN相当の構築。 取り敢えず Python の標準ライブラリを一つずつ ECMAScript にポーティングしていけば良いのかな
90 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 07:23:49 ] 1.7つかってみてぇ!っておもったけど FireFoxだけっすか
91 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 11:27:22 ] rhinoがあるよ
92 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 12:05:23 ] rhinoは1.6です。
93 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 12:06:48 ] ftp://ftp.mozilla.org/pub/mozilla.org/js/
94 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 12:21:15 ] Rhino 1.6.R6 とかで JavaScript 1.5 機能が入ったりしてるし Rhinoのバージョンと JavaScript のバージョンって完全一致してるわけじゃないよね? そこに置いてある rhino1_7R1pre.zip は JavaScript 1.7 相当なの?
95 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 12:40:16 ] DIY, RTFM Do It Yourself, Read The Fucking Manual
96 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:08:50 ] js1.7相当の実装は今のところspidermonkeyだけ。
97 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 21:24:28 ] さすがリファレンスインプリめんてーしょん
98 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 22:18:55 ] というかjs1.6はspidermonkeyのGCバグフィックスとArrayオブジェトにプロパティ増やしただけのメンテナンスリリースだからな。 rhinoの方はconstとか実装してなかったから1.6相当になったのもつい最近。
99 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 23:11:37 ] >>98 前スレでも同じような話が出てたが、JS1.6が"1.6"というバージョン名を 持つにいたった最大の理由であるE4Xを忘れてもらっては困るな。 まあJS1.5.1となっていた可能性もあるわけだから メジャーバージョンアップとも言い切れないのかもしれないが。 https://bugzilla.mozilla.org/show_bug.cgi?id=304828#c51 しかしGCバグフィックスがJS1.6の主機能の一つって言うのは どこから出てきた話だ?GCがらみの修正なんてそれこそ Mozilla 0.6からMozilla 1.7にわたる長いJS1.5の時代にも JS1.6になって以降も繰り返されてることだろうに。 その話の根拠となる文書またはバグを示してくれるとありがたいんだが。
100 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 23:16:49 ] E4Xはもともとrhinoで実装されてたしなぁ。
101 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 09:57:17 ] あけましておめでとう spidermonkeyをみなおしたおれがいる
102 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:26:18 ] 板違い&重複のjavascriptスレに抜かれそうな勢いとは皮肉だな。
103 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 11:05:11 ] spidermonkeyのライセンスってGPLかいな
104 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 11:38:34 ] ***** BEGIN LICENSE BLOCK ***** Version: MPL 1.1/GPL 2.0/LGPL 2.1
105 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:05:07 ] Javascriptを勉強しようと思っているのですが、チュートリアル的に使えるオススメのサイトってありますか? テキストなどを処理するためのスクリプトを書いたり、将来的にはSilverlightでGUIアプリケーションを作りたいと思っていますが、 検索してもHTML埋め込みでの解説ばかりで困っています。
106 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:33:58 ] 埋め込み以外でガチでJSを知りたいならサイ本買えば。
107 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:42:40 ] まあサイ本だな。 どうしてもWeb上でチュートリアル的なものをというなら MDCのCore JavaScript 1.5 Guideあたりか。
108 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:43:12 ] やっぱり定番はオライリーですか……。 Webで気軽に勉強というわけにはいかないみたいですね。 ありがとうございました。
109 名前:105,108 mailto:sage [2008/01/19(土) 22:46:52 ] >>107 MDCは求めていたものと少し違いますが、仕様が一覧で見られるだけでも大分わかりやすいです。 しばらくこれを見ながら勉強してみようと思います。 ありがとうございます。
110 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:57:08 ] ちゃんと言語としてJavaScriptを知るにはO'Reillyの本が一番いいよ。 はっきりいってWebで検索するよりずっと手軽かつわかりやすく効率いい。
111 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 15:22:59 ] なあ、全然プログラム解らない俺に教えてくれよ 昔、PC98にはRomBasicが乗ってて、簡単なプログラムとかが直ぐに出来たんだが、 同じ事をしようとして、VBSってのをかじってみたけど、MSはVBSの開発を中止したみたいだし、 で、くだらない質問だけど、バカにしないで教えてください。 Q1)最新のVisualStasio2008には、Jscript8.0ってのがあって、VBSとは違って開発・発展が継続してるようなんだが、 このJscript は、msdn2.microsoft.com/ja-jp/library/xkx7dfw1.aspx によるとコンパイルして実行するように書かれていて、 テキストファイルのままコンパイルせずに、 WSH とか ブラウザで気楽に実行できなくなったの? 以下スレ違いだけど、アドバイス頼みます。 Q2)昔のPC98に乗ってたRomBasicみたいに、気楽にどこでも簡単なプログラミングって目的の時は、 JAVAscriptが良いの? 他になにかお勧めはないですか? Q3)Windows Power Shell ってのを覚えると、上記の目的に合致しますか? Q4)VisualStasio2008Express のVisualBasic を使えば、VBS見たいにコンパイルしなくても気楽に実行できる、プログラムできますか?
112 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 15:41:03 ] >>111 A1. そのとおり。JScript.NETからはコンパイル必要。 A2. 昔のBasicやってんならHSPでもやってみたらどうか。ちょっと頑張ってVBAでもいんじゃね? A3. PowerShellは結構ありな選択肢だと思うよ。 A4. できません。VBもコンパイル必要。 結果的にスレ違いになるから続きは「くだらない質問はここにスレ」あたりにでも行ってな。
113 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 15:44:52 ] >>112 ありがトン
114 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 01:01:43 ] javascriptは関数型パラダイムにプロトタイプベースだから気軽には始められないと思うが・・・。 最低限、プロトタイプチェーンとコンテキストチェーン理解してないと言語仕様に付いていけないと思う。 後、勉強ならecmaの言語仕様とサイ本で十分。 まあ、どっちにしろjavascript2.0が出たら皆勉強し直しだしなぁ。
115 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:12:32 ] 関数型的要素は意識する必要ないべ それに、既に多くの人間が気軽に使っていると思うけど
116 名前:111 mailto:sage [2008/01/22(火) 18:47:11 ] 親切な方、もう一つ教えてください。 Q4)ECMAScriptを覚えたら、どのWindowsPCでも、計算とか簡単なプログラム作って走らせたりできますか? 何か別にコンパイラとかインタプリタとか入れなくても、ネットカフェとか友人のPCとかでも、Windows標準状態でできますか?
117 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 19:19:10 ] >>116 とりあえずWSHやHTAなら大抵のWindowsPCで動くんじゃないか?
118 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 19:21:09 ] JScriptとJavaScriptでは変数のスコープの扱いがすこし違うくらいか
119 名前:111 mailto:sage [2008/01/22(火) 20:08:38 ] ありがトン
120 名前:デフォルトの名無しさん [2008/02/07(木) 04:24:44 ] web上の文献を読んでいたら、global スコープでの var 宣言がほとんど無意味なように感じたんですが、 global スコープでは var をつけて変数を宣言するのは無意味ですか?
121 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 04:47:41 ] 処理系にとっては無意味でも人間にとっては意味あるでしょう。
122 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:30:18 ] var付けないとコンテキストチェーンたどって変数探す処理が含まれるから挙動は違うと思うんだが。
123 名前:デフォルトの名無しさん [2008/02/12(火) 09:27:08 ] win = window.open(...); win.scrollBy(0,100); みたいにサブウィンドウを作って、それを親から操作することは出来ないんでしょうか?
124 名前:デフォルトの名無しさん [2008/02/12(火) 13:48:58 ] 板違い
125 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 10:07:18 ] 文字列リテラルで、Unicodeのコードポイントを "\uXXXX"で指示できるけど、これはBMP内まで?
126 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 11:52:16 ] >>125 うん。16bit まで。 www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/6_Source_Text.html#section-6 liosk.blog103.fc2.com/blog-entry-72.html の [追記] 将来(ES4)に関してはこの辺 wiki.ecmascript.org/doku.php?id=proposals:update_unicode https://bugzilla.mozilla.org/show_bug.cgi?id=320500
127 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 17:23:45 ] >>126 サンクス。 手元の処理系だと、サロゲートペアで処理されてた。
128 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:01:51 ] "abc123def".search(/[0-9](?=[^0-9])/); // = 5 "abc123def".search(/(?=[^0-9])[0-9]/); // = -1 前者は期待通りですが、後者がマッチしない理由がわかりません。 3 を期待したんですけど。
129 名前:128 mailto:sage [2008/02/16(土) 23:13:41 ] ttp://www.kt.rim.or.jp/~kbk/regex/regex.html#POSITIVELOOKAHEAD むー、(?=〜)は前置できないのか。
130 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:05:38 ] prototype.js ってどのへんが便利なの?
131 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:11:13 ] ES4がなくてもクラスを使える。
132 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 08:00:08 ] 見た目クラスなだけだろ
133 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 10:46:22 ] lispのマクロに相当することってできるの?
134 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 14:56:25 ] lips マクロでググッたらキャノンのページ記述言語が出てきたんだが lipsってあのlipsだよな?マクロなんてあったのか。
135 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 15:12:32 ] Nice joke!
136 名前:sage [2008/02/26(火) 20:54:00 ] ものすごい記述方法を発見した!! Date.call.call("".replace, " TRIM ", /^\s+|\s+$/g, "") これなにしてるかわかるか! 使おうとは思わないけどすごいね この記述はもう知られてるの?
137 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:20:07 ] callってes4でなくなるんじゃなかった?
138 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:01:39 ] なくなるどころか汎用メソッド化されるぜ >>136 は Function.call(String.prototype.replace, " TRIM ", /^\s+|\s+$/g, "") String.replace(" TRIM ", /^\s+|\s+$/g, "") などと書けるように 後者はすでにJavaScript 1.6で可能になってるけどね
139 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 14:23:21 ] どうすごいの?単なるトリムなんだけど。
140 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 16:41:48 ] 任意のコンテキストで関数呼んでる。 invokeみたいなもん。
141 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 19:40:33 ] [].slice.call(arguments)とかarray.push.apply(array, arguments)とかならたまに見るな。
142 名前:sage [2008/02/28(木) 00:58:02 ] ちょい脱線するけど [].slice.call(arguments) より Array.apply(arguments) のほうが好き
143 名前:sage [2008/02/28(木) 01:00:17 ] ミスった無駄にスレ消費して恐縮です。 Array.apply(null, arguments) と言いたかった
144 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 05:58:24 ] 引数の数が1つでその値が数値である、ということが 絶対ないと保障されているならそれでもいいね。 だがその前にsageを覚えろ。
145 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 06:17:55 ] 別に下げんでもいいよ 荒らしや厨が入ってくるわけでもないし
146 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 22:28:12 ] あらしです
147 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 01:56:46 ] ムーンサルトり乙
148 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 13:05:10 ] >>136 知られてるというか、そういうトリックを理解してないと今時のJSコード読めないお。 ↓こんな遊びとか d.hatena.ne.jp/amachang/20060811/1155317697
149 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 13:07:26 ] gotoスパゲッティや継続スパゲッティと一緒で理解する必要はないかと。 単なる遊びだから。
150 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 13:08:56 ] まあcall.callは有用に使われてるの見た事ないね
151 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 13:40:31 ] callee.callerの方が使える。
152 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 15:19:40 ] callを覚えたてのやつが誰もがやる遊びだが実用性は皆無
153 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:14:28 ] 再帰で、関数名が変わってもいい様に arguments.callee.call()にした事はある。
154 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:50:18 ] バッド・ノウハウの塊だなw
155 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:36:46 ] 俺の知ってるバッドノウハウ var o = {valueOf:function(){return 0;}}; ++o
156 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:32:07 ] それはバッドノウハウではなく「遊び」のような気が。
157 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:09:24 ] もうちょっといじればジェネレータだ
158 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 00:53:48 ] JavaScriptで、JavaScript処理系は作れるのかな。
159 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 01:06:10 ] あるよ。ググッてみて。
160 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 05:02:10 ] あるんだ。 柔軟な言語だしな。
161 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 07:03:00 ] tamarinが自己完結コンパイラじゃなかったっけ?
162 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 11:24:14 ] >>153 そゆときは本体関数の内側にクロージャを書くかな。 初期化や終了処理も追加しやすい。
163 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 11:36:30 ] >>161 あれはプロトタイプであってAdobeが使っていたものとは違うけどね。 けどかなり大きな本格的な実装。 > A partial implementation of a prototype compiler written in > ActionScript, which will be developed by the open source community to > implement all of the ECMAScript 4th edition specification. This will > be a "self-hosted" compiler that is written in the language it compiles. www.mozilla.org/projects/tamarin/faq.html
164 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 11:41:50 ] つ hg.mozilla.org/actionmonkey/
165 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 13:29:38 ] むしろこっち mxr-test.landfill.bugzilla.org/tamarin-central/source/esc/ This directory contains code for an ES4 compiler for tamarin written in ES4.
166 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:00:18 ] ecma-262やjavascriptでカリー化ってどうやろう? 数学的に考えてカリー化できればラムダ式使って関数宣言なしに全コード書けると思うんだけど。
167 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 01:49:57 ] d.hatena.ne.jp/m-hiyama/20051213/1134446855 d.hatena.ne.jp/kilrey/20051213 nanto.asablo.jp/blog/2008/02/14/2626240 blog.livedoor.jp/dankogai/archives/51002542.html この辺で<カリー化 実用上は部分適用で十分な気がするけども。
168 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 14:34:06 ] >>167 便利だね pythonが便利なモジュール沢山あるからそっち行ってしまったけど c++に慣れている人にはこっちの方が書きやすい
169 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:30:47 ] カリー化とラムダ式オンリーだと書いてて楽しいじゃないか。 ブックマークレットでも使えるし。 Rhinoのes4実装まだ〜?
170 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 12:15:36 ] es4はプロトタイプ言語の特徴を無視してる感じで嫌いなのは俺だけ?
171 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 13:31:22 ] 俺は好き。
172 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 14:56:57 ] >>170 俺も3の方が好きだ。 同じ言語だと思うから嫌いとか思うわけで もう完全な別言語だと思うといいと思うよ…
173 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 15:12:23 ] ECAMScript4はpackageが入ったから、 CPANみたいなのができて大爆発だと思う。 perl6はもちろんruby, pythonも食っちゃうかも。
174 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 17:22:20 ] それはないな。 俺もes4より3の方が好き。 es4はプロトタイプである必要性がない。 演算子オーバーロードも要らない。可読性が落ちる。 ライブラリがでかすぎるのも実装するとき問題になると思う。 仕様が巨大すぎてwebでの要求以上のものをやっちまった感があるんだよなぁ。 学習面でも大変だし。 これがデスクトップアプリケーション作るための言語ならこれくらいの仕様で良いんだが・・・。
175 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 17:50:37 ] 逆に必要ないのはes3にしがみついているプログラマになってきちゃった…
176 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 21:09:40 ] HTML5と絡んでWebアプリケーションを作るための言語にしたいんじゃないの。
177 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:13:42 ] ES3のプロトタイプ指向のシンプルな美しさがES4には無いね。
178 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:12:53 ] >>117 だからといって、 javascript.crockford.com/recommend.html wiki.ecmascript.org/doku.php?id=es3.1:es3.1_proposal_working_draft これもあんまり。部分的にはいいとこもあるけど、なんかいいかげんで。
179 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 08:15:31 ] クラス使いたければJavaのアプレットでも作ってろっての。 JS/ESは言語仕様の無軌道な拡張よりも処理系の実装の改善をしていってほしい。 言語仕様をいじるのは、せめてpythonと比較になるぐらいの速度が出てから。
180 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 09:24:06 ] つ>>164
181 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 10:33:36 ] >プログラミング言語について語るときに仕様と実装という区別のついてない人が多すぎる。 ttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/gauche-night-again
182 名前:179 mailto:sage [2008/03/16(日) 11:13:41 ] >>181 実際問題として仕様と実装の区別を間違えているのがes4のstatic typingを始めとする パフォーマンス向上のための言語仕様拡張でしょ。 それよりも、パフォーマンス向上は実装の問題として扱って、 せめて他のdynamic typingな言語の処理系のパフォーマンス程度にマトモな処理系を 実装/普及させるのが先だろ、というのが>>179 の主旨。わかりにくてスマソ。