ECMAScript デス 3at TECH
ECMAScript デス 3 - 暇つぶし2ch100:デフォルトの名無しさん
07/12/31 23:16:49
E4Xはもともとrhinoで実装されてたしなぁ。

101:デフォルトの名無しさん
08/01/01 09:57:17
あけましておめでとう

spidermonkeyをみなおしたおれがいる

102:デフォルトの名無しさん
08/01/17 20:26:18
板違い&重複のjavascriptスレに抜かれそうな勢いとは皮肉だな。

103:デフォルトの名無しさん
08/01/18 11:05:11
spidermonkeyのライセンスってGPLかいな

104:デフォルトの名無しさん
08/01/18 11:38:34
***** BEGIN LICENSE BLOCK *****
Version: MPL 1.1/GPL 2.0/LGPL 2.1

105:デフォルトの名無しさん
08/01/19 22:05:07
Javascriptを勉強しようと思っているのですが、チュートリアル的に使えるオススメのサイトってありますか?
テキストなどを処理するためのスクリプトを書いたり、将来的にはSilverlightでGUIアプリケーションを作りたいと思っていますが、
検索してもHTML埋め込みでの解説ばかりで困っています。

106:デフォルトの名無しさん
08/01/19 22:33:58
埋め込み以外でガチでJSを知りたいならサイ本買えば。

107:デフォルトの名無しさん
08/01/19 22:42:40
まあサイ本だな。
どうしてもWeb上でチュートリアル的なものをというなら
MDCのCore JavaScript 1.5 Guideあたりか。

108:デフォルトの名無しさん
08/01/19 22:43:12
やっぱり定番はオライリーですか……。
Webで気軽に勉強というわけにはいかないみたいですね。
ありがとうございました。

109:105,108
08/01/19 22:46:52
>>107
MDCは求めていたものと少し違いますが、仕様が一覧で見られるだけでも大分わかりやすいです。
しばらくこれを見ながら勉強してみようと思います。
ありがとうございます。

110:デフォルトの名無しさん
08/01/19 23:57:08
ちゃんと言語としてJavaScriptを知るにはO'Reillyの本が一番いいよ。
はっきりいってWebで検索するよりずっと手軽かつわかりやすく効率いい。

111:デフォルトの名無しさん
08/01/20 15:22:59
なあ、全然プログラム解らない俺に教えてくれよ

昔、PC98にはRomBasicが乗ってて、簡単なプログラムとかが直ぐに出来たんだが、
同じ事をしようとして、VBSってのをかじってみたけど、MSはVBSの開発を中止したみたいだし、
で、くだらない質問だけど、バカにしないで教えてください。

Q1)最新のVisualStasio2008には、Jscript8.0ってのがあって、VBSとは違って開発・発展が継続してるようなんだが、
このJscript は、URLリンク(msdn2.microsoft.com) によるとコンパイルして実行するように書かれていて、
テキストファイルのままコンパイルせずに、 WSH とか ブラウザで気楽に実行できなくなったの?

以下スレ違いだけど、アドバイス頼みます。
Q2)昔のPC98に乗ってたRomBasicみたいに、気楽にどこでも簡単なプログラミングって目的の時は、
JAVAscriptが良いの? 他になにかお勧めはないですか?

Q3)Windows Power Shell ってのを覚えると、上記の目的に合致しますか?

Q4)VisualStasio2008Express のVisualBasic を使えば、VBS見たいにコンパイルしなくても気楽に実行できる、プログラムできますか?

112:デフォルトの名無しさん
08/01/20 15:41:03
>>111

A1. そのとおり。JScript.NETからはコンパイル必要。
A2. 昔のBasicやってんならHSPでもやってみたらどうか。ちょっと頑張ってVBAでもいんじゃね?
A3. PowerShellは結構ありな選択肢だと思うよ。
A4. できません。VBもコンパイル必要。

結果的にスレ違いになるから続きは「くだらない質問はここにスレ」あたりにでも行ってな。

113:デフォルトの名無しさん
08/01/20 15:44:52
>>112
ありがトン

114:デフォルトの名無しさん
08/01/21 01:01:43
javascriptは関数型パラダイムにプロトタイプベースだから気軽には始められないと思うが・・・。
最低限、プロトタイプチェーンとコンテキストチェーン理解してないと言語仕様に付いていけないと思う。

後、勉強ならecmaの言語仕様とサイ本で十分。

まあ、どっちにしろjavascript2.0が出たら皆勉強し直しだしなぁ。

115:デフォルトの名無しさん
08/01/21 21:12:32
関数型的要素は意識する必要ないべ
それに、既に多くの人間が気軽に使っていると思うけど

116:111
08/01/22 18:47:11
親切な方、もう一つ教えてください。
Q4)ECMAScriptを覚えたら、どのWindowsPCでも、計算とか簡単なプログラム作って走らせたりできますか?
何か別にコンパイラとかインタプリタとか入れなくても、ネットカフェとか友人のPCとかでも、Windows標準状態でできますか?

117:デフォルトの名無しさん
08/01/22 19:19:10
>>116
とりあえずWSHやHTAなら大抵のWindowsPCで動くんじゃないか?

118:デフォルトの名無しさん
08/01/22 19:21:09
JScriptとJavaScriptでは変数のスコープの扱いがすこし違うくらいか

119:111
08/01/22 20:08:38
ありがトン

120:デフォルトの名無しさん
08/02/07 04:24:44
web上の文献を読んでいたら、global スコープでの var 宣言がほとんど無意味なように感じたんですが、
global スコープでは var をつけて変数を宣言するのは無意味ですか?

121:デフォルトの名無しさん
08/02/07 04:47:41
処理系にとっては無意味でも人間にとっては意味あるでしょう。

122:デフォルトの名無しさん
08/02/07 12:30:18
var付けないとコンテキストチェーンたどって変数探す処理が含まれるから挙動は違うと思うんだが。

123:デフォルトの名無しさん
08/02/12 09:27:08
win = window.open(...);
win.scrollBy(0,100);

みたいにサブウィンドウを作って、それを親から操作することは出来ないんでしょうか?

