ECMAScript デス 3
at TECH
[前50を表示]
200:デフォルトの名無しさん
08/03/17 02:45:06
Javascript 1.0になった時点で、
SunのSelfベースの言語になっているはずだけどな。
まだprototypeの機構を全て揃えてなかったのかも。
201:デフォルトの名無しさん
08/03/17 08:42:26
Live Documentのこといってんじゃないの?
202:198
08/03/17 13:15:28
>>199
prototype は Netscape 3.0 からじゃなかったかなーと記憶してたもんで、ありがとう。
んでちょっと調べてみた。
URLリンク(web.archive.org)
Netscape 2 からの変更
URLリンク(web.archive.org)
JavaScript 1.1 の prototype の説明
JavaScript 1.0 の文書は見当たらないけど、やっぱり Netscape 3.0 からっぽい。
で、Netscape 2.0 のインストーラ(n32e20.exe)探して、入れて確認したら、
javascript:function Foo(){};Foo.prototype.hello="hello";o=new Foo();alert(o.hello)
JavaScript Error:
prototype has no properties
だった。やっぱり 1.0 だと prototype 無いのね。
function 使ったユーザオブジェクトの生成はできたけど。
javascript:function Foo(name){this.name="2chneller"};o=new Foo();alert(o.name) // 2chneller
203:デフォルトの名無しさん
08/03/17 13:46:07
>>179>>182
URLリンク(mozillalinks.org)
実装も速くなってる、python 並みかは知らないが。
204:デフォルトの名無しさん
08/03/17 13:49:57
昔はprototypeは関数コンストラクタがnewされた後に作られた。
function obj{
//hoge
}
a = new obj():
a.prototype.foo=function(){//hoge}
------------------------------------
関数オブジェクト.prototype = hogeはエラー。
インスタンス.prototypeは可能。
javascript1.2までこのルールで1.3でecma-262準拠になって
関数オブジェクト.prototype = hogeが許されるようになった。
205:198
08/03/17 16:47:14
そのようで
------
function Foo(){}
o=new Foo() //*1
Foo.prototype.hello="hello"
o=new Foo()
alert(o.hello)
------
Netscape 2.0 -> Error: prototype has no properties
Netscape 3.0 -> ok: hello
*1 の行がないと Error: Function.prototype has no property named 'Hello'
Netscape 4.0(js1.2 だよね。not 4.06以上) だと *1 なしでもいけるけど、
プラットフォームによるかも。やってみたのは全部 win32
Ajax 以前というか Netscape4 までのネスケ全盛時代はあんまり
prototype 使ってなかったと思うんだけど、納得。
206:デフォルトの名無しさん
08/03/20 14:12:30
nn4.0はjs1.3だぞ
207:デフォルトの名無しさん
08/03/20 20:06:48
NN4.0〜4.05 - js1.2
NN4.06〜NN4.xx - js1.3
だと聞いてるんだけど。
URLリンク(www.din.or.jp)
とか
208:デフォルトの名無しさん
08/03/23 14:25:10
3月頭にRhino1.7R1が来たけどここであがってないね。
debuggerキーワードが有効になってイテレータ・ジェネレータが使えるようになったけど
SpiderMonkeyでもまだ1.7は浸透してないかな。
なんかPythonぽくなってきたね。
209:デフォルトの名無しさん
08/03/23 16:26:50
>>208
気づいてなかった
letも実装されてるみたいだし
これはいいね
210:デフォルトの名無しさん
08/03/23 21:26:56
次の問いに答えなさい。
new function() {
var window = {window:null};
// ここでGlobalオブジェクトであるwindowを取得しなさい。(10点)
}
灘中学入試問題 2008年度
211:デフォルトの名無しさん
08/03/23 22:04:45
ブラウザの実装は板違い
212:デフォルトの名無しさん
08/03/24 18:05:15
1.7すごいな。フィボナッチ数列が恐ろしく簡単にかけるぞ。
function fib()
{
var [a, b] = [0, 1];
while (true) {
yield b;
[a, b] = [b, a + b];
}
}
var f = fib();
// 100 以下のフィボナッチ数を表示
for (let i in f) {
if (i > 100) break;
print(i);
}
213:デフォルトの名無しさん
08/03/25 00:16:15
今頃どうしたんだ? 1.7の新しい処理系でも出た?
214:デフォルトの名無しさん
08/03/25 01:01:12
>>213
>>208
215:デフォルトの名無しさん
08/03/29 02:55:35
greacemonkeyで1.7が動いたらいいなあ
216:デフォルトの名無しさん
08/03/30 07:54:02
>211
そんなの書いたら構文エラーです。
正解は
valueOf();
もしくは
eval.call(null,"this");
他にもあるかもしれません、さすが灘中学
217:デフォルトの名無しさん
08/03/30 10:56:50
板違いが理解できん馬鹿は消えろ
218:デフォルトの名無しさん
08/03/31 00:59:46
eval.call
これはダメだろ?
219:デフォルトの名無しさん
08/03/31 11:22:25
そういう細かいこといいだしたらブラウザの実装はGlobalオブジェクトが複数ある時点で仕様満たしてないとか色々突っ込みどころがある。
220:デフォルトの名無しさん
08/03/31 11:23:21
このスレは細かいところいっていいんじゃない?
221:デフォルトの名無しさん
08/03/31 12:36:31
eval.call(null,'this')はECMA的に言っても駄目だろ。落第。
222:デフォルトの名無しさん
08/03/31 14:19:27
>eval.call(null,'this')
まあこれは力技のひどいコードであることは違いないけど
223:デフォルトの名無しさん
08/03/31 14:41:03
力技とかじゃなくて、それでGlobalとれたらECMA違反
224:デフォルトの名無しさん
08/03/31 16:57:00
>>216
対象がブラウザっぽいのにどっちもIEで動かないので落第です先生。
(function(){ return this })();
225:デフォルトの名無しさん
08/03/31 17:03:04
JScriptはそもそもコンテキスト周りEcma満たしてないよ
226:デフォルトの名無しさん
08/03/31 17:06:04
RhinoはトップレベルコンテキストからGlobalでアクセスすると取れるんだよね。
var foo = new Global();なんてやると・・・
227:デフォルトの名無しさん
08/03/31 21:43:39
>>221
どこがだめなん?
15.1.2.1を読む限りでは直接呼出し以外をエラーとするのは
mayであってmustではないようだけど。
228:デフォルトの名無しさん
08/03/31 23:36:47
10.2.2
229:デフォルトの名無しさん
08/04/01 00:27:17
var a = this;
var b = eval.call(null, 'this');
var c = a == b;
cがfalseになることがある実装はECMA-262 3rdに違反。
cがどんなときもtrueになる実装はECMA-262 3rdに違反してない。
bの行で例外が投げられる実装もECMA-262 3rdに違反してない。
だよね。
230:デフォルトの名無しさん
08/04/03 18:59:10
おまいら、オレの理解を超えた会話はするな。これは命令だ。
231:デフォルトの名無しさん
08/04/03 20:08:48
>>230
理解できる範囲を明示してくだしあ><
232:デフォルトの名無しさん
08/04/03 20:21:44
print('hello, world');
233:デフォルトの名無しさん
08/04/03 22:03:06
>>230
その命令は、どのコンテキストで実行する?
234:デフォルトの名無しさん
08/04/03 22:13:58
ここじゃね?
eval.call(null, 'this');
235:デフォルトの名無しさん
08/04/10 21:32:53
正直1.6以降ついて行けませんってのどれくらい居る?
236:デフォルトの名無しさん
08/04/11 15:38:09
ECMAScript 1.6 ですか?
237:デフォルトの名無しさん
08/04/11 20:06:42
ついていけないっつーか、
いつになったら新しい機能を使ってもいいか
タイミングをはかりかねている。
238:デフォルトの名無しさん
08/04/11 20:26:02
ローカルならいいけど、
やっぱ公になってるWebでは使えないよな。
あと3年くらい?
239:デフォルトの名無しさん
08/04/12 03:20:12
最長一年半じゃない?
ブラウザをアップデイトしない選択肢はないから。
240:デフォルトの名無しさん
08/04/12 07:31:57
>>239
いや、結構古いまま使ってる人多いよ。
241:デフォルトの名無しさん
08/04/12 10:19:39
うちのアクセスログ、今でもIE5とかある。
242:デフォルトの名無しさん
08/04/12 11:53:15
>>241
NS4.7とか言うのもまだあったりするからなぁ
243:デフォルトの名無しさん
08/04/12 11:55:04
IEなんて2のころからまともに使ったことないが
シェルに食い込んでるからバージョンアップだけはやってるな。
244:デフォルトの名無しさん
08/04/12 18:02:45
マルチプラットフォームに使えるgeckoとwebkitとoperaだけ確認しておけばok。
245:デフォルトの名無しさん
08/04/12 18:15:22
IEはどのみちJavaScript動かないしね。
246:デフォルトの名無しさん
08/04/12 20:37:03
JScriptってコンテキスト周りでecmaすら満たしてなかった気がするが
247:デフォルトの名無しさん
08/05/07 20:28:36
es4はどうよ?
俺は正直イラネ
248:デフォルトの名無しさん
08/05/07 21:41:59
ActionScript同様に扱える予定なんだろ、方向性自体は悪くないんじゃね?
まあ現物見てみないとアレだが、長い目で期待してるよ
どうせIEでも使える日は当面来ない
249:デフォルトの名無しさん
08/05/07 23:35:02
>>247
別の言語だと思ってるので遠くから見てる。
>>248 も言ってるようにWebで使いものになるのは当分先だろう…
250:デフォルトの名無しさん
08/05/08 06:15:58
es3のほうが言語として美しい。es4はキメラ化した愚作。
251:デフォルトの名無しさん
08/05/08 17:37:52
確かに言語としてはes3の方が美しいよな。
クラスベースにしたのにプロトタイプのこすとかイラネ。
まあIEがまともに実装することは永久にないのでwebでは日の目見ないだろうな。
標準クラスライブラリが多すぎるのも問題だ。
252:デフォルトの名無しさん
08/05/08 18:12:50
とはいえprototype.jsとか使って疑似クラスとか定義しているのが主流なのを見ると、
言語の機能としてクラスベースを取り入れるのも正しい方向性っちゃそうなのかもしれない。
既存のクラスをprototypeで拡張できなくなるのはちょっと寂しいけどな。
253:デフォルトの名無しさん
08/05/08 18:25:13
prototype.jsって別にいらないと思うんだがそんなにプロトタイプベースは嫌いかね?
254:デフォルトの名無しさん
08/05/08 18:39:39
今のところ既存のクラスをprototypeで拡張出来るはずだが。
es4 は今がりがり仕様を削ってるところなので様子見。
es3.1 がちっとづつ進んでて興味深い(MS主導)
255:デフォルトの名無しさん
08/05/08 20:23:02
>>253
俺もprototype.jsは嫌い。
つーか、マトモな感覚してたらあんなwarning出まくりのライブラリなんて気味悪くて使えん。
256:デフォルトの名無しさん
08/05/09 01:10:40
そのマトモな感覚ってのがecmaの仕様理解しててプロトタイプベースも使いこなしてるって事だから
実際にajaxアプリ書いてる連中には居ないだろうな。
257:デフォルトの名無しさん
08/05/11 04:26:31
このスレ見て俺ってまだ勉強不足なんだなって思ったよ
ああ・・・
258:デフォルトの名無しさん
08/05/13 13:49:16
似非クラスベースやりたいだけならprototype.jsなしでも
継承モデルとか作れなくもないしな
カプセル化の面で多少悩みは残るけど
でもjQueryは手放せない
259:デフォルトの名無しさん
08/05/13 13:56:49
継承させる場合はFunction.apply()使えば良いけどミックスインしか出来ないんだよな。
260:デフォルトの名無しさん
08/05/14 09:11:18
Yahoo UIってどうよ
めちゃくちゃメソッド・プロパティあるけど
261:デフォルトの名無しさん
08/05/14 11:57:47
ecma-262関係ないな。
262:デフォルトの名無しさん
08/06/19 16:14:32
fx3がリリースされてjs1.8が登場したわけだが・・・rhinoはまだか!?
263:デフォルトの名無しさん
08/06/19 20:20:40
1.8以前に1.7R2がまだ…
URLリンク(blog.norrisboyd.com)
264:デフォルトの名無しさん
08/06/19 22:08:11
SpiderMonkey の 1.8 が出てからじゃない?そうでないと仕様確定できないとか?
Fx 3.0.* が結構出てからでしょ。
URLリンク(developer.mozilla.org)
もまだいまいち、JSON, Slice Syntax は js には入ってないし、
URLリンク(bugzilla.mozilla.org)
が入ってない。
265:sage
08/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:デフォルトの名無しさん
08/06/29 23:43:48
まだ文法パースすら出来てないんじゃない?
RIもそんな感じだし。
267:デフォルトの名無しさん
08/06/30 00:03:49
文法ころころ細かく変わってるからおかしくなるのは仕方ないんだけど、
数値まわりは lexer がおかしいのかも。
RI-M2 で function test2d {...} とやったらエラー出たのはびっくりした。
(2d で数値リテラルと解釈したらしい、なんじゃそら)
268:デフォルトの名無しさん
08/06/30 15:03:08
>>267
function test2d() { ... }
じゃないんですか。
269:デフォルトの名無しさん
08/06/30 17:32:35
>>268
typo った。スマン
270:デフォルトの名無しさん
08/07/06 23:17:16
無名関数を #(x,y)と書く処理系があったのですが、他でも同じように書いて動くのでしょうか?
271:デフォルトの名無しさん
08/07/06 23:24:58
初めて聞いたkwsk
272:デフォルトの名無しさん
08/07/07 13:13:42
右シフト演算子、「符号ありが >> で、符号なしが >>>」に
決めたのはなぜだろう。
「符号なしが >> で、符号の分を更にシフトする方が >>>」って考えると
しっくり行くのに。っつーかそう誤解してた。
更に、逆に解説してるサイトもある。
273:デフォルトの名無しさん
08/07/07 13:56:35
>>272
符号の分をさらにシフトすると何がうれしいんだい?
274:デフォルトの名無しさん
08/07/07 14:13:07
>>273
質問の意図がよく判らないけど、
負の数を負のまま扱えるから嬉しい。
算術シフトの名の通り。
275:デフォルトの名無しさん
08/07/07 14:25:28
>>274
負の数のまま扱いたければ、普通に算術シフトを使う処理系で>>すればいいだけ。
何かカンチガイしてないか?
276:デフォルトの名無しさん
08/07/07 15:20:24
よく判らんなー。
元々は>>272の「>>と>>>を誤解してる人がいる」って話なのに、
>>273が「何がうれしい」と謎の質問をしてるのが、こじれの発端だ。
嬉しい/嬉しくないっていう評価軸の話は元の質問には無関係。
>>275も何か変な事を言ってる。
算術右シフトも論理右シフトも、ECMAScriptの話であって、
「そういう処理系で」って話は、どう飛躍してるんだ。
277:272
08/07/07 15:26:46
何か話がややこしく(?)なった様で申し訳ない。
>>273
ビット操作物を書いてる時に、論理シフトを期待して>>を使ったら
MSB=1の時に意図しない動作をしたのが発見の経緯だったので、
「符号をシフトされて(私個人が)嬉しくなかった」という話。
で、>>と>>>を今の様に割り振った理由を知りたいな、と。
278:デフォルトの名無しさん
08/07/07 15:58:02
別に理由なんかないと思うがな。最初にそう決めたからそうなんだろう。
数学で足し算の記号に「+」を割り振ったのはなぜか?
とかいわれてもそう定義したからとしか言いようがなくね?
279:デフォルトの名無しさん
08/07/07 16:46:53
単に慣例に従っただけってのが大きいと思うよ URLリンク(d.hatena.ne.jp)
280:デフォルトの名無しさん
08/07/07 17:43:26
前例があるんじゃ、そりゃ従うわ。
でも>>272の
>「符号なしが >> で、符号の分を更にシフトする方が >>>」って考えると
>しっくり行くのに。
はよく判る。
で、>>273は何を訊きたかったんだろう?
281:デフォルトの名無しさん
08/07/07 17:46:03
単に茶々入れたかっただけだと思うけどな
282:デフォルトの名無しさん
08/07/07 18:01:01
Number型は符号付きだから、
>>が算術シフトで、>>>が論理シフトである方が自然。
C言語でのsigned int + >>の多くの実装(ただし仕様的には未定義動作)と合致してる。
283:デフォルトの名無しさん
08/07/07 18:38:19
たぶんECMAScriptが慣例にあわせてるってのはわかってて聞いてるんだと思うんだけど…
数値型に対する演算子なんだから算術シフトの方が自然な動作で
論理シフトの方が例外的な振る舞いだよな…
「符号の分を更に…」って感覚はちょっとわからないな…
シフトしてるビット数は算術のほうが少ないわけだし
284:283
08/07/07 19:18:50
なんか違うなw
シフトしてるビット数は同じで、「最上位ビットを0にする」っていう処理が
追加されたのが論理シフトなんだから「符号の分を更に…」って感覚は
よくわからんと言いたかった。
285:デフォルトの名無しさん
08/07/07 19:33:44
>>280
いや、MSBを保存することを「更にシフトする」という言い方では普通は理解不能だろ。
俺もわからんかった。普通の算術シフトの後にもう1回シフトするのかと思ったよ。
286:デフォルトの名無しさん
08/07/07 19:50:15
>>284
わざわざ「最上位ビットを0にする」って訳じゃない。
左シフトだって、別に最下位ビットを0に「する」んじゃない。
アセンブラ経験者だと判ってくれるかな。
シフトは、左、右、算術右で、
論理型がデフォ、算術は敢えて明示するみたいな。
287:デフォルトの名無しさん
08/07/08 00:07:50
間違った自分はバカじゃないと同意してほしいわけですね、わかります。
288:デフォルトの名無しさん
08/07/08 03:22:22
結局、なんで「さらにシフトする」なんて言ったのか、ワケワカランと思うのは俺だけか?
自称よくわかった人が複数いるみたいだからw、教えてよ。
算術シフトのどこがどう「さらにシフトする」ことになるのか。
289:デフォルトの名無しさん
08/07/08 08:10:19
「更にシフト」じゃなく、「更にひと手間」だな。
290:デフォルトの名無しさん
08/07/08 09:07:18
更にひと手間つーか、MSBをイジらないだけじゃん。全然手間じゃないよ。
291:デフォルトの名無しさん
08/07/08 10:17:28
元の奴の感覚は判るが、言葉が悪い。
動作で<<と(空き位置に0が入るという)対称性があるのは>>>だが、
見た目の対称性は<<と>>だから、違和感がある。
と書けばよかった。
292:デフォルトの名無しさん
08/07/08 10:17:37
符号「拡張」っていうくらいで、
nビット(n>1)シフトする時は、
上位nビットに補填するけどな。
(いまどき1ビットづつシフトしない)
293:デフォルトの名無しさん
08/07/08 10:20:01
>>291
無理やり論理演算の視点になってるよ。
*2, /2だという算術演算の視点なら逆だ。
プログラマは暗黙の仮定に拘泥してはならない。
294:デフォルトの名無しさん
08/07/08 13:46:11
>>293
無理やりも何も、シフトは論理演算でしょ。
295:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/07/08 14:02:04
>>293
なまじ*2、/2の代用になってるからなー。
っつーか、この発想こそアセンブラだ。
なのにアセンブラ的発想は少数派になってる不思議。
297:デフォルトの名無しさん
08/07/08 14:22:08
C/C++みたいにbit長も内部表現も仮定しない仕様を持つ言語の「仕様を」知っ
ている人と、Java,Javascriptのようにbit長規定、内部表現も暗に仮定し
ている言語しか知らない人では、かなり温度差があるんじゃないでしょうかね。
前者は、言語習得時に仕様を確認する習慣があると思います。仕様を確かめな
い感覚派は、アセンブラ知っていればこう考えるはずと、自分の感覚に陥って
しまうんじゃないでしょうか。
298:デフォルトの名無しさん
08/07/08 15:15:53
ビット演算で32ビットに丸められるのは、レジスタ幅等の効率の面から判るんだけど、
整数リテラルの±2^53って、どういう根拠なんだろう。
IEEE754の64ビット表現だと、仮数部は52ビットだし。
299:デフォルトの名無しさん
08/07/08 16:08:22
仮数部52ビットの上に、見えない1が立ってるからでは?
300:デフォルトの名無しさん
08/07/08 16:32:06
本当にアセンブリ言語を知ってる人ならば符号付き演算と符号無し演算に最低限の注意は向けるはずです。
変な思い込みで符号に注意を向けない人は、生兵法でアセンブリを使っている人でしょう。
301:デフォルトの名無しさん
08/07/08 17:15:40
>>299
あーそっか。俺バカ。
302:デフォルトの名無しさん
08/07/08 17:16:55
>>300
最初のネタに戻ると、間違えて逆に解説してる本やサイトがある。
303:デフォルトの名無しさん
08/07/08 22:35:02
そりゃ注意はしてても、まさか演算子の動作を逆に解説してるとは思わないよな。
複雑な関数やバグの確認ならともかく、演算子を事前にテストしてから使う様な事はしないし。
304:デフォルトの名無しさん
08/07/08 23:38:29
Webのクソみたいな解説サイトとかあてにしてたらダメだろ
書籍で間違った解説してるものがあるなら被害者を減らすためにも書名を晒すべき
305:デフォルトの名無しさん
08/07/08 23:45:52
今なら乗除はコンパイラ任せの*/で良いね。シフトはunsignedだけで良いんじゃね?
306:デフォルトの名無しさん
08/07/08 23:49:18
コンパイラの意義は抽象化にあるんだから、
シフトはビット操作にだけ使うべきでしょ。
符号の有無じゃなく。
307:デフォルトの名無しさん
08/07/08 23:58:03
My UNIX Series 『入門 JavaScript』、久野靖、アスキー
P.43
■2項演算子
〜(中略)〜
●<<、>>、>>>
左シフト、右シフト、算術右シフト。
奥付では初版。
以降の版で直ってるかは不明。
308:デフォルトの名無しさん
08/07/09 00:27:41
まさかだけど、==と===みたいに
途中で意味が入れ替わった訳じゃないよね?
309:デフォルトの名無しさん
08/07/09 09:58:00
あれは痛かったなw
310:デフォルトの名無しさん
08/07/09 10:27:43
>>308
revision 1の仕様書を読んだが、
The left shift operator ( << )
The signe3d right shift operator( >> )
The unsigned right shift operator( >>> )
というわけで、変わってはいないようだな。
久野さんにしては珍しいチョンボだね。
311:デフォルトの名無しさん
08/07/09 12:04:33
久野さんって、fjでお馴染みの、
高校の情報の教科書を書いてたりする人?
312:デフォルトの名無しさん
08/07/09 13:15:28
fjナツカシスw
313:デフォルトの名無しさん
08/07/10 18:53:58
ES4では、byte型、int型, uint型が増えますが、
shift演算子の意味はES3のままのようですね。
少なくともtamarinでは、今のところそう実装されています。
314:デフォルトの名無しさん
08/07/10 19:25:44
だからなに?
315:デフォルトの名無しさん
08/07/10 19:46:11
つ お知らせ
316:デフォルトの名無しさん
08/07/10 23:54:34
random seed ってないのね。
まったく同じ乱数列をもう一度再現したいんだけど、
自前でそういう乱数を持つしかないか。
そういや、seed を2回設定すると
副作用で時刻が得られる言語があったよね。
317:デフォルトの名無しさん
08/07/11 00:48:57
>>313
> ES4では、byte型、int型, uint型が増えますが、
byte 型は×
URLリンク(bugs.ecmascript.org)
URLリンク(mail.mozilla.org)
int, uint 型も多分×
URLリンク(bugs.ecmascript.org)
AS(Tamarin) は独自拡張として残すんだろう、多分。
318:デフォルトの名無しさん
08/07/11 10:01:48
tamarinは、ES4モードじゃなくてASモードの時だけ
既存のint, uintを有効にするんじゃないかな。
ES4のint, uint除外は最近のことなので、
// lib-march-2008に関連ドキュメントも至急削除のコメント
tamarinはまだ追いついてないと思う。
319:デフォルトの名無しさん
08/07/11 10:20:45
>>316
awkだ。
srandすると、現在時刻がseedになる。
もう一度srandすると、前のseedを返す。
320:デフォルトの名無しさん
08/07/11 12:37:48
仕様変更しすぎだな
321:デフォルトの名無しさん
08/07/12 00:01:36
Number型、桁あふれで内部で勝手にfloat, doubleに昇格されると、
疑似乱数生成のアルゴリズム実装に神経使うよなあ。
322:デフォルトの名無しさん
08/07/17 03:24:05
var a() = function
{
this.b = function() {}
}
を、prototypeを使って書き直す場合、どうやって書けば良いのでしょうか?
323:デフォルトの名無しさん
08/07/17 03:29:37
なんだそりゃ
var a = function() { };
a.prototype = {
b: function() { }
};
324:デフォルトの名無しさん
08/07/17 14:29:38
>>322
一応言っとくが>>322と>>323のコードは等価じゃないぞ。
325:デフォルトの名無しさん
08/07/17 18:07:23
誰が等価なコードを望んだんだろう
326:デフォルトの名無しさん
08/07/18 05:17:50
aを実行しちゃっててわろた
327:デフォルトの名無しさん
08/07/29 14:56:37
var o = new Object();
o.f = function() {
return; // 内容は何でもいい
} // ←ここにセミコロン
(function() {
void 0; // 内容は何でもいい
})();
このままだとエラーで、o.f に代入する関数リテラルの最後にセミコロンを付けると問題ない。
ここは暗黙で文の区切りにならない?
328:デフォルトの名無しさん
08/07/29 16:47:10
ならないからエラーになるんじゃないかな。
とりあえず{}かfuncton() {...}に対する関数呼び出しとして扱われてるはず
329:デフォルトの名無しさん
08/07/29 19:35:26
暗黙な 文の区切りなんて obsolete ね いつか動かないはずのコード
330:デフォルトの名無しさん
08/07/30 01:43:38
というか仕様書読み直して来い
どの識別子が終端文字とみなされるか調べて来い
331:デフォルトの名無しさん
08/08/04 16:05:45
>>321
uintは欲しかったな。
ハッシュ計算、疑似乱数、ビット演算用に。
ブラウザ専用言語だと需要が少ないところだろうが。
332:デフォルトの名無しさん
08/08/04 23:46:54
es4は組み込み言語としての汎用性を求めてなかったっけ?
333:デフォルトの名無しさん
08/08/05 00:46:57
331だが、ちょっと調べてみると、
JITで型推論するからNumberあれば十分という戦略らしい。
少なくともtamarinはその方向みたいだ。
そりゃmodulo演算してれば、整数型なことが分かるけどなあ…
334:デフォルトの名無しさん
08/08/05 04:35:05
>>333
え、型推論をコンパイル時ではなくJITでやるのか・・・ある意味すげーな、それ。
一般の型推論は理論上NP完全だぞ。実際にはそこまで最悪なケースは滅多にないけど。
335:デフォルトの名無しさん
08/08/05 21:42:36
>一般の型推論は理論上NP完全
VMが型推論のパターンを学習すればいいんだ!
336:デフォルトの名無しさん
08/08/05 22:24:16
「できる」と「簡単にできる」は別物だろ
自分とこの処理系ならできるからいいって言われても…
337:デフォルトの名無しさん
08/08/17 08:30:22
URLリンク(tech.slashdot.org)
URLリンク(mail.mozilla.org)
338:デフォルトの名無しさん
08/08/19 09:42:55
ECMAScriptHarmony - ECMAScript Harmony
URLリンク(www.hyuki.com)
339:デフォルトの名無しさん
08/08/19 11:56:26
ES4あぼん、か。
340:デフォルトの名無しさん
08/08/19 12:27:53
>>339
packageがなくなるのも確定か…
packageだけは欲しかったのに
early binding, namespaceがなくなるのはいいんだが
341:デフォルトの名無しさん
08/08/19 23:55:05
ES ed.4がなくなってES ed.3.1を作るってこと?
まあ無難だがモジュール性の確保がなぁ。
342:デフォルトの名無しさん
08/08/19 23:59:08
プロトタイプベースOOP派の勝利だな。
343:デフォルトの名無しさん
08/08/20 02:37:40
>>341
4はなくなるわけじゃない。将来の候補の一つ。
大きく変える前に3.1を出して様子見。
MicrosoftとしてはActionscript牽制に成功。
344:デフォルトの名無しさん
08/08/20 02:50:29
>>342
それはまだこれからの協議。
package, early binding, namespaceがなくなること決定らしいが、
これは全く意味が分からない。
言語的にライブラリ管理補佐機構が大きく後退。
Ajaxに暗雲垂れ込める感じ。
345:デフォルトの名無しさん
08/08/20 15:46:07
early binding はコンパイル時エラー検出や、class や namespace を
コンパイル時(静的)に決定することで速度改善と実行時書き換えによる
セキュリティエラーを防ぐ、ということだったんだが複雑化と実行時定義との
衝突がうまく解決できないということで OUT
package は namespace の構文糖、4月の段階で既に OUT だった。
namespace は識別子の拡張だったんだが、early binding 抜きだと
速度が落ちまくる。
ライブラリ機構は ES-ML ではいまのところ、Scheme の RSR5 というか、
Perl 類似のものを Dojo で採用されているような構文で検討中。
個人的には catchall が何とかなって欲しいんだが、namespace 抜きだと面倒そうなんだよなぁ
346:345
08/08/20 18:23:47
> Dojo で採用されているような構文で検討中。
間違えた、ES-ML で出てるのは Helma NG と Caja だった。
URLリンク(dev.helma.org)
URLリンク(google-caja.googlecode.com)
まぁ議論のベースになってるのはこれ。
URLリンク(wiki.ecmascript.org)
347:デフォルトの名無しさん
08/08/23 23:22:37
es4にはwktkがない!何故だ!?
348:デフォルトの名無しさん
08/08/24 11:38:18
公式に終わってんだからあっても困る、ES3.1 は?
349:デフォルトの名無しさん
08/08/24 12:19:00
型指定変数宣言
var hoge:Number;
も無くなったの?
350:デフォルトの名無しさん
08/08/24 14:12:33
それは困るなぁ
351:デフォルトの名無しさん
08/08/24 16:57:42
型周りは一からやりなおし。どうなるかわからんが素案には
URLリンク(wiki.ecmascript.org)
> A type annotation has the syntax " : type-expression ".
とあるがな。
352:デフォルトの名無しさん
08/08/25 19:37:51
ECMAScript デス 3
が
らぶ デス 3に見えたメガネ買い替えてくる・・・。
353:デフォルトの名無しさん
08/08/25 20:01:58
メガネより変えるべきものがあるだろ
354:デフォルトの名無しさん
08/08/25 20:57:29
>>353
替えの入手先の問題が。メガネは店で売ってるが。
355:デフォルトの名無しさん
08/08/25 21:41:59
>>354
脳へ渡す情報なら幾らでも買えるが人生は売ってないからね。
356:デフォルトの名無しさん
08/08/26 08:17:51
死ねば負債は清算できるぜ
ES4は修正して継続するようだが。
357:デフォルトの名無しさん
08/08/26 08:23:20
へ?ES4は一旦清算するんでしょ?
やりたきゃES3.1ハーモニーの後にしろと。
358:デフォルトの名無しさん
08/08/26 08:34:14
URLリンク(weblogs.mozillazine.org)
もう Nightly に入ってるって聞いたぜ
359:デフォルトの名無しさん
08/09/03 14:58:15
おまいら的には Chrome よりコッチだよな
URLリンク(code.google.com)
360:デフォルトの名無しさん
08/09/03 15:39:27
もうJITしていられんな
361:デフォルトの名無しさん
08/09/03 19:48:00
V8 はコンパイラオンリーな実装なんだね。
これも JIT に入るのかな。
362:デフォルトの名無しさん
08/09/03 21:38:11
コードざっと見たけども「V8で(だけ)速く動く」書き方がありそうなんだよ
google提供のjavascript(mapsなんか)はそう書き直されるんじゃなかろうか
いわゆるひとつの非関税障壁になりそうな予感
363:デフォルトの名無しさん
08/09/03 21:58:32
ARMあたりに対応してるからそのうちアンドロイドに組み込まれるんじゃないかと
364:デフォルトの名無しさん
08/09/04 00:32:47
>>362
そんなものがない実装なんてないよ。
365:デフォルトの名無しさん
08/09/04 03:40:08
>>362
その懸念はありかもね
他インプリもgoogleのjavascriptを基準に最適化しはじめたりしてね
アホすぎるが
366:デフォルトの名無しさん
08/09/04 10:29:19
ようするに方言が増えて、移植性の壁が高くなっただけだな。
367:デフォルトの名無しさん
08/09/04 11:07:56
修正BSDだから他も全てV8エンジンベースになるんじゃねーの
これだけ速度の違いを見せつけられるとね
368:デフォルトの名無しさん
08/09/04 11:20:04
IEはならない。
firefoxもtamarinがあるし、XULを考えると差し換えはかなりの大作業。
369:デフォルトの名無しさん
08/09/04 19:49:13
Rhinoはもとから十分早いし。
370:デフォルトの名無しさん
08/09/04 23:53:41
>>368
firefox に tamarin が入る目はもはやほとんどないよ
tamarin jit だけ移植して終わり
371:デフォルトの名無しさん
08/09/05 00:27:30
ホント、タマリンはこれからどうするんだろね
372:デフォルトの名無しさん
08/09/05 01:47:29
MLでそんな議論になってる?
373:デフォルトの名無しさん
08/09/05 21:01:13
超超初歩の質問です
document.write("hogehoge");
document.clear();
と書いても、clearを無視されてhogehogeと表示されます。
document内容を動的に消去したいです
374:デフォルトの名無しさん
08/09/05 21:22:59
document.open();
375:デフォルトの名無しさん
08/09/08 13:07:23
>>370-372
> The project was canceled mainly because tamarin-tracing never caught
> up to SpiderMonkey's speed. Tamarin-tracing also would have needed
> a lot of other features to be useful on the web:
URLリンク(wiki.mozilla.org)
(13:32, 4 September 2008 変更)
ML にもアナウンスはなかったと思う
376:デフォルトの名無しさん
08/09/08 21:00:24
tamarin自体を放棄ってことかい
こりゃtamarin
377:デフォルトの名無しさん
08/09/08 23:22:51
chrome/JSv8の影響かな?
378:デフォルトの名無しさん
08/09/09 00:03:54
TraceMonkeyに吸収合併じゃねえの?
379:デフォルトの名無しさん
08/09/09 00:10:46
Adobeカワイソス
380:デフォルトの名無しさん
08/09/09 00:19:04
今のとこ >>370 のとおり Tamarin-tracing の nanojit のみ
TraceMonkey(SpidirMonkey + nanojit) に入れてるだけ。
Adobe が使うから Tamarin-central と Tamarin-tracing の開発は続いてる。
しばらく前に DOM の GC に MMgc(Tamarin の GC) を使うか
jemalloc 利用した GC 作るかって話があったんだが、結論がどうなったか
よくわからん、後者っぽいんだけど…
381:デフォルトの名無しさん
08/09/09 00:31:18
>>378
コードとアイデアを Tamarin-Tracing プロジェクトと共有してるっぽい?
英語つよいひと だれか たすけて
> It is based on a technique developed at UC Irvine
> called "trace trees", and building on code and ideas
> shared with the Tamarin Tracing project.
URLリンク(wiki.mozilla.org)
382:デフォルトの名無しさん
08/09/09 02:31:35
そう。
"trace trees"ってのは、
コード列を木構造にして、JIT対象単位とする手法。
383:190.90.128.210.bf.2iij.net
08/09/10 14:45:40
>>346
>> まぁ議論のベースになってるのはこれ。
>> URLリンク(wiki.ecmascript.org)
> | ModuleName '.' '*' 'as' Ident '*' # all with prefix
こんなの入れるくらいなら、階層を持つモジュール名をprefixにして、
参照できるようにしてくれよ!
384:190.90.128.210.bf.2iij.net
08/09/10 17:15:45
v8のソース、10万行ありますね。
385:p31195-adsau15honb9-acca.tokyo.ocn.ne.jp
08/09/10 20:39:48
tamarinが15万行ぐらいだし普通じゃね?
386:デフォルトの名無しさん
08/09/10 21:53:29
なんでfusianasanなの?
387:385
08/09/10 22:02:18
2chの仕様変更?とnavi2chのバグのあわせ技でした
>>383-384 も同じかも
388:デフォルトの名無しさん
08/09/10 23:27:11
それはすごいSGだなw
389:デフォルトの名無しさん
08/09/10 23:29:27
>>387
どこ行けば判る? > 仕様変更
390:デフォルトの名無しさん
08/09/10 23:30:53
ごめん、>>389は無視して。
navi2chのスレと間違えた。
391:デフォルトの名無しさん
08/09/16 22:41:27
js1.9とes3.1はまだかーーー
392:デフォルトの名無しさん
08/09/20 10:23:21
URLリンク(webkit.org)
みんないったい何に追われているのか、この何ヶ月、必死すぎ。
この元気があれば ES4 だって Harmony だって物凄い勢いで実装済みそうだぜ
393:デフォルトの名無しさん
08/09/20 10:53:49
だって、システムソフトウェアでのかつてのCのように、
Javascript/ECMAScriptがUIの世界を支配しそうだから。
394:デフォルトの名無しさん
08/09/20 11:52:22
MacがWindowsを駆逐しそうだしな
395:デフォルトの名無しさん
08/09/20 19:31:19
>>394
マジで!?
396:デフォルトの名無しさん
08/09/20 21:05:28
インタプリタの最終進化まで行きそうだ
397:デフォルトの名無しさん
08/09/21 19:16:30
最初からJavaバイトコード吐いてJavaVMに最適化丸投げ出来るRhinoは楽だな。
deoptimize実装してないVMだと動的プロパティは相性悪そうだが。
398:デフォルトの名無しさん
08/09/22 23:10:53
SquirrelFish Extremeが早いらしいね。
リッチコンテンツ使うからどこも必死か。
399:デフォルトの名無しさん
08/09/25 18:06:04
> ECMAScript Harmony
> Plus, as some JS implementors have noted with concern, multiple open
> namespaces impose runtime cost unless an implementation works
> significantly harder.
これってどこかに具体的な議論ある?
ES4のNamespaceが1st class objectというのはやりすぎだとは思うが、
ほとんど何もできないObjectだから問題が起きそうにもない。
もしかしてName objekutの方で、属するNamespace(qualifier属性)が
immutableになってないことが問題になっているんだろうか。
400:デフォルトの名無しさん
08/09/25 23:05:10
>>399
> これってどこかに具体的な議論ある?
ES4-ML で実装が面倒ってのは何度も出てたけど、これは覚えがない。
> もしかしてName objekutの方で、属するNamespace(qualifier属性)が
> immutableになってないことが問題になっているんだろうか。
そうだと思う。
DOM で
script = document.createElement('script');
...appendChild(script);
のように動的に namespace object を持つスクリプトがロードされたとき、
読み込み元のスクリプトの無修飾の name を読み込まれたものと
衝突しないように、qualifier 属性を再構築しなきゃならなくなる
ということでないかな。
401:デフォルトの名無しさん
08/09/26 00:30:10
文字列と整数の掛け算できるようになった?
402:デフォルトの名無しさん
08/09/26 14:00:07
>>400
え、DOMの名前空間とJavaScriptの名前空間が一緒になるってこと?
じゃないよね?
403:デフォルトの名無しさん
08/09/26 15:34:57
>>402
ちがうちがう。ES4 の import とかだけ使うなら問題はないんだろうけど、
legacy な DOM を介する動的ロードするとコストが増加するってこと。
互換性のことがあるから、切るわけにもいかんのでしょ。
404:399
08/10/01 17:37:31
>>400
返事遅れました。調べてもやっぱりよくわかりませんなあ。
そういう"intern"がmission criticalなコードってそうないだろうし。
少なくとも、
>>346
> まぁ議論のベースになってるのはこれ。
> URLリンク(wiki.ecmascript.org)
この案だって、1st class objectでないもののnamespaceはあるわけで、
Brendan Eichが、URLリンク(ejohn.org)で改めて、
> However, as I noted in my message to the lists,
> namespaces, packages, and early binding are definitely gone.
こう言いきっている意味は分からないな。
namespaceの全くないmoduleなんてありえないもの。
企業の思惑が絡んでくると、分けの分からない議論になるなあ。
ただ、かなり熱い"harmony"だったことは伝わってくるね。
405:デフォルトの名無しさん
08/10/01 23:34:06
> こう言いきっている意味は分からないな。
URLリンク(wiki.ecmascript.org) が
harmony になる前に出された提案(というよりスケッチ)なんで
namespace が残ってる、という単純な話かも。
proposals:modules は macro の言及があるように元々 after ES4 の
ためのものだった。「議論のベース」って言ったのはまずかった、すまん。
いいとこ参照先だ。
> namespaceの全くないmoduleなんてありえないもの。
ES4 のメカニズムにおける namespace がないってことでしょう。
一般的な意味での namespace(パッケージシステム?) をどうするのか
まだ見えないけども、内部構造に namespace を持たない形じゃぁ
ないのかなと思ってる(AST になる段階で namespace が消える)
406:デフォルトの名無しさん
08/10/02 13:54:13
というかnamespaceのないmoduleなんてありえないよ。
FOLDOCより
namespace
A set of names in which all names are unique.
namespaceなしじゃmoduleローカルな識別子も定義できないよ。
namespaceオブジェクトとなると行きすぎだろうけど。
407:デフォルトの名無しさん
08/10/02 14:41:46
>>406
そんなのcoding conventionでmodule nameをprefixとして使うとか、どうにでもできる。
408:デフォルトの名無しさん
08/10/02 14:49:45
elispかよw
409:デフォルトの名無しさん
08/10/02 18:00:02
オブジェクトを名前空間として流用する風習はあるのだから
「Rubyかよ」の方が適切じゃないかね
410:デフォルトの名無しさん
08/10/02 18:06:23
>>409
はあ?「Smalltalkかよ」だろ。
411:デフォルトの名無しさん
08/10/02 21:07:28
ルビ厨はこれだから・・・
412:デフォルトの名無しさん
08/10/02 23:10:09
振り仮名用の5.5ポイント活字ですね、わかります。
413:デフォルトの名無しさん
08/10/03 00:30:48
いきなりだけど || 演算子のハナシ。
function foo(s){
s = s || 'default string';
...
}
みたいな記述をたまに見かけるんだけど、これ問題ない?
s が単に true になっちゃう処理系があってもおかしくない気がするんだけど。
function foo(s){
s = s==undefined ? 'default string' : s;
...
}
ってこれまで書いてたんだけど、上の例のほうが短いし、慣れれば読みやすい気もする。
ただ数値の場合は 0 渡したいときに困るかね?
414:デフォルトの名無しさん
08/10/03 01:34:38
ECMA262より
The production LogicalORExpression : LogicalORExpression || LogicalANDExpression is
evaluated as follows:
1. Evaluate LogicalORExpression.
2. Call GetValue(Result(1)).
3. Call ToBoolean(Result(2)).
4. If Result(3) is true, return Result(2).
5. Evaluate LogicalANDExpression.
6. Call GetValue(Result(5)).
7. Return Result(6).
(中略)
NOTE
The value produced by a && or || operator is not necessarily of type Boolean.
The value produced will always be the value of one of the two operand expressions.
415:デフォルトの名無しさん
08/10/03 03:50:28
たまにどころかprototype.jsはじめそこら中で使われてるべ?
むしろundefinedと==で比較する方がやばくね?
416:デフォルトの名無しさん
08/10/03 04:51:27
> s が単に true になっちゃう処理系があってもおかしくない気がするんだけど。
つまり、undefinedがbooleanとしてtrueに扱われる処理系ってこと?
それはない。
417:デフォルトの名無しさん
08/10/03 07:47:38
9.2 ToBoolean
The operator ToBoolean converts its argument to a value of type Boolean
according to the following table:
InputType Result
Undefined false
(略)
おまけに、
> 4. If Result(3) is true, return Result(2).
return Result(3)ではない。
418:デフォルトの名無しさん
08/10/03 07:52:22
>>415
> むしろundefinedと==で比較する方がやばくね?
やばくないです。長いので省略しますが、11.9.1と11.9.3です。
419:デフォルトの名無しさん
08/10/03 08:17:29
>>413
||は、true/falseじゃなく、元の値を返すという言語仕様だから、大丈夫。
420:デフォルトの名無しさん
08/10/03 10:59:10
>>418
argument.length でチェックしないと意味が変わるでしょ
foo が何をする関数なのかにもよるけど 'default string' なら >>413 の後者は「間違い」
421:デフォルトの名無しさん
08/10/03 11:23:51
言いたいことは一度に言って欲しいな
422:デフォルトの名無しさん
08/10/03 18:33:03
>>418
引数のsはnullかもしれないし、falseかもしれないだろ。ダメじゃん。
423:デフォルトの名無しさん
08/10/03 21:14:58
x64でうごくやつってないものか
424:デフォルトの名無しさん
08/10/03 21:29:09
Rhino
425:デフォルトの名無しさん
08/10/03 21:59:35
413 です、フォローありがとう。
今日、仕事帰りに本屋寄ったら、このスレでお勧めのサイ本売ってて、買ってきたよ。
古い本だと思ってたし、4200円と高いのでスルーしてた。
|| の仕様についてちゃんと載ってたよ。
何冊か入門書読んだけど、単なる論理ORだと思ってたが、違ったんだな。
ただ "" が false に型変換されるって記述もあったので、"" を与えたい場合には
やっぱり今までどおり
s = s==undefined ? "default string" : s;
が良い気がしたよ。ただそれ以外では
s = s || "default string";
って記述もアリなんだな。いやぁ、面白いわ。
ちなみに俺ってIE4, NS4 の頃あたりに一度、JavaScript やってた人なんだわ。
v1.2 までは || が ture になっちまうってサイ本にあって、俺の記憶と一致した。
この週末、頑張ってサイ本読むわ。
426:デフォルトの名無しさん
08/10/03 22:02:35
>>418
いちおう s===undefinded にしなかったのは、s==undefined だと s==null のときにも反応してくれるから。
これは昔から一緒って言うか、定番の書き方だと俺の灰色の脳細胞に残ってた。
っていうか、サイ本、読んでておもしれーな。
427:デフォルトの名無しさん
08/10/03 22:08:57
サイ本って新版でただろ
428:デフォルトの名無しさん
08/10/03 22:43:00
まぢ? >>427
金曜夜の焼き鳥を諦め、その金で買ってきたのは第5版ってやつなんだが・・・
429:デフォルトの名無しさん
08/10/03 23:47:53
>>428
それで大丈夫よ。427は
> 古い本だと思ってた
にひっかかって注意してくれたんじゃないかな。
焼き鳥で腹を膨らませるよりもよかったと思えることを願っているよ。
430:デフォルトの名無しさん
08/10/03 23:48:06
URLリンク(www.oreilly.co.jp)
第5版出たのは去年だがそれが最新。第3版なら古いけど。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5032日前に更新/110 KB
担当:undef