124:デフォルトの名無しさん
08/02/12 13:48:58
板違い

125:デフォルトの名無しさん
08/02/15 10:07:18
文字列リテラルで、Unicodeのコードポイントを
"\uXXXX"で指示できるけど、これはBMP内まで?

126:デフォルトの名無しさん
08/02/15 11:52:16
>>125
うん。16bit まで。
URLリンク(www2u.biglobe.ne.jp)
URLリンク(liosk.blog103.fc2.com) の [追記]

将来(ES4)に関してはこの辺
URLリンク(wiki.ecmascript.org)
URLリンク(bugzilla.mozilla.org)

127:デフォルトの名無しさん
08/02/15 17:23:45
>>126
サンクス。
手元の処理系だと、サロゲートペアで処理されてた。

128:デフォルトの名無しさん
08/02/16 23:01:51
"abc123def".search(/[0-9](?=[^0-9])/); // = 5
"abc123def".search(/(?=[^0-9])[0-9]/); // = -1

前者は期待通りですが、後者がマッチしない理由がわかりません。
3 を期待したんですけど。

129:128
08/02/16 23:13:41
URLリンク(www.kt.rim.or.jp)
むー、(?=~)は前置できないのか。

130:デフォルトの名無しさん
08/02/24 18:05:38
prototype.js
ってどのへんが便利なの?

131:デフォルトの名無しさん
08/02/24 18:11:13
ES4がなくてもクラスを使える。

132:デフォルトの名無しさん
08/02/26 08:00:08
見た目クラスなだけだろ

133:デフォルトの名無しさん
08/02/26 10:46:22
lispのマクロに相当することってできるの?

134:デフォルトの名無しさん
08/02/26 14:56:25
lips マクロでググッたらキャノンのページ記述言語が出てきたんだが
lipsってあのlipsだよな?マクロなんてあったのか。

135:デフォルトの名無しさん
08/02/26 15:12:32
Nice joke!

136:sage
08/02/26 20:54:00
ものすごい記述方法を発見した!!

Date.call.call("".replace, " TRIM ", /^\s+|\s+$/g, "")
これなにしてるかわかるか!
使おうとは思わないけどすごいね
この記述はもう知られてるの?


137:デフォルトの名無しさん
08/02/26 21:20:07
callってes4でなくなるんじゃなかった?

138:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/27 14:23:21
どうすごいの?単なるトリムなんだけど。

140:デフォルトの名無しさん
08/02/27 16:41:48
任意のコンテキストで関数呼んでる。
invokeみたいなもん。

141:デフォルトの名無しさん
08/02/27 19:40:33
[].slice.call(arguments)とかarray.push.apply(array, arguments)とかならたまに見るな。

142:sage
08/02/28 00:58:02
ちょい脱線するけど
[].slice.call(arguments) より Array.apply(arguments) のほうが好き

143:sage
08/02/28 01:00:17
ミスった無駄にスレ消費して恐縮です。
Array.apply(null, arguments) と言いたかった

144:デフォルトの名無しさん
08/02/28 05:58:24
引数の数が1つでその値が数値である、ということが
絶対ないと保障されているならそれでもいいね。
だがその前にsageを覚えろ。

145:デフォルトの名無しさん
08/02/28 06:17:55
別に下げんでもいいよ
荒らしや厨が入ってくるわけでもないし

146:デフォルトの名無しさん
08/02/28 22:28:12
あらしです

147:デフォルトの名無しさん
08/02/29 01:56:46
ムーンサルトり乙

148:デフォルトの名無しさん
08/03/08 13:05:10
>>136
知られてるというか、そういうトリックを理解してないと今時のJSコード読めないお。
↓こんな遊びとか
URLリンク(d.hatena.ne.jp)

149:デフォルトの名無しさん
08/03/08 13:07:26
gotoスパゲッティや継続スパゲッティと一緒で理解する必要はないかと。
単なる遊びだから。

150:デフォルトの名無しさん
08/03/08 13:08:56
まあcall.callは有用に使われてるの見た事ないね

151:デフォルトの名無しさん
08/03/08 13:40:31
callee.callerの方が使える。

152:デフォルトの名無しさん
08/03/08 15:19:40
callを覚えたてのやつが誰もがやる遊びだが実用性は皆無

153:デフォルトの名無しさん
08/03/08 18:14:28
再帰で、関数名が変わってもいい様に
arguments.callee.call()にした事はある。

154:デフォルトの名無しさん
08/03/08 18:50:18
バッド・ノウハウの塊だなw

155:デフォルトの名無しさん
08/03/08 19:36:46
俺の知ってるバッドノウハウ
var o = {valueOf:function(){return 0;}};
++o

156:デフォルトの名無しさん
08/03/08 20:32:07
それはバッドノウハウではなく「遊び」のような気が。

157:デフォルトの名無しさん
08/03/08 21:09:24
もうちょっといじればジェネレータだ

158:デフォルトの名無しさん
08/03/09 00:53:48
JavaScriptで、JavaScript処理系は作れるのかな。

159:デフォルトの名無しさん
08/03/09 01:06:10
あるよ。ググッてみて。

160:デフォルトの名無しさん
08/03/09 05:02:10
あるんだ。
柔軟な言語だしな。

161:デフォルトの名無しさん
08/03/09 07:03:00
tamarinが自己完結コンパイラじゃなかったっけ?

162:デフォルトの名無しさん
08/03/09 11:24:14
>>153
そゆときは本体関数の内側にクロージャを書くかな。
初期化や終了処理も追加しやすい。

163:デフォルトの名無しさん
08/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.
URLリンク(www.mozilla.org)

164:デフォルトの名無しさん
08/03/09 11:41:50
URLリンク(hg.mozilla.org)

165:デフォルトの名無しさん
08/03/09 13:29:38
むしろこっち
URLリンク(mxr-test.landfill.bugzilla.org)
This directory contains code for an ES4 compiler for tamarin
written in ES4.

166:デフォルトの名無しさん
08/03/13 00:00:18
ecma-262やjavascriptでカリー化ってどうやろう?
数学的に考えてカリー化できればラムダ式使って関数宣言なしに全コード書けると思うんだけど。

167:デフォルトの名無しさん
08/03/13 01:49:57
URLリンク(d.hatena.ne.jp)
URLリンク(d.hatena.ne.jp)
URLリンク(nanto.asablo.jp)
URLリンク(blog.livedoor.jp)
この辺で<カリー化

実用上は部分適用で十分な気がするけども。


168:デフォルトの名無しさん
08/03/14 14:34:06
>>167
便利だね
pythonが便利なモジュール沢山あるからそっち行ってしまったけど
c++に慣れている人にはこっちの方が書きやすい

169:デフォルトの名無しさん
08/03/15 11:30:47
カリー化とラムダ式オンリーだと書いてて楽しいじゃないか。
ブックマークレットでも使えるし。

Rhinoのes4実装まだ~?

170:デフォルトの名無しさん
08/03/15 12:15:36
es4はプロトタイプ言語の特徴を無視してる感じで嫌いなのは俺だけ?

171:デフォルトの名無しさん
08/03/15 13:31:22
俺は好き。

172:デフォルトの名無しさん
08/03/15 14:56:57
>>170
俺も3の方が好きだ。
同じ言語だと思うから嫌いとか思うわけで
もう完全な別言語だと思うといいと思うよ…

173:デフォルトの名無しさん
08/03/15 15:12:23
ECAMScript4はpackageが入ったから、
CPANみたいなのができて大爆発だと思う。
perl6はもちろんruby, pythonも食っちゃうかも。

174:デフォルトの名無しさん
08/03/15 17:22:20
それはないな。

俺もes4より3の方が好き。
es4はプロトタイプである必要性がない。
演算子オーバーロードも要らない。可読性が落ちる。
ライブラリがでかすぎるのも実装するとき問題になると思う。
仕様が巨大すぎてwebでの要求以上のものをやっちまった感があるんだよなぁ。
学習面でも大変だし。

これがデスクトップアプリケーション作るための言語ならこれくらいの仕様で良いんだが・・・。

175:デフォルトの名無しさん
08/03/15 17:50:37
逆に必要ないのはes3にしがみついているプログラマになってきちゃった…

176:デフォルトの名無しさん
08/03/15 21:09:40
HTML5と絡んでWebアプリケーションを作るための言語にしたいんじゃないの。

177:デフォルトの名無しさん
08/03/15 23:13:42
ES3のプロトタイプ指向のシンプルな美しさがES4には無いね。

178:デフォルトの名無しさん
08/03/16 01:12:53
>>117
だからといって、
URLリンク(javascript.crockford.com)
URLリンク(wiki.ecmascript.org)
これもあんまり。部分的にはいいとこもあるけど、なんかいいかげんで。

179:デフォルトの名無しさん
08/03/16 08:15:31
クラス使いたければJavaのアプレットでも作ってろっての。
JS/ESは言語仕様の無軌道な拡張よりも処理系の実装の改善をしていってほしい。
言語仕様をいじるのは、せめてpythonと比較になるぐらいの速度が出てから。

180:デフォルトの名無しさん
08/03/16 09:24:06
>>164


181:デフォルトの名無しさん
08/03/16 10:33:36
>プログラミング言語について語るときに仕様と実装という区別のついてない人が多すぎる。
URLリンク(cl-www.msi.co.jp)

182:179
08/03/16 11:13:41
>>181
実際問題として仕様と実装の区別を間違えているのがes4のstatic typingを始めとする
パフォーマンス向上のための言語仕様拡張でしょ。

それよりも、パフォーマンス向上は実装の問題として扱って、
せめて他のdynamic typingな言語の処理系のパフォーマンス程度にマトモな処理系を
実装/普及させるのが先だろ、というのが>>179の主旨。わかりにくてスマソ。

183:デフォルトの名無しさん
08/03/16 12:35:33
static typingにはsafe programmingというのもあるわけで…

184:デフォルトの名無しさん
08/03/16 13:12:36
消火器を売りつけるようなもんか

185:デフォルトの名無しさん
08/03/16 13:41:02
>>183
ところがJS/ESにstatic typingを導入しようとしている人達は、
static typingをAPIに適用してパフォーマンスを稼いで
ユーザスクリプト側ではdynamic typingのままでいいと言っている。

safe programmingのためならば、ユーザスクリプト側にこそ
static typingが必要だと思うのだがね。

186:デフォルトの名無しさん
08/03/16 13:58:14
動的型言語はコンパイラによるチェックではなくテストケースによる
安全性のチェックを行うという事になっている。そこにコンパイラに
よるチェックを入れた方がより簡単に安全性を増せるよと主張するのは
野暮天。

187:デフォルトの名無しさん
08/03/16 15:45:57
多態に対するテストケースででどーせ型に関する情報を埋め込まなきゃ
ならんのだから、はじめから型情報入れられるようにした方が楽でないか?

188:デフォルトの名無しさん
08/03/16 18:13:58
>>187
> 多態に対するテストケースででどーせ型に関する情報を埋め込まなきゃ
> ならんのだから、

え?あるコードで想定している「型」と具体的なクラスは全然別物なのが
dynamic typingのいいところでしょ…

189:デフォルトの名無しさん
08/03/16 18:38:50
そういう意見は全て退けられてes4が出来ましたw

190:デフォルトの名無しさん
08/03/16 18:44:10
そりゃそうだけど、あるコードで想定している「型」が明示されてるなら
具体的なクラスの方は楽できるし。
URLリンク(www.ecmascript.org)

191:デフォルトの名無しさん
08/03/16 18:55:44
es4は言語思想がes3までと違いすぎて同じ言語として扱う意味がない。

192:デフォルトの名無しさん
08/03/16 19:11:08
ちょうど今パート3だしes4のスレは分岐するか?

193:デフォルトの名無しさん
08/03/16 21:02:38
その前に1000行ったらな

194:デフォルトの名無しさん
08/03/16 21:21:24
>>191
禿同。


195:デフォルトの名無しさん
08/03/16 21:48:11
実は言語思想などはじめから無かったw

196:デフォルトの名無しさん
08/03/16 22:37:08
最初はNetscapeの看板機能になるためだけの言語だったからな。

197:デフォルトの名無しさん
08/03/16 22:52:07
Live Object という名前の時は輝いていた

198:デフォルトの名無しさん
08/03/17 00:40:59
>>196>>197
Live Object はわからないが、古いこと知ってそうだから聞いてみる。
最初っから .prototype スロットって在ったの?

199:デフォルトの名無しさん
08/03/17 01:08:03
>>197
LiveScriptじゃないの?

>>198
手元にあるJSのリファレンス本みると、prototypeはIE4.0、NS3.0からの対応みたいだから、
バージョン的に言うとJavascript1.1からの対応らしい。
最初からあった訳じゃないと思うけど、当時を知らないから正確なところは分かりません。

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版なら古いけど。

431:デフォルトの名無しさん
08/10/04 00:08:45
>>429-430 ありがと、安心した。

読破したら、美味しい焼き鳥で自分を祝っちゃる!

432:デフォルトの名無しさん
08/10/05 15:51:19
'aaaggfeeeehhh'.split(/(?=(.)\1*)/);

IE6:    a,a,a,g,g,f,e,e,e,e,h,h,h
Firefox3: a,a,a,a,a,g,g,g,g,f,f,e,e,e,e,e,e,e,e,h,h,h,h,h,h,h
Chrome: a,a,a,a,a,g,g,g,g,f,f,e,e,e,e,e,e,e,e,h,h,h,h,h,h

どれが正しいんですか?

433:デフォルトの名無しさん
08/10/05 16:41:54
みんなちがって、みんないい。

434:デフォルトの名無しさん
08/10/05 16:49:23
>>432
ほれ、URLリンク(www2u.biglobe.ne.jp)
そういう時は自分の手で動かしてみるんだ

ちなみに俺が 'aahh'.split(/(?=(.)\1*)/) を自分の手で動かしてみたところ、
a,a,a,h,h,h,h となるのが正解という結論に達した

435:デフォルトの名無しさん
08/10/05 18:27:22
>>434
ありがとうございます
1行ずつ解釈していったところ、どうやら同じ結果になったようです
つまりChromeが確かにECMA準拠ということですね・・・
うむむ、勉強になりました

436:デフォルトの名無しさん
08/10/06 09:33:07
rhino: a,a,a,h,h,h,h
tamarin: aahh


437:デフォルトの名無しさん
08/10/06 10:21:03
この辺の話になるのかなぁ
URLリンク(bugs.ecmascript.org)
[RegExp: Change behavior for backreferences to non-participating groups]

URLリンク(web-graphics.com)
URLリンク(web-graphics.com)
URLリンク(mail.mozilla.org)
URLリンク(mail.mozilla.org)
URLリンク(mail.mozilla.org)

438:デフォルトの名無しさん
08/10/06 11:51:29
そこんとこ3.1は今のところ3.0のまま。


439:デフォルトの名無しさん
08/10/06 15:24:51
>>436
ちょw tamarin!

tamarinってもうSpiderMonkeyにマージされてんの?


440:デフォルトの名無しさん
08/10/06 16:04:29
spidermonkey: a,a,a,h,h,h,h,h

441:デフォルトの名無しさん
08/10/06 16:09:13
kjsembed(KDE): a,a,h,h

442:デフォルトの名無しさん
08/10/06 16:14:42
v8: a,a,a,h,h,h,h


443:デフォルトの名無しさん
08/10/06 17:03:08
IE/Tamarin/kjsembedはキャプチャ括弧の内容を追加してないんだろうけど
SpiderMonkeyがhを余分に出すのが謎だな

444:こりゃたまらん!
08/10/06 17:25:01
>>443
tamarin> 'aahh'.split(/(?=(.)\1*)/)
aahh
tamarin> print('aahh')
aahh
tamarin> 'aahh'
aahh



445:デフォルトの名無しさん
08/10/06 17:37:28
>>439
>>370 >>375 >>380

446:443
08/10/06 18:28:15
>>444
あ、すまん、まったく分割されてないのね。カンマを脳内補完してた
Tamarin環境がないんだけど['a', 'a', 'h', 'h']ならa,a,h,hと出るんだよね?

447:デフォルトの名無しさん
08/10/06 19:17:53
tamarin> ['1','2','3','4']
1,2,3,4


448:デフォルトの名無しさん
08/10/06 20:56:53
タマランw

449:デフォルトの名無しさん
08/10/06 22:33:15
PerlとRubyはv8と一緒だねぇ。
Pythonは分割してくれなかった。


450:デフォルトの名無しさん
08/10/06 23:26:21
なんでjsの正規表現エンジンって独自なんだろう?って所まで遡るわけか

451:デフォルトの名無しさん
08/10/06 23:41:05
正規表現の拡張は許されてるんだから
WebKitとかPCRE使うならPCREの機能フルに提供しろよって感じだな

452:デフォルトの名無しさん
08/10/07 01:16:32
rubyの正規表現は鬼車だっけ

453:デフォルトの名無しさん
08/10/07 11:12:21
PCREは仕様が結構変わるし、
PCREのまんまって仕様は難しいと思う。
今でもブラウザ依存が問題になっているのに。

それから、マッチに失敗した時は、空の配列を返せばいいのに…

454:デフォルトの名無しさん
08/10/07 11:30:25
import pcre.*;
出来るようにならないかなあ。

455:デフォルトの名無しさん
08/10/07 14:04:55
名前空間ってアボーンしたんじゃなかったけ?

456:デフォルトの名無しさん
08/10/07 16:01:35
import pcre;でいいよ、もう。

457:デフォルトの名無しさん
08/10/08 17:35:46
C++0xのregexがECMAScriptの仕様を参照しているから、
こっちが変わったら向こうにも影響するかも。

458:デフォルトの名無しさん
08/10/08 21:12:10
正規表現で?<が使えるようにならないかな

459:デフォルトの名無しさん
08/10/08 22:40:48
>>457
なんでよりによって?混乱すると思うんだが

460:デフォルトの名無しさん
08/10/08 22:47:41
いっそSNOBOLとかIconを標準ライブラリに含めればいいんだよ。
javaあたりがやりそうで怖いけどなw

461:not 457
08/10/09 01:09:33
>>459
正規表現文法は数タイプ実装され、フラグで切り替えられて、
そのsyntax_option_typeの中にECMAScriptというのがある。
ただECMA282と明記された上で、さらなる改変部分も明記されているので、
大きな混乱は生じないんじゃないか。

ECMAScriptの仕様でも、もし挙動を変えるとすれば、
互換モードを付けることになるんじゃないかな。

462:デフォルトの名無しさん
08/10/22 15:20:15
262-3rd の 7 節を今ごろ読んでるんだけど、
lex レベルで InputElementDiv と InputElementRegExp のどちらを使うべき文脈か
なんてのは簡単に決められるの?結局きちんとパーズしないと駄目?

463:デフォルトの名無しさん
08/10/22 17:39:15
文脈自由文法とかチョムスキー標準形とか分かりますか?

464:デフォルトの名無しさん
08/10/26 23:31:11
V8からOpenOfficeのUNOに接続できたら汎用言語になる?

465:デフォルトの名無しさん
08/10/26 23:33:04
今でも十分に汎用だよ。

466:デフォルトの名無しさん
08/10/27 00:35:59
Rhinoな俺にはバックのjavaのライブラリが膨大すぎるんだがw
LiveConnect最高だ。

467:デフォルトの名無しさん
08/10/27 10:57:21
>>464
やれやれー

468:デフォルトの名無しさん
08/10/27 15:40:22
>>406
ES3.1はグローバルな名前空間一つしか用意しないで、
moduleを導入するみたい。elispやschemeのように。

>>399のような難しい話じゃないみたい。
とにかく仕様を整理しないといけないから、
構文も意味も全くいじらないで3.1を出す。
いじるのは4で入れる。

ただしコンパイル環境と実行環境でそろえないとまずいもの、
静的型チェック、名前空間などは入れたくないということらしい。
URLリンク(ejohn.org)

まあ、静的型チェック、名前空間があろうがなかろうが、
プログラムを書いている時と実行している時の
モジュールの仕様が変わったら、問題は出るはずなんだけど。
それを起こさないためのドメイン名風階層名前空間と
バージョン管理なんだから。


469:デフォルトの名無しさん
08/10/27 23:09:19
>>468
ES3.1 draft に module 関係の言及はないと思うけど…後はいいけど。

470:デフォルトの名無しさん
08/10/27 23:40:47
え? elisp にモジュール入るの?

471:デフォルトの名無しさん
08/11/21 12:56:07
そういえばActionMonkeyが取りやめになったって、
MozillaがTamarinのGCを使うとかいってたのはどうなったの?
TraceMonkeyのGCはSpiderMonkeyのままなの?

472:デフォルトの名無しさん
08/11/21 13:39:11
>>471
Mozilla Developer Conference 2008 で講演してた浅井さん曰く、
Tamarin の GC 取り込みはやる予定だが Fx 3.1 (Gecko 1.9.1) には入らないんだとさ

Fx 3.2 とか Fx 4 以降になるんじゃないかっていう話だったと思う
詳しく覚えてる人いたら詳細求む

473:デフォルトの名無しさん
08/11/21 14:17:01
Tracing JITも同時に入れるって話じゃなかった?

tamarinのソースを少し読んだがあまりの汚さに驚愕。
入れるの取り止めになって正解。
あまりのことにMozilla弱体化の陰謀かと思ったよ。
Action Scriptの仕様は結構好きなんだが。

474:デフォルトの名無しさん
08/11/21 18:05:33
>>471
URLリンク(wiki.mozilla.org)
URLリンク(hg.mozilla.org)
URLリンク(steps.dodgson.org)

475:デフォルトの名無しさん
08/11/22 12:51:48
3.1にObject.seal()入るんだ。freeze()も。
よかった。

476:デフォルトの名無しさん
08/11/23 05:15:49
前方互換が無くなるだけで不要な機能だろ
無用な方言を増やすだけの概念

477:デフォルトの名無しさん
08/11/23 09:13:33
class, moduleその他、
動的に変って欲しくないオブジェクトのために必要なんだよ。

478:デフォルトの名無しさん
08/11/23 22:17:26
seal も freeze も、Object.defineProperty の糖衣構文だと思う

やってることは「内部プロパティを変更」という点で共通してる
あるととっても便利(特に [[Enumerable]] の変更)

479:デフォルトの名無しさん
08/11/24 03:15:50
便利かどうかなんて訊いた覚えはないがありがとう。
>“前方互換が無くなるので不要な機能”
forEach とかクラスメソッドは 3.0 でも Array や prototype を事前に拡張することで対応できる。
しかし Object.defineProperty は?
IE6 と IE7 で動かすためには __*** とか適当なプロパティ作って、
forEach をそれを見るような実装で上書きするような実装しか今俺には思い浮かばない。
とここまで forEach がある Array ならいいが
Object には Enumerable 関数は考えられてない(アホだよな)から
for in に対応できるような実装は不可能。

4.0 から 3.1 にした意味は?中の人は何も学習してないんだろうか。

480:デフォルトの名無しさん
08/11/24 11:32:42
>>478
seal, freezeに関しては、
重要なのは提供方法ではなく、
・Objectが[[extensible]]でなくなる
・propertyが[[flexible]]、[[writable]]でなくなる
そのための方法があること。
これでライブラリー内部のエラー処理がずいぶんと楽になる。
ライブラリーユーザ側のデバッグも。

[[enumerable]]に関しては、
今のままではdirty hackの巣窟になりそうで、
何とかしないといけないとは思うけど、
前方互換の問題があるから慎重にやるべきだと思う。
特にメタな仕組みを持つライブラリに影響が大。
for in抽象はもうちょっとうまく整理するやり方があったと思う。
Javaのcontrol invacation syntaxみたいな。

481:デフォルトの名無しさん
08/11/25 02:52:09
Object.forEach みたいな関数が出てきたとして、
Object はルート要素なんだから、全てのオブジェクトに forEach が無いとおかしい罠。
元はと言えば Object をハッシュのように使った“慣習”のツケなんだけど…

482:デフォルトの名無しさん
08/11/25 09:28:53
>>481
> 元はと言えば Object をハッシュのように使った“慣習”のツケなんだけど…
kwsk

実装自体は連想配列なのに、使ってはならない理由があったの?


483:デフォルトの名無しさん
08/11/25 10:03:02
Array のようにちゃんとデータ型として規定されてれば、
メソッドやプロパティの名前空間とぶつかるような実装にはならなかっただろうし、
enumerable のアリナシに四苦八苦することも少なかっただろうって話

484:デフォルトの名無しさん
08/11/25 10:44:37
要はHashとかDictionaryとかいう型を別に作っておけばよかったということだな
中身はObjectとまったく一緒でいいけど

485:デフォルトの名無しさん
08/11/25 10:53:50
特殊な組み込み型を用意するんじゃなくて、
そういうものを実装できる機構があればいい。

[[enumerable]]に関しては、
>>481の言うようにforEachはどのObjectも持つようにして、
for inはforEachメソッドを呼び出すように再整理するのがいいと思う。

Property attributeによる整理で基本的にはうまくいっている。

486:482
08/11/25 12:16:11
thx

> 要はHashとかDictionaryとかいう型を別に作っておけばよかったということだな
言われてみれば激しく同意だなー


487:デフォルトの名無しさん
08/11/25 18:04:15
>>484
そうすると、ESのESたる特徴がなくなってしまいますな。
つーか、それ、何のJavaの亜流?って感じになっちまう。実際なりそうだけど。 orz

488:デフォルトの名無しさん
08/11/26 09:44:23
ボタンAを押すと自動的にボタンBを押すスクリプトはどう書けばよろしいのでしょうか?

489:デフォルトの名無しさん
08/11/26 11:06:05
>>488
click()
たぶんスレ違いだからJavaScriptスレ池

490:488
08/11/26 13:36:50
いえ、ecmaです。
よろしくお願いします

491:デフォルトの名無しさん
08/11/26 13:45:27
ECMAScriptの仕様にボタンはない

492:デフォルトの名無しさん
08/11/26 17:09:54
>>488
スレ違

たぶんこっち↓
+ JavaScript の質問用スレッド vol.67 +
スレリンク(hp板)

493:デフォルトの名無しさん
08/11/26 18:30:20
> for in抽象はもうちょっとうまく整理するやり方があったと思う。
> Javaのcontrol invacation syntaxみたいな。

> for inはforEachメソッドを呼び出すように再整理するのがいいと思う。
旧 ES4 だと iterator::values() iterator::items() iterator::keys()
とか提案されてたが、ボツったわけでどーすんのやら。
URLリンク(wiki.ecmascript.org)

494:488
08/11/27 12:19:04
ありがとうございます。
行ってみます

495:デフォルトの名無しさん
08/12/07 22:53:28
JScript「ecmaよ!私は帰ってきたぁー!!」

496:デフォルトの名無しさん
08/12/26 06:46:44
ECMAScript の仕様書に出てくる "NoIn" って何を意味するんだぜ?

497:デフォルトの名無しさん
08/12/26 10:39:43
>>496
for (<ここ>;...;...)
for (<ここ> in ...)
<ここ> の場所では in 演算子を使っちゃ駄目ってこと。

URLリンク(www2u.biglobe.ne.jp)
の note

498:496
08/12/26 16:06:40
>>497
ありがとう。

499:デフォルトの名無しさん
09/01/03 19:39:07
499

500:デフォルトの名無しさん
09/01/03 19:39:27
500

501:デフォルトの名無しさん
09/01/24 21:01:52
ナットシェルのgood partが翻訳されて並んでたよ。
いい本だからお勧め。

502:デフォルトの名無しさん
09/01/30 23:17:06
宣伝乙


503:デフォルトの名無しさん
09/01/31 00:05:19
いやいや久々のECMA的Javascript本ですよ。

504:デフォルトの名無しさん
09/01/31 07:53:26
宣伝乙

505:デフォルトの名無しさん
09/01/31 10:33:12
2chの悪い癖だよね。
すぐに「社員」だの「工作員」だの。

506:デフォルトの名無しさん
09/01/31 11:40:47
>>505
ただの相槌だから、
全く無反応よりはまし、と思っとけばよい。

507:デフォルトの名無しさん
09/01/31 14:21:57
しかしnew使うなって言われるとちょっと違和感あるな。
個人的には関数はlowerCamel、コンストラクタはUpperCamelで
名づけるという「規約」をしみこませればそれでいいと思うんだけど。

508:デフォルトの名無しさん
09/01/31 14:42:22
使うなとは書いてないよ。
>>507は読んでるから知っているだろうけど、
コンストラクタをnewなしで読んで、グローバルなthisを変更するミスを防ぐために、
UpperCamelでnew向けに書かれていることがはっきり分かるようにするといい。
もっといい対処方法はnewを使わないこと。
と"bad parts - new"の節に書いてある。
「ミスを防ぐためには」が前提の工夫の話。強制はしてない。


509:デフォルトの名無しさん
09/01/31 18:31:13
なんで関数はlowerCamelなの?
キモい

510:デフォルトの名無しさん
09/01/31 19:27:27
new 自体は使っているが、それを「見せないように」する、というハナシが書いてある(Object.create を実装するときに内部で new 使ってる)

ちなみに、Object.create は ECMASCript 3.1 の WD で定義されてる

511:デフォルトの名無しさん
09/01/31 20:47:27
ファクトリメソッドってやつか。俺はnewの方が好きだな。

512:デフォルトの名無しさん
09/01/31 21:17:29
var a = new Hoge();

a = {};
a.prototype = Hoge;
Hoge.call(a);
って等価?

513:デフォルトの名無しさん
09/01/31 21:49:53
call()の第一引数は関数として呼び出すしcall()は戻り値がundefindだから別じゃない?

514:デフォルトの名無しさん
09/01/31 21:51:02
ミス:call()は戻り値がundefind
call(a)は戻り値がundefind

515:デフォルトの名無しさん
09/01/31 22:38:18
>>512は改めて見ると間違ってた
var temp = {};
temp.__proto__ = Hoge;
Hoge.call(temp);
var a = temp;
これなら等価かな?

516:デフォルトの名無しさん
09/01/31 22:48:51
temp.prototype();
でいいけどね。

517:デフォルトの名無しさん
09/02/01 17:10:33
すみません、教えてください。

↓のように二次元配列mを定義してwebブラウザのdocument.writeで
表示させてみると、定義の仕方によって表示が異なるのはなぜでしょうか。
また、【2】のように定義した場合でも、mに書式を与えて出力する関数を
書かずに【1】のように表示させる方法はあるでしょうか。

【1】リテラルで定義

var m = [ [ 1, 2 ], [ 3, 4 ] ];
document.write( m );        // 1,2,3,4 と表示

【2】コンストラクタで定義

var m = new matrix ( [ 2, 2 ] ); //要素が空の2x2配列を生成
hoge(m);               //適当な関数で各要素に数値を代入
document.write ( m )       // [object Object] と表示

//matrixの定義

function matrix (size) {      //sizeは[行数、列数]の形の配列

var i;

this.length=size[0];
for (i=0; i<size[0]; i++) { this[i]=new Array(size[1]) };

}


518:デフォルトの名無しさん
09/02/01 17:32:16
>>517
1はArray.prototype.toString()の結果でそうなる。
2はmatrix.prototype.toStringを定義してないから
結果的にObject.porototype.toString()が使われる。

519:デフォルトの名無しさん
09/02/02 20:37:36
4月でRhinoリリース10周年

520:デフォルトの名無しさん
09/02/02 23:40:19
まじ?もうそんなたつの?

521:デフォルトの名無しさん
09/02/03 01:23:33
MocaScript時代入れるととっくに10年過ぎてるSpiderMonkeyも思い出してあげてください。

522:デフォルトの名無しさん
09/02/03 01:25:38
Spidermonkeyのソース読むと目眩するわ。
Connect, connect、どんだけ接続すんのかと。

523:デフォルトの名無しさん
09/02/03 10:21:17
なに、NN5のソースに比べたらry

524:デフォルトの名無しさん
09/02/03 13:40:32
mozilla関連のソースコードはもはやレガシーコード
いわばバベルです

525:デフォルトの名無しさん
09/02/03 16:04:10
Fx4 (Mozilla 2) でその辺り整理するんだっけか

526:デフォルトの名無しさん
09/02/03 19:47:38
Firefoxのコード見たらなんかキモかった

527:デフォルトの名無しさん
09/02/03 23:47:37
NN5のソース見たらもっときもいぞ。
そもそもWinMain自体間違ってるとか・・・

528:デフォルトの名無しさん
09/02/04 22:42:13
サイ本を超えるJavaScript(EcmaScript)本って出ないんだろうな。
そこまでいったら仕様書暗記しろレベルなんだろうな。

529:デフォルトの名無しさん
09/02/04 23:49:10
俺はgood partがECMAscript本のベスト1だと思うよ。


530:デフォルトの名無しさん
09/02/06 00:45:07
URLリンク(journal.mycom.co.jp)
> 【速報】Opera新JavaScriptエンジンCarakan発表、50倍高速化も

URLリンク(daniel.gredler.net)
> JavaScript Performance: Rhino beats IE? (daniel.gredler.net)

531:デフォルトの名無しさん
09/02/06 17:18:18
OperaはCSSもそうだが特定の目的にのみ特化して最適化されてるから鵜呑みにしない方が良い。
汎用で早い部類に入るのはRhinoのコンパイルモードくらい。

532:デフォルトの名無しさん
09/02/06 23:07:17
>>531
・Opera同士の比較である
・SunSpiderという標準的なベンチを使ってる
ということで、一行目はちょっと的外れかも。

533:デフォルトの名無しさん
09/02/09 18:13:39
good PartsはDouglas Crockfordが著者だっけ?
JSONとかAjaxとかアホらしい。

534:デフォルトの名無しさん
09/02/09 20:19:58
>>533は先入観が激しくてプログラマには向いてないな。


535:デフォルトの名無しさん
09/02/11 06:38:44
いや、俺もAjaxは今やるのアホらしいと思う。
DOM-level3が全部勧告されてからにしたい。
イベントモデルが標準化されんことには……

536:デフォルトの名無しさん
09/02/11 09:26:15
やる・やらないを技術の内容で決めてどうすんのさ。手段でしかないのに。

まぁ、やりたくない→やらなくて済む ならそれはそれで幸せだが。


537:デフォルトの名無しさん
09/02/11 11:50:51
手段でしかないなら、普通はその技術の内容で
やる・やらないを決めると思う

538:デフォルトの名無しさん
09/02/11 12:09:44
やりたいことがやれるかどうか、じゃねえの?

539:デフォルトの名無しさん
09/02/11 13:03:41
Good Partsは、Ajaxのことは書いてない本

>>533はそういうことには触れてないくだらないボヤキ。



540:デフォルトの名無しさん
09/02/11 13:04:30
やるやらないじゃなくて
やれるやれないじゃないの?

541:デフォルトの名無しさん
09/02/11 15:53:06
>>535
今から歩いて、道を作っておくのも悪くない。

542:デフォルトの名無しさん
09/02/11 15:53:48
ハムレットかよ!

543:デフォルトの名無しさん
09/02/11 16:56:03
この流れは……
XMLHttpRequest(とXMLDocument)が
ECMAの組み込みオブジェクトになるフラグですか?

544:デフォルトの名無しさん
09/02/11 17:14:23
>>543
どの流れか知らんがW3CがDOM/XHRをEcmaに
移管するという話は聞かないしそれはないだろうな。

それよりも URLリンク(journal.mycom.co.jp)
でモジュール読み込み周りが決められたら、それと
ES Harmonyのモジュール周りとがどう関係してくるか気になる。

545:デフォルトの名無しさん
09/02/11 17:59:15
>>543
Modules 原案
URLリンク(docs.google.com)

URLリンク(mail.mozilla.org)
1月のミーティングでは好印象、作業も少しはじめてる?
Dave Herman 自身は気になる所もあるようだが、詳細不明。

546:デフォルトの名無しさん
09/02/11 22:32:03
そもそもJavaScriptだけがなぜかEcmaで標準化されたのか?
W3Cがやっておけば関連仕様との調整もスムーズに行きそうなのに。
DOMとかXMLHttpRequestって絶対言語に食い込んで来ると思うんだが。
jsは元々DOMを操作するための言語だったし、js1.4で仕様が切り離されるまでは・・・。

547:デフォルトの名無しさん
09/02/11 22:54:36
W3CはJavascript否定路線だったもん。
W3C自体今はかなりやばい立場だし。

548:デフォルトの名無しさん
09/02/11 23:12:37
W3CはNTTのせいでNGNが完全にバズワードになってるのがカワイソス。

549:デフォルトの名無しさん
09/02/13 08:08:13
Compact Profileはeval入ってないのか。
JSONじゃなくXMLだけでAjaxやれってこと?

550:デフォルトの名無しさん
09/02/13 14:52:04
JSONはes4で読み込みライブラリが付くはずだったけど3.1はどうなるんだろう。

551:デフォルトの名無しさん
09/02/13 15:22:36
>>549>>550
いつの話をしてるの?
Ajaxなんてまるで想定してないのがES-CP。
URLリンク(www.ecma-international.org)

552:デフォルトの名無しさん
09/02/13 22:30:12
>>549
Compact Profile の考えを Security 関連に絞って再構築しているのが
Secure ECMAScript。これも eval がない。
URLリンク(wiki.ecmascript.org)

>>550
Draft as of 09 Feb 2009 だと JSON 関連は生きてるが
URLリンク(wiki.ecmascript.org)

553:デフォルトの名無しさん
09/02/13 23:41:25
>>551
もう3.1はこのドラフトで殆んど出来上がってるように見えるんだが
あと何が足りないんだ? さっさと勧告してほしい。
遅れれば遅れるほどIEのJS2の実装が延びる……

554:デフォルトの名無しさん
09/02/13 23:47:27
MSが実装をどうするかなんて標準化作業の進み具合とはあまり関係ないだろ。
直接MSにこれはこうだからこうしろと文句いうほうが10倍は影響力がある。

555:デフォルトの名無しさん
09/02/13 23:48:48
IEなんざapplication/ecmascriptどころか
application/javascriptすら読み込まないじゃねーか
当分無視でいいだろ。

556:デフォルトの名無しさん
09/02/14 00:27:01
>>553
IEのスケジュールに影響するから早くしろって言うのか?


557:デフォルトの名無しさん
09/02/14 00:52:02
JScriptなんて元々眼中にない。
Ecmaに限ったことじゃないが今まで散々標準に準拠しなかったのが最近になって対応をやってるが
ブラウザ界だとIE8を超えれば落ち着くだろう。(もちろん、ろくな標準準拠は果たせず)
XML関連はもっと悲惨だろう。
今の実装を捨てない限り永久にまともな実装は出てこないだろう。

結果、相も変わらずIEは無視したいができない現状が続くかと・・・。

558:デフォルトの名無しさん
09/02/14 06:20:35
IEの何が悲惨って、
実装が糞のくせにOS組み込み型だから
アップデートが遅いのが一番悲惨

Chromeみたいに一定周期で安定版を
出してくれれば、まだ救いがあるのに

559:デフォルトの名無しさん
09/02/14 08:13:14
IEならWindowsUpdateがあるじゃないか
ただ大田総理が「今までできてたことができなくなるからUpdateイラネ」って言ってた。


560:デフォルトの名無しさん
09/02/14 09:21:14
敢えてアップデートはせずに脆弱性突かれ放題にしておくんですね。分かります。

561:デフォルトの名無しさん
09/02/14 09:40:18
大田総理が言いたいのは
「今まで脆弱性を突き放題できてたことができなくなるから皆がUpdateするのイラネ」
ってことじゃね

562:デフォルトの名無しさん
09/02/28 11:19:06
stringオブジェクトについて少し質問です。
標準仕様にあるtoLowerCaseメソッドとtoLocaleLowerCaseの違いについて知りたくて調べております。
標準仕様によると
> 正規 Unicode 文字マッピングで言語の規則が干渉する (たとえばトルコ語のような) ごく一部の文字でのみ違いが存在する。
とありますが、この文章の意味はいったい何なのでしょうか?
最初はドイツ語のウムラウト(Ü)等、英語のアルファベット以外も正しく小文字に変換するのだろうと思っていたのですが
ドイツ語やフランス語でも(toLowerCaseメソッド/toLocaleLowerCase)の双方で結果が同じでした。
キリル文字(ロシア語)のグレイヴ付きЕ、グレイヴ付きИだけ、ブラウザごとに違いが出ました。
正直浅学を恥じますが、少々でも知識のある方いらっしゃいましたらご教授お願いいたします。


563:デフォルトの名無しさん
09/02/28 12:20:34
実装依存じゃないのかな。

564:デフォルトの名無しさん
09/02/28 13:18:10
トルコ語の例というのは多分Iとİのことでしょう。
通常ならIの小文字はiですが、トルコ語にはIの他にİという文字があり、
iは後者の小文字として扱われます。
I → ı
İ → i
この辺をきっちり処理するのがtoLocaleLowerCaseなのではないかと。

565:562
09/02/28 15:28:43
なるほど、そうなると日本語を選択した環境では
「I」、「İ」共に小文字のiが返るのが仕様上正しいのですね。
一応各ブラウザ上での動作です。
IE:I→i,İ→İ
Firefox:I→i,İ→i
Opera:I→i,İ→i
Saari:I→i,İ→i
ieだけlocaleLowerCaseで大文字のİが返ります。

グレイヴ付きЕ、グレイヴ付きИでの変換の結果が違うのは、マイナー文字なので対応が遅れているだけなのでしょう。


566:デフォルトの名無しさん
09/02/28 17:41:38
そういやString.toLocaleString()って仕様上はロケールに合わせた文字列を返すんだよな。
SpiderMonkeyの実装だとObject.toLocaleString()はtoString()を返してArray,Number,Dataしかオーバーライドされてないんだが結局これも実装依存なんだろうか?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch