13/05/30 14:10:10.49
>>240
ほとんどのシステムで時計見るのは遅いよw
244:デフォルトの名無しさん
13/06/01 03:42:36.21
>>237
課題はできた?
亀だが。
f();
とすることで取り出せるから。
上のは全然できてないから、これちゃんと提出してね。
var f = (function () {
var b = this.a,
l = b.length,
r = function (l) {
return Math.floor(Math.random() * l);
};
return b[r(l)];
}).bind(
(function (a) {
var r = [],
i = 0;
a.forEach(function (m, v) {
for (i = 0; i < m; i += 1)
r.push(v);
});
return {a: r};
}([3, 7]))
);
245:デフォルトの名無しさん
13/06/02 21:39:31.17
>>237
var f = function() {
var base = 10000000;
var r = Math.floor(Math.random() * 10 * base);
return r < 3 * base ? 0 : 1;
};
// 検証コード
var zero = 0;
var one = 0;
for (i = 0; i < 10000000; ++i) {
var result = f();
if (result == 0) {
++zero;
}
if (result == 1) {
++one;
}
}
print(zero / (zero + one)); // => 0.2999617
print(one / (zero + one)); // => 0.7000383
246:デフォルトの名無しさん
13/06/02 21:42:53.65
少し間違った
var f = function() {
var base = 10000000;
var r = Math.floor(Math.random() * 10 * base + 1);
return r < 3 * base ? 0 : 1;
};
247:デフォルトの名無しさん
13/06/04 16:55:54.33
>>244,245
↑
こいつらは何がしたいわけ?
248:デフォルトの名無しさん
13/06/07 12:17:25.74
どっかのアホなスレと勘違いしてるんだろ
249:デフォルトの名無しさん
13/07/25 NY:AN:NY.AN
(function (x) {
y=2;
print(x,y);
function(x){x=10;y=20;print(x,y)};
print(x,y)})(1)
[出力]
1 2
10 20
1 20
これ一体どう実装されているんだろう?
クロージャの生成で変数テーブルの参照を共有するのだろうから
yの変更が反映されるのは至極真っ当。
xの変更が反映されないのは、引数については変数捕捉されないように細工がされている?
a.クロージャ生成時に見えていた変数テーブル
b.クロージャ引数用の変数テーブル
この2つを持っていて、変数評価時に走査している?
さらにクロージャの中でクロージャ生成する場合は
a,bを合わせて新たに1つのaにしているんだろうか。
250:デフォルトの名無しさん
13/07/25 NY:AN:NY.AN
>>249
単純に4行目のfunction宣言内で新しい環境が作られているからじゃね?
つまり3行目と5行目のprint呼び出しに現れるxは、
1行目のfunction宣言の環境内で束縛されているけれど、
4行目はのprint呼び出しは(新しい)別の環境内にあるx(の束縛)を参照している
251:デフォルトの名無しさん
13/07/25 NY:AN:NY.AN
4行目が
function(x){x+=10;y=20;print(x,y)};
だとどうよ
252:デフォルトの名無しさん
13/07/25 NY:AN:NY.AN
>a,bを合わせて新たに1つのaにしているんだろうか。
スタックみたいにテーブルを重ねていくんじゃね
253:デフォルトの名無しさん
13/07/25 NY:AN:NY.AN
>>249
たまたま名前が同じだが以下と同じだ。
(function (x) {
y=2;
print(x,y);
function(z){z=10;y=20;print(z,y)};
print(x,y)})(1)
名前が同じだけで別のものだ。
scopeって考えを理解できてない。
254:デフォルトの名無しさん
13/07/25 NY:AN:NY.AN
>>249
出力結果おかしくない?
4行目は即時関数じゃないから、実行されないと思うんだけど。
実行環境によっては、それで実行されるのか?
それ以外は453が正解だと思うが。
255:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN
変数yとかzがグローバル変数だし
4行目が名前無しの関数宣言?してるだけだし
もうなんかプログラム的にめちゃくちゃ
256:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN
zはグローバルじゃない。
257:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN
トップレベルで束縛されている変数を「グローバル変数」と呼び、
それ以外のすべての変数を「ローカル変数」と呼ぶとすれば、
>>256が言うようにzはグローバル変数じゃないし、それどころか
>>249,253ともすべての変数がローカル変数だったりする
で、あるクロージャ(ここでは環境と同義)について、
自クロージャ内で束縛されている変数を「束縛変数」と呼び、
より外側のクロージャで束縛されている変数を「自由変数」と呼ぶとすれば、
>>249の場合
[外側のクロージャ内] x(仮引数): 束縛変数, y: 束縛変数
[内側のクロージャ内] x(仮引数): 束縛変数, y: 自由変数
>>253の場合
[外側のクロージャ内] x(仮引数): 束縛変数, y: 束縛変数
[内側のクロージャ内] x: 自由変数, y: 自由変数, z(仮引数): 束縛変数
となる
258:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN
>>257
yはグローバル変数だぞ
259:255
13/07/26 NY:AN:NY.AN
>>256-257
ごめんzはちょっと見落としてたよ
でもyはグローバル変数だろ?
仮引数じゃなければ、varつけて宣言してない変数はトップレベルに束縛されてしまうはず
なのでyはグローバル変数じゃない?
260:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN
内側のクロージャの宣言はChromeとかだとエラーになるな
そもそも呼び出してないんで実行結果にまったく影響無いが
これが実行できてしまう環境ってなんなの?
261:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN
え、関数が関数返せない処理系なんかあるの?
262:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN
関数が何かを返すなら少なくともreturn文が必要だな
>>249と>>253はreturnも無いし関数の戻り値も参照してないけど
263:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN
(function(){var abc; abc=function(){};})();
(function(){function abc(){};})();
(function(){function(){};})();
firefoxもchromeも三つ目だけシンタックスエラーになるね
無名関数の定義は式の右辺値になってないとだめなのかな
関数宣言と紛らわしいからか
264:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN
式の右辺値とか関係無いか
関数宣言になっちゃって、その場合は無名じゃダメってことなのかね
265:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN
SyntaxError: function statement requires a name
が出るから多分そうだね
266:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN
IEはドキュメントモードによってはエラーにならんのか
わらえるw
267:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN
wshはエラー出ないね
268:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN
Edition 3rdしか見てないけどECMA-262の仕様的にはfunction(){function(){};}はエラー
269:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN
JScriptだから(震え声)
270:デフォルトの名無しさん
13/07/27 NY:AN:NY.AN
>>249
コードが間違ってないなら結合オブジェクト実装しちゃったんだろう
271:デフォルトの名無しさん
13/08/03 NY:AN:NY.AN
どうやら、6の仕様が確定するのは今年末で、最終的にリリースされるのは来年末らしいな。
もうちょっと早くなんなかったのかね。
272:デフォルトの名無しさん
13/08/04 NY:AN:NY.AN
・なぜ匿名関数呼び出しの際function(){}を括弧でくるまなければいけないのか
・なぜreturnがいるのか
ファンクショナルなことしてると助長になりすぎ
273:デフォルトの名無しさん
13/08/04 NY:AN:NY.AN
うが抜けた
274:デフォルトの名無しさん
13/08/04 NY:AN:NY.AN
うはどこに入るのか
275:デフォルトの名無しさん
13/08/04 NY:AN:NY.AN
助う長
276:デフォルトの名無しさん
13/08/04 NY:AN:NY.AN
・なぜ「う」がいるのか
277:デフォルトの名無しさん
13/08/04 NY:AN:NY.AN
鵜飼のためにうは存在する。
278:デフォルトの名無しさん
13/08/05 NY:AN:NY.AN
>>272
functionの前にvoidとか ! とか適当な単項演算子を書けば
括弧でくるまなくても良くなる
279:デフォルトの名無しさん
13/08/05 NY:AN:NY.AN
ほんとにファンクショナルなことやってるなら、
function(){}を括弧でくくる必要なんてほとんど無いはずなんだけどね。
returnは面倒くさいけど。
280:デフォルトの名無しさん
13/08/13 NY:AN:NY.AN
関数リテラル使って関数オブジェクトを複数作ると、一般的にメモリ上はどうなるんだろう。
関数オブジェクトが持つのはクロージャだけなのかコード部分(text領域)も複製されるのか。
関数リテラルによる関数複製のコストが知りたい。
281:デフォルトの名無しさん
13/08/13 NY:AN:NY.AN
ソース嫁
282:デフォルトの名無しさん
13/08/14 NY:AN:NY.AN
実装による、としか言いようがない。そしてこのスレはスレタイによれば標準規格についてのスレ。
ただ、ひとつ言っておくなら、textというのはバイナリコードを指す用語だから、
インタプリタには基本的にはそんなものはない。
283:デフォルトの名無しさん
13/08/14 NY:AN:NY.AN
>>280
関数宣言でも最適化でインライン展開するから実装者以外が気にすることじゃないな。
ariguments.calleeが遅いとか嘘で仕様からなくしたいだけだし。
>>282
純粋なインタプリタなんて素のspidermonkeyくらいじゃね?
284:デフォルトの名無しさん
13/08/14 NY:AN:NY.AN
素朴な通訳系実装なら構文木は共有してるし、
高度なJIT持っていれば>>283の一行目の通り。
ただシビアな要求のあるコード書いてる人は、
JITあってもプロファイル取ってあれこれやってる。
URLリンク(github.com)
285:デフォルトの名無しさん
13/08/30 NY:AN:NY.AN
標準準拠でさ、関数コンテキストでDontDelete属性付けずに変数定義するの方法てないよな?
esじゃなくてもActivationオブジェクトとる方法ないけどさ。
286:デフォルトの名無しさん
13/09/02 19:24:58.91
JavaScriptに出来ないことなんてあるわけ無いだろ
eval('var abc = 123')
delete abc //true
287:デフォルトの名無しさん
13/09/02 20:20:57.78
このスレって思い出話しかすること無い寂れた言語スレに比べて
いくらでも話題にできることあるはずなのに過疎りすぎじゃね
288:デフォルトの名無しさん
13/09/02 21:38:39.37
>>286
evalがあったか、忘れてた。MZ-700ばりに不可能はないな。
Variable Instantiation時にCallになきゃc(`Д´と⌒c)つ彡ヤダヤダ
じゃないけどstrict mode時には使えなさそうだ。
未修飾でdeleteするとstrict modeで例外出るしDontDelete付かないことは想定してなさそうだよね。
ここら辺つめが甘いっていうか。さすが付け焼刃のes5っていうか。
>>287
仕事で使ってる土方が言語仕様全く理解してないからこっちに用無いでしょ。
プロトタイプベースだし、動的extentのくせにレキシカルクロージャ出来るとか、
es5になってプロパティの定義(属性の指定)がsmalltalkっぽくなったとか知らん人間からはobj-cくらいキモいんじゃない?
289:デフォルトの名無しさん
13/09/03 06:57:07.17
プロパティの削除は無くてはならないけど
トップレベル変数を削除する必要のある機械なんて皆無でしょ
所によって宣言されていたり宣言が解除されていたり出来るのは変
290:デフォルトの名無しさん
13/09/03 17:44:39.86
>>289
静的型付け言語とかそういうのから見ればプロパティの削除どころか追加さえも変って事になるんじゃね?
291:デフォルトの名無しさん
13/09/03 20:46:39.95
プロパティの削除は機能として無くてはならないけど
関数スコープの変数宣言の解除とか使い道がないように思うんだけど
何百行もあるような関数でならまだあるのかな
292:デフォルトの名無しさん
13/09/04 00:38:38.43
>>289
>トップレベル変数を削除する必要のある機械なんて皆無でしょ
トップレベルの変数を削除なんて誰も言ってないだろ?strict modeで未修飾のdeleteならコンテキスト関係ないぞ。
どれのこと言ってんのか分からんから次の
>所によって宣言されていたり宣言が解除されていたり出来るのは変
が曖昧だが・・・プロパティが追加されたり削除されたりするのは動的言語では当たり前の仕組み。
当たり前である以上、議論する意味はなくない?ダックタイピングが型理論的にどういう分類になるか議論するのと同じことだろ。
293:デフォルトの名無しさん
13/09/04 00:42:34.78
変数はプロパティとは違うだろ
そりゃvar xはJSの内部概念的には__scope__.xだけど
294:デフォルトの名無しさん
13/09/04 01:55:53.59
概念じゃなくて言語仕様でVOのプロパティなんだけど。何がVOになるかは定義されてないけどVOは定義されてる。
295:デフォルトの名無しさん
13/09/04 02:32:00.91
うん、でもプロパティとは違うから。
296:デフォルトの名無しさん
13/09/04 02:34:45.15
うん、でもプロパティとは違うから。
297:デフォルトの名無しさん
13/09/04 03:10:06.27
うん、でもプロパティとは違うからw
298:デフォルトの名無しさん
13/09/04 03:54:10.85
>>289>>293>>295
>>290
想定してるパラダイムが一致してないのに、
「俺の想定するECMAScriptのパラダイムではこうだ!」
って主張しても何の意味も無いだろ。
「ECMAScriptの仕様上、
過去どう定義されていて、
過去どう解釈されていて、
現在どう定義されていて、
現在どう解釈されるべきで、
将来どう定義されるべきで、
将来どう解釈されるべきなのか」
299:デフォルトの名無しさん
13/09/04 12:16:53.34
あーこりゃ仕様に目が眩んで現実が見えてない
300:デフォルトの名無しさん
13/09/04 NY:AN:NY.AN
>>229
URLリンク(ambroselittle.com)
URLリンク(adambard.com)
> 36 TypeScript 972
URLリンク(github.com)
なんとなく確認してみたけど
qupzilla と qBittorrent は typescript だったんだ
…すごくいい加減そうな集計されてそう
301:290,298
13/09/04 14:25:34.29
>>299
いや>>289>>293>>295の人らも俺々仕様に目が眩んで現実が見えてないって話だよ。
「~と定義・解釈されるべき」だとしても「現状~と定義されている」事にはならんだろ。
コレで話が通じてなかったらどうにもならん。
302:デフォルトの名無しさん
13/09/04 14:35:03.70
お前が言うな
303:デフォルトの名無しさん
13/09/04 18:17:22.98
近頃のエンジンは再帰を末尾最適化してくれるらしいんだけど
その最適化がどういうコードならできて、どういうコードなら妨害してしまうのか知りたい
自分たまにボードゲーム作るんだけど、
そっちではスタックオーバーフロー見なくなったけど
ちょっとしたフィボナッチで起こったりするし
まあコードの書き方が悪いんだろうけど
304:デフォルトの名無しさん
13/09/04 21:53:05.57
ES6のArrayTypeってパフォーマンスのいい多重配列が定義できるってのはわかるんだけど、
単配列としてもアクセスできるってことなんだろうか?
var Uint8_10x10Array = new ArrayType(new ArrayType(uint8, 10), 10)
var arr = new Uint8_10x10Array()
arr[2][3] = 50
Uint8_10x10Array.storage(arr).buffer[2*10+3] //50??
305:デフォルトの名無しさん
13/09/04 22:55:04.77
ES6サポート遅いな……
privateとか今年中に実装されんのかな
306:デフォルトの名無しさん
13/09/05 00:37:56.08
再来月ラストコールなのに
中身の無い項目のあるドラフトとか、議論内容見てると非常に不安になってくる
307:デフォルトの名無しさん
13/09/05 09:28:25.95
5.1thの和訳ってないんですか?
308:デフォルトの名無しさん
13/09/05 12:48:00.89
変に英文キーワードの混じった和訳のほうが読みにくいと思うよ
309:デフォルトの名無しさん
13/09/05 15:35:31.71
>>307
一応ある(もちろん非公式・未保証)
忍者規制でURL直書きできないんで↓で:
www.webzoit.net/hp/it/internet/homepage/script/ecmascript/ecma262_51/
310:デフォルトの名無しさん
13/09/06 01:32:40.32
一日ぶりに来て伸びてるかと思えばなんだこれ。
>>290=298=301
あんた誰だよ。
ついでに言うとVOは名前だけEnvironment Record Specification Typesに変わってるぞ.
>>305
privateてdraft落ちてなかったっけ?
symbolがユーザー定義できなくなっただろ。
311:デフォルトの名無しさん
13/09/06 01:58:18.29
間違いなく採用はされる、Symbolとprivateをどうまとめるかの議論がもっと必要そうなだけ。
でもES7にしようとは誰も思ってないと思う。
HTMLのように1年毎くらいでES6.1、6.2と出る可能性がかなり高いかもしれない。
312:デフォルトの名無しさん
13/09/06 03:31:25.49
>>310
ユーザー定義は出来るのでは
URLリンク(wiki.ecmascript.org)
URLリンク(wiki.ecmascript.org)
313:デフォルトの名無しさん
13/09/06 07:05:18.48
>>312
それharmony、古い。draftが出てる。
Symbolまわりは今グドグドやっててworking draftに入ったり外れたりしてる。
314:デフォルトの名無しさん
13/09/06 07:53:24.88
>>313だが知らんと分かりづらいな。
harmonyで提案された中から選別されてdraftになる。それが↓のCurrent Working Draftのpdfの仕様書。
URLリンク(wiki.ecmascript.org)
この仕様も最新の議論が反映されてるわけじゃない。wikiは古いのも新しいのも関係なくページを残してるからそれが仕様になるとは限らんよ。
んで、だいたいharmonyの中身はes6に、漏れたのとstrawmanがes7に行く形。value objectみたいに。
基本es6はjavascript1.8.5の改良、es7はそれより上だからes7が出て初めて未来と遭遇するわけ。
315:デフォルトの名無しさん
13/09/06 09:26:15.18
>>314
いや、今のドラフトに乗ってないことなんて百も承知なんだけど。
そうは言ってもV8には既に仮実装されてるし、早期に採用される可能性が高い。
むしろされない理由がない。話し合いが足らないだけで採用する方向では合意取れてるんだし。
この頃は機能も増えて各進行度もバラバラドラフトだけじゃ追い切れないよ。
ちゃんとコミュニティの情勢も読まなきゃ。
316:デフォルトの名無しさん
13/09/06 10:33:10.17
ES.nextという言葉が使われだしてからもう実質Living Standardになってる
合意が取れてもドラフトに載せられるまでまとめるのが間に合わなくなりつつあるしあてにはできない
317:デフォルトの名無しさん
13/09/06 13:06:46.25
「あーこりゃ仕様に目が眩んで現実が見えてない」ってやつか
318:デフォルトの名無しさん
13/09/06 20:12:36.57
Number.MAX_SAFE_INTEGERとか
2^53±1のどの値にするかやプロパティ名になにが適切かが
決まるだけでもだいぶかかったしな
319:デフォルトの名無しさん
13/09/06 21:36:06.53
昨今一番もてはやされてるかもしれない言語が
十年ぶりに大きく変わろうとしているのに
この過疎りようはどうにかならんのかねぇ
320:デフォルトの名無しさん
13/09/06 22:43:40.90
ここ本スレじゃねぇし。
誰もECMAScriptなんて呼ばねぇよ。
321:デフォルトの名無しさん
13/09/06 23:06:35.21
ここよりも盛り上がってる本スレが存在するとな!?
是非教えてもらいたいw
322:デフォルトの名無しさん
13/09/07 00:22:32.33
JavaScriptで検索ぐらいしようよw
323:デフォルトの名無しさん
13/09/07 07:53:44.82
URLリンク(gaslight.co)
3年くらい遅くねぇか…
324:デフォルトの名無しさん
13/09/07 13:04:21.73
今まではその役割も兼ねてきたがこれからはTypeScriptって言われてる
325:デフォルトの名無しさん
13/09/07 14:41:13.54
JavaScriptで検索してもここよりもスレNo少なくて最近の書き込み数も劣ってるスレしか見つからんな
326:デフォルトの名無しさん
13/09/07 18:47:43.00
2ch全体ならWeb制作版の質問スレが一番賑わってるかね
327:デフォルトの名無しさん
13/09/07 19:00:27.22
それを言うのなら、
ウェブプログラム版じゃね?
なんでプログラム板と分かれてるのか知らないけど
328:デフォルトの名無しさん
13/09/07 19:01:26.63
いやWeb制作版だよ。
桁違いすぎるw
+ JavaScript の質問用スレッド vol.108 +
スレリンク(hp板)
329:デフォルトの名無しさん
13/09/07 20:47:44.93
屁理屈乙
そこ質問スレだから
俺も仕方ないから底で議論したりしてるけど
本来NGだから
330:デフォルトの名無しさん
13/09/07 23:24:39.01
[JavaScript] スクリプト言語34 [Perl,Python,PHP]
スレリンク(tech板)
これじゃないの?
331:デフォルトの名無しさん
13/09/08 00:21:12.67
そこは元JSerの隔離スレの残り
JSerとの衝突で一時スレが喧嘩分裂した
今は収まってて本スレはこっち
【PHP,Python】スクリプト,バトルロワイヤル37【Perl,Ruby,JS】
スレリンク(tech板)
332:デフォルトの名無しさん
13/09/08 01:05:07.84
今月のミーティングでは細かくはあるけど非常によく使う部分に関わる重要な部分が決まるみたいだな
333:デフォルトの名無しさん
13/09/08 01:54:36.00
ジェネレーター周りはこれで変更無さそう
URLリンク(domenic.me)
334:デフォルトの名無しさん
13/09/10 13:52:57.70
ES5の非常に秀逸な記事を見つけた。
このレベルは中々無い。
URLリンク(constellation.hatenablog.com)
335:デフォルトの名無しさん
13/09/11 00:05:34.67
多分unique symbols/private namesはES6に間に合って
どちらもユーザー定義出来ると思う
336:デフォルトの名無しさん
13/09/14 02:23:58.45
>>334
記述子使ったことない奴向けだな
337:デフォルトの名無しさん
13/09/16 23:03:46.05
ES6のオブジェクトリテラルは面白いな
URLリンク(wiki.ecmascript.org)
338:デフォルトの名無しさん
13/09/17 04:47:04.56
<| とか妙な記号の並び使うのはどうなのよ
339:デフォルトの名無しさん
13/09/17 12:09:02.13
obj = { a: 1 }
obj.= { b: 2 }
obj //{ a: 1, b: 2 }
が欲しい
340:デフォルトの名無しさん
13/09/17 14:46:47.01
演算子も1つじゃ足りなかったら、オーバーライドしなくても2つ3つと組み合わせればいくらでも作れるのね
そう言えば細菌は主にsortで使う、-1,0,1を返す<=>演算子が提案されてたね
341:デフォルトの名無しさん
13/09/17 14:54:12.59
んなもん大昔からPerlにあるわけだが
342:デフォルトの名無しさん
13/09/17 22:38:41.72
harmony:proposalsのページ情報がくっそ古くて役たたねえな
配列内包は
[ x for (x of a) if (x.color === ‘blue’) ]
[ square(x) for (x of [1,2,3,4,5]) ]
[ [i,j] for (i of rows) for (j of columns) ]
じゃなくて今はこうだろ
[ for (x of a) if (x.color === ‘blue’) x ]
[ for (x of [1,2,3,4,5]) square(x) ]
[ for (i of rows) for (j of columns) [i,j] ]
URLリンク(wiki.ecmascript.org)
343:デフォルトの名無しさん
13/09/18 01:48:14.19
for ofはfor each inでよかったのにって思ってるのは俺だけか?
E4Xから取り込んでソースコード互換を残して欲しかった。
344:デフォルトの名無しさん
13/09/18 02:20:20.06
for-each-inはfor-inと同様にプロトイプも辿る
配列にも安全に使えないぽっと出のポンコツ内部イテレータもどきだったでしょ
for-ofは正真正銘の外部イテレータでES6の中核機能
月とすっぽんくらい、ほんとに全然違う
JSは汎用的な言語だからE4XはES標準に組み込まれるまではいかないだろう
345:デフォルトの名無しさん
13/09/18 02:38:35.03
E4Xはこれで我慢して
URLリンク(wiki.ecmascript.org)
document.body.appendChild(dom`<span>${message}</span>`)
とか可能だと思う
346:デフォルトの名無しさん
13/09/18 06:52:13.60
これ楽しみにしてたのに否決されたらショックだ……
URLリンク(twitter.com)
347:デフォルトの名無しさん
13/09/18 21:46:30.03
URLリンク(www.youtube.com)
348:デフォルトの名無しさん
13/09/19 00:00:30.00
URLリンク(www.youtube.com)
349:デフォルトの名無しさん
13/09/19 00:07:13.85
URLリンク(www.youtube.com)
350:デフォルトの名無しさん
13/09/19 02:15:58.26
>>344
いやいや、シンタックスをfor each inにしてセマンティックスをfor ofにしてくれって意味。
351:デフォルトの名無しさん
13/09/19 02:40:51.35
動作が違うんだからソース互換守れないじゃん
何いってんのよ
352:デフォルトの名無しさん
13/09/19 03:36:17.94
<お知らせ>
このスレの住民が引っ越してきます
スレリンク(tech板)
353:デフォルトの名無しさん
13/09/19 14:12:57.57
DOMWorkerのTransferable objectsの仕組みをJSコアでサポートすることにより、
Workerの自由度と、将来のWorkerLikeな機能の可能性が格段に増す。
URLリンク(wiki.ecmascript.org)
これと同系統な仕様で、ES7期待の星のParallels
URLリンク(wiki.ecmascript.org)
354:デフォルトの名無しさん
13/09/19 16:46:08.91
ES6だと念願(?)だった配列のクローンがこんな簡単にできるのな。
a1 = [1,2,3,2,1]
a2 = [...a1] //[1,2,3,2,1]
でも現状のドラフトの仕様だとこれは配列にしか適応できない?
ここでも挙がってるがFirefoxの実装のようにいてレートしてくれる方がいいのにな。
URLリンク(esdiscuss.org)
そしたらこんな使い方もできるのに。
a3 = [...new Set(a1)] //[1,2,3] 重複排除
m1 = new Map()
m2 = new Map([...m1]) //Mapのクローン
355:デフォルトの名無しさん
13/09/19 17:54:56.39
このスレ過疎り気味だけど
お陰で最初の方を見るとES4の分析がいろいろされてて面白いな
ES6は時間を書けるだけのものになったのか、
また行き過ぎてないかを考えるのにちょうどいい
356:デフォルトの名無しさん
13/09/19 21:08:28.43
>>354
> ES6だと念願(?)だった配列のクローンがこんな簡単にできるのな。
え? 適当なライブラリの関数使えば、
今でも簡単にできるんじゃね?
357:デフォルトの名無しさん
13/09/19 21:30:18.63
たかが配列のコピーに何でライブラリ入れなきゃいけないんだってことだろjk
358:デフォルトの名無しさん
13/09/19 21:34:46.29
配列のコピーだけでプログラムが終わることなんて無いだろ?
ライブラリを入れるだけで、配列のコピー以外も含めて圧倒的に生産性が上がる。
目的と手段を履き違えてないか?
359:デフォルトの名無しさん
13/09/19 21:52:32.75
まあ今の仕様だと多重配列にはsliceと同じ問題があるけど
arr.slice()よりはカッコイイって事だな
イテレータブルなのを全部展開してくれれば
多重配列も一発クローンできるのにね
まあそれでもES6なら多重配列のコピーが従来よりも簡単に、且つ正確に定義できる
Array.clone = (...a) => a.map((v) => Array.isArray(v) ? Array.clone(...v) : v);
var arr2 = Array.clone(arr1);
>>358
流石にその発言はないわ
360:デフォルトの名無しさん
13/09/19 21:53:39.71
cloneするのに一番わかり易い文法って知ってるか?
b = clone(a)
これだよ?
361:デフォルトの名無しさん
13/09/19 22:02:21.42
関数オーバーライドが出来ないんだからそれはない
362:デフォルトの名無しさん
13/09/19 22:04:43.18
>>359より短く書けたw
更に古いブラウザにまで対応。
最強じゃね?
var _ = require('lodash');
var arr2 = _.clone(arr1);
363:デフォルトの名無しさん
13/09/19 22:14:44.01
お前がそう思うんならそうなんだろう、お前の中ではな
364:デフォルトの名無しさん
13/09/19 22:19:46.43
JavaScriptスレから移住してきた人にはスマンが
ここは標準仕様をメインで語るスレなのよ
ライブラリの話禁止というわけではないが
そういう話の流れじゃそもそもないのよな
365:デフォルトの名無しさん
13/09/19 22:21:49.57
Array.isArrayがないと別コンテキストのオブジェクトが本当にArrayか見分けるのは難しいんじゃないか?
366:デフォルトの名無しさん
13/09/19 22:28:43.54
>>359よりこっちの方が良かった
Array.clone = x => Array.isArray(x) ? x.map(Array.clone) : x;
367:デフォルトの名無しさん
13/09/20 00:41:52.37
URLリンク(speakerdeck.com)
368:デフォルトの名無しさん
13/09/20 10:58:34.35
URLリンク(stackoverflow.com)
なんか悪いんだろうなぁ…とは思うんだけど
何が悪いんだろうなぁまではよくわからん
そういうのが多すぎる…
369:デフォルトの名無しさん
13/09/20 12:16:50.61
TC39勢力
30% コミュニティの流れに関わる
15% 基礎構文や仕様の流れに関わる
Mozilla
35% 仕様の具体的な部分に関わる
Microsoft, Apple, Intel, jQuery
20% 専門的な仕様の詳細に関わる
その他凄い人、偉い人
370:デフォルトの名無しさん
13/09/20 14:47:21.10
TC39 3大勢力
1/3 【ハンドル・ブレーキ】
Webを牛耳る者として、三人称視点で情報や意見を提供する、情報・管理係
1/3 【エンジン・アクセル】
早期実装者及び専門家として、一人称視点で仕様を策定する、規格・運用係
Mozilla, その他凄い人、偉い人
1/3 【モーター・ギア】
企業団体として、ニ人称視点であれこれ注文する、文句・要求係
Microsoft, Apple, Intel, jQuery
371:デフォルトの名無しさん
13/09/21 01:40:27.26
DOM Promise
URLリンク(wiki.ecmascript.org)
が思ったより早くES標準になる?
URLリンク(twitter.com)
URLリンク(twitter.com)
DOMだけで使えるのはもったいないとは思うけど
今流行ってるからと言って、安々と仕様に入れていいものなのかね
こういうのを入れると、ライブラリや各種APIもこれに合わせて書かれるようになるだろうし
使う側も積極的にこのスタイル採用するだろうから、責任凄くあると思う
Node.jsの雰囲気を丸ごと変えてしまう力もあるかも知れないし、
FirefoxOSのアプリとか、これからの出るものに凄く影響を与えるに違いない
372:デフォルトの名無しさん
13/09/21 02:09:01.60
>>371
Promiseならそれとほぼ同じ物が
jQuery標準でついてるし、
nodeでも使える。
373:デフォルトの名無しさん
13/09/21 02:24:09.24
ん?だから何?
標準と標準じゃない物同列に語られてももの凄く困惑するんだけど…
374:ES6 Tips
13/09/21 02:51:46.30
var date = new Date()
var [Y,M,D,h,m,s] = date.toLocaleString('ja-JP').match(/\d+/g)
// [2013,9,21,2,49,05]
375:デフォルトの名無しさん
13/09/21 02:53:35.32
>>373
JavaScriptの世界では、標準ではないものも
広く使わわれている。
つまり、Promise が普通の世界に
俺達は生きているわけ。
そこに標準でPromise がきても
劇的な変化はないってこと。
> Node.jsの雰囲気を丸ごと変えてしまう力もあるかも知れないし、
> FirefoxOSのアプリとか、これからの出るものに凄く影響を与えるに違いない
標準じゃないものを使っているごく普通の人たちは
標準を待っているお前よりも未来に生きている。
劇的に変わるのは、標準を待っている人たちだけ。
376:デフォルトの名無しさん
13/09/21 03:11:51.67
>>375
標準で無いもの(拡張)は利用する側が自分で選択できる。
標準は全ての実装が準拠しようとするため選択できない。
一つの拡張が標準になると競合する拡張が潰れたりもする。
拡張を闇雲に取り込めば標準自体が肥大化する問題も起きる。
標準に取り入れるってのは全ての環境で半強制的にそれを導入させるに等しい。
先進的であればそれで良いのであれば安定版も標準化も必要ない。
お前は標準の持つ責任を安易に考えすぎ。
…と横からレスしておく。
377:ES6 Tips
13/09/21 03:14:07.70
その根拠のない理屈には納得出来ないな
Ajaxだって、Canvasだって、標準になる前からあったが活躍しだしたのは標準化されてから
まるで全てのPromiseとAPIが何か標準に準拠して完全に互換性があるかの様に言うが、現実はそうじゃない
そもそもDOMPromiseもESで提案されてるPromiseも、今尚仕様変更が続いてるもの
そんな中幾らかの形に切り出して、バージョンの付いた標準仕様に入れる、JS標準にするということは大きな変革
準拠先も安定度も不確かな、モジュールやプラグインに頼って下さいという段階とは比べ物にならない
378:デフォルトの名無しさん
13/09/21 03:20:55.33
>>376
話しそれ過ぎ。
> Node.jsの雰囲気を丸ごと変えてしまう力もあるかも知れないし、
> FirefoxOSのアプリとか、これからの出るものに凄く影響を与えるに違いない
まずね。標準の世界の話だけをするというのなら、
このような、実際の開発の世界の話をしなければいいのよ。
実際の開発の世界の話なんかしなけりゃいいのに、
わざわざヤツのほうが、勝手に実際の開発の領分に侵入してきた。
だから叩き返してやったまで。
Node.jsとかFirefoxOSアプリとか、何も変わりはしない。
実際の開発では、ここらへんの問題はライブラリによって
あらかた解決してしまってるの。
だから、今更標準に入ったって、何も変わりはしないの。
標準に入ったものをすぐ使えるわけでもないしね。
379:ES6 Tips
13/09/21 03:31:49.22
どうしても使いたい奴がプラグイン導入して個人的に使うのと、
大々的に標準に入って、さあ皆さん使ってくださいとなるのでは次元が違うぞ。
とくにJSってもうWebだけのものじゃなりつつあるし、
非同期コールバック式を緩和するためには非常に有効だけど、
本当に言語仕様に入れてメリットあるのかねという話だぞ。
お前さんの言うとおり、プラグインで十分問題が解決するんなら
標準に入れて必要以上に影響を及ぼしたり、言語の肥大化を招くよりはいいだろうってことだ。
お前さんは一体何と戦ってるんだい?
380:デフォルトの名無しさん
13/09/21 03:33:04.21
>>379
いや、お前が何と戦っているのか知りたいんだが?
381:デフォルトの名無しさん
13/09/21 03:33:31.76
プラグインがあるから標準いらないと言いたいのなら、意見の差はないだろう
382:デフォルトの名無しさん
13/09/21 03:35:05.06
>>380
こっちはお前さんがよく分からんツッコミしてくるからその度に冷静に返してるだけだが?
383:デフォルトの名無しさん
13/09/21 03:37:53.11
> Node.jsの雰囲気を丸ごと変えてしまう力もあるかも知れないし、
> FirefoxOSのアプリとか、これからの出るものに凄く影響を与えるに違いない
俺は最初から、これはありえないと言ってるだけですが?
Node.jsやFirefoxOSのアプリなどの実際の開発知らないでしょ?
384:デフォルトの名無しさん
13/09/21 03:41:04.53
そこら辺は個人の感覚だろうからそこまでは否定しないよ。
ちなみに両方とも作ったことがあるけど、それは例えから。
これから5年も10年も仕様に入れるべきものなのかってこと。
385:デフォルトの名無しさん
13/09/21 03:42:14.06
>>384
根拠は?
お前の妄想?
386:デフォルトの名無しさん
13/09/21 03:51:40.78
ホント安易に考えてんなぁコイツ
387:デフォルトの名無しさん
13/09/21 03:52:29.34
根拠というか懸念した理由は上でいくつか挙がってるけど、
もちろん自分が下手するとそうなりそうで怖いなと思っただけで、
標準に入ることで絶対に悪くなるとは言わない。
しかし、今更ES標準になったところで影響力は小さいという論には、今のところ納得出来ないな。
あると考えるのが基本なんだから、無いと思うのならもっと理論的に言って欲しい。
388:デフォルトの名無しさん
13/09/21 03:58:25.22
> しかし、今更ES標準になったところで影響力は小さいという論には、今のところ納得出来ないな。
歴史が証明している。
ECMAScript 5が標準になってどんな影響があったか?
明らかに小さいだろう?
389:デフォルトの名無しさん
13/09/21 04:00:26.96
あ、非JSerはお帰りください
390:デフォルトの名無しさん
13/09/21 04:03:17.56
理論的な話ねぇ?
ES標準になっても、すぐに使えるわけではない。
使わないから影響を与えられない。
ES非標準で、ライブラリとして実装できるものは
すでに実装され使われている。
十分理論的ですね。
391:デフォルトの名無しさん
13/09/21 04:03:22.79
お前らが最近プログラム系の板によく現れる荒らしに構ってる間にも
仕様はどんどん勧告へと近づいてきてる
URLリンク(twitter.com)
392:デフォルトの名無しさん
13/09/21 04:04:42.74
うん、、、もういいよ。
お前さんに分かってもらうのは諦めた。
393:デフォルトの名無しさん
13/09/21 04:43:03.51
>>390が日本語読めない子なのは十分わかった
けど俺も標準に入れてもいいとは思うぞ
ただしC++11のoptional featureみたいな感じがベストじゃないか。すべての標準処理系がDOMを備えるべきだとは思えんし
394:デフォルトの名無しさん
13/09/21 04:52:47.89
utilモジュールに入れてimportで取ってくる形ならいいけど、
グローバルにむき出しなら嫌だな
395:デフォルトの名無しさん
13/09/21 05:02:38.84
ポイントは前倒ししてまでstrawmanをES6に入れるのかってとこじゃね?
入れるのなら今回のミーティングがラストチャンスだけど
ギリギリで間に合わせた感もあるしな
URLリンク(esdiscuss.org)
ライブラリと違って、JSの規格に一度入ると後方互換性を壊す変更は当然NGになるしね
もうちょっとWebでの使われ方見てから練っても十分な気がする
やっぱりいろいろとES6.1が必要なんじゃないかな
というかこの冬のラストコールに間に合うの?
396:デフォルトの名無しさん
13/09/21 05:46:24.50
>>371,395
PromiseLoveなAnne van Kesterenっていう人が早く入れようとしてるように見える
397:デフォルトの名無しさん
13/09/21 21:13:19.03
URLリンク(tc39wiki.calculist.org)
>ES6 reached "proposal freeze" in May, 2011: no new major proposals can be added,
>although proposals can still be removed. TC39 is targeting a release date of December, 2013
>for the official ES6 standard, but JS engines are implementing individual features
>before the spec is finalized.
策定は2011年度の5月にfreezeとあるが…
ECMAScript Support Matrix
URLリンク(pointedears.de)
各実装のマトリックス表らしい
URLリンク(mozilla.6506.n7.nabble.com)
スレを眺めてるとES7とか文字が並んでるし議論してる人らは
ES6のことを念頭に置いて話てる訳ではないんでないの
398:デフォルトの名無しさん
13/09/21 23:48:12.67
ミーティングに挙げる仕様を詰めてるだけでES6には入れようとしてないよ
今回はES7についても話し合われたからね
399:デフォルトの名無しさん
13/09/21 23:59:44.55
読むとDOM PromiseのJS実装版じゃなくて、
もっと低レベルな感覚な実装なのね、いいかも。
でもこれ入れるんなら、
イベントという概念をもっとJSから扱えやすくなって欲しいな
そっちの方向の進化はかなり良さそう
400:デフォルトの名無しさん
13/09/22 00:16:25.61
イベントはあまりに重要で各環境の事情を抱えた概念だから難しそう
イベントキューの操作くらいは一般化出来ないかな?
401:デフォルトの名無しさん
13/09/23 13:42:34.69
今話題になってるこのコードとても面白いね
仕様の奥深くまで分かってないとできないことだ
Array.apply(null, { length: 5 }).map(Number.call, Number);
// [0, 1, 2, 3, 4]
402:デフォルトの名無しさん
13/09/25 01:26:27.21
URLリンク(github.com)
なかなか興味深い……
ArrowFunctionが残念だなあ
Symbol周りは期待通りになってよかった
Moduleはもう少し精査が必要だね
ES7についても見えてきた
403:デフォルトの名無しさん
13/09/27 01:13:04.58
ECMAScript6に単純に型指定だけ出来て、静的型チェックしてくれれば最強なのに…
型指定以外は完全に一緒で良いんで、そういうプリプロセッサを誰か作ってくれないかな。
404:デフォルトの名無しさん
13/09/27 01:54:42.52
あー、7のguardsがそれにあたるのか。7がリリースされるのっていつになるやら…
405:デフォルトの名無しさん
13/09/28 07:44:14.08
URLリンク(wiki.ecmascript.org)
406:デフォルトの名無しさん
13/10/04 12:32:46.81
ES6ファミリーにPromiseが入ります。
おめでとう・・・・・・・・! おめでとう・・・・・・・・!
407:デフォルトの名無しさん
13/10/05 18:32:39.18
ES7のdata_parallelismがFirefox 27 (Nightly) でデフォルトで有効になったようだ。
URLリンク(jsperf.com)
URLリンク(wiki.ecmascript.org)
408:デフォルトの名無しさん
13/10/07 19:50:12.74
isRegExpシンボルって面白いね
String.prototype.match(regexp)
はregexpオブジェクトに@@isRegExpが合った時には
rx.match(this)
を呼ぶことになってる
つまりオレオレ正規表現が容易に実装できるってことか
class MyRegExp {
constructor( ...... ) { ...... }
match(string) { ...... }
replace(string, replaceValue) {......}
split(string, limit) {......}
}
let regexp = new MyRegExp( ...... );
string.match(regexp);
string.replace(regexp, replaceValue);
string.split(regexp, limit);
409:デフォルトの名無しさん
13/10/13 16:05:28.76
ES6概要
ただしこれでも仕様の半分程度
URLリンク(speakerdeck.com)
410:デフォルトの名無しさん
13/10/16 01:04:25.93
asm.js、32bit浮動小数点演算、SIMD演算の現状と可能性について
URLリンク(kripken.github.io)
411:デフォルトの名無しさん
13/10/19 19:00:16.23
URLリンク(developer.mozilla.org)
412:デフォルトの名無しさん
13/10/24 16:53:52.96
ecma262.info/
ECMA-262 Edition 5.1に相当するISO/IEC 16262:2011の仕様は、
日本のSC22専門委員会でJIS規格化されないことが決定されたため、
ECMA-262 Edition 5.1の公的な日本語訳は存在しないことになります。
413:デフォルトの名無しさん
13/10/24 19:47:18.44
は? ISO規格に追随するのやめちゃったの?
C++11も翻訳しないみたいだし、JISCは馬鹿なの?死ぬの?
414:デフォルトの名無しさん
13/10/24 20:16:16.20
本文は翻訳してないあのスタイルじゃあ、あっても無いのとたいして変わりなかったしなw
415:デフォルトの名無しさん
13/10/25 01:44:56.49
つーか規格の和訳って必要ないよなぁ
どうせ原文にあたらなきゃならくなるんだから
416:デフォルトの名無しさん
13/10/25 02:50:16.91
JISにすることで著作権フリーになるんだよ(適当)
417:デフォルトの名無しさん
13/10/25 10:55:39.28
昔は日立とか東芝とか三菱とかが
主要言語のマイコンパイラ作ってたから、
社内技術者のために日本語訳が欲しいという要求があったけど、
今は業界からそういう要望もないのでしょう。
エコシステムとか言うんでしょ。
418:デフォルトの名無しさん
13/10/25 15:38:22.47
>>416
なるなら大歓迎だわ。
ぜんぜんなんねーんだよ。
419:デフォルトの名無しさん
13/10/25 16:29:14.50
エコシステム->生態系
420:デフォルトの名無しさん
13/10/25 16:39:32.81
>>418
実質著作権フリーだぞ。規格表さえ手に入れればあとはネットに上げようと何しようと自由。
URLリンク(urheberrecht.cocolog-nifty.com)
URLリンク(urheberrecht.cocolog-nifty.com)
ただ、判例としてあるのは類似のドイツのものだけで、日本での判例はまだないけどね
421:デフォルトの名無しさん
13/10/25 16:56:58.44
JISの著作権は原案作成者とそれを規格化の過程において修正する工業調査会にあり、
公衆送信権は工業調査会が独占している。
422:デフォルトの名無しさん
13/10/25 17:02:49.30
>>416
原文嫁
著作権は放棄しないって明記されてるぞ
423:デフォルトの名無しさん
13/10/25 17:07:45.39
著作権は内国法優先だから、日本で規格の著作者やISOがどんなに著作権を主張しようと
著作権法の第13条第2号がある限り著作権が認められるはずがない……ってのが>>420のリンク先の主張でしょ
自分も法律を字義的に解釈すればそれであってると思うけど、これ以上は著作権スレに行ってやったほうがいいね
424:デフォルトの名無しさん
13/10/25 17:31:57.94
規格書は告示、訓令、通達その他これらに類するものじゃないから。
「XXXという規格を制定した」これは告示、XXXの規格書本体は告示じゃない。
425:デフォルトの名無しさん
13/10/25 18:01:00.17
>>424
だからその屁理屈はドイツじゃ通らなかったんだっつーの
426:デフォルトの名無しさん
13/10/25 18:03:42.08
ドイツだけじゃない。アメリカでも国の策定する規格に著作権は認められなかった。
スレチだけどな!
427:デフォルトの名無しさん
13/10/25 18:59:00.70
>>426
>>420は公衆送信権に違反して他人の著作物を公開したいDQNのタワゴトじゃん。
ドイツでは法文に従って判断すると著作権が認められないという判決が出たから著作権法改訂されたと、当のDQNのブログにある。
428:デフォルトの名無しさん
13/10/25 19:13:55.99
天気の配信とか、役人の天下り先確保のために法令を整備してたでしょ。
それと同じなんじゃない?
429:デフォルトの名無しさん
13/10/25 19:19:17.04
分かりやすく産業にすると
・ドイツやアメリカでは国家規格に著作権は認められなかった(現在は法を改正済)
・日本は現在ドイツやアメリカの法改正前と同じ状況
・改正しないとJISに著作権は認められない
・JISスレか著作権スレでやれ
430:デフォルトの名無しさん
13/10/25 19:39:41.50
×・改正しないとJISに著作権は認められない
○・改正しないとJISに著作権は認められないとDQNは考えている、行政はそのように考えていない、司法が行政の不利になる判決を出すことは稀
431:デフォルトの名無しさん
13/10/25 20:17:49.62
まあ、日本での前例もないみたいだし、これ以上水かけ論やりたいなら余所でね
432:デフォルトの名無しさん
13/10/26 10:38:18.25
仕様の話をしようぜ
433:デフォルトの名無しさん
13/10/27 20:35:34.71
ECMAScript Support Matrix
URLリンク(pointedears.de)
合間合間に実装の話もですね…
434:デフォルトの名無しさん
13/10/28 09:40:22.02
話題出していっていいのよ
435:デフォルトの名無しさん
13/10/30 21:43:23.98
ES7の機能で一番早く使えるようになるのはSIMDかもな
SMが来年中に実装しそうな勢いだし、何と言ってもV8が興味持ってる
影響範囲がほぼ無いしね
436:デフォルトの名無しさん
13/10/31 01:05:58.42
double以外の数値型の演算をどうするかの話が詰まっていきそうだな
URLリンク(esdiscuss.org)
この様子だとES7は3年後くらいかもな
437:デフォルトの名無しさん
13/10/31 01:11:49.51
今はもういつES7か?ってのに
こだわる必要はない気がする。
なぜなら順次実装されて言ってるから。
完成する前に使えるようになってる。
438:デフォルトの名無しさん
13/10/31 01:35:06.64
とは言え勧告前のものはいくら実装されていても
いつケチが付いて仕様が変わるとも知れないからな
URLリンク(esdiscuss.org)
439:デフォルトの名無しさん
13/11/06 10:03:34.97
URLリンク(html5experts.jp)
ここのServiceWorkerとAnimation-Proxy見ると、
ES7のdata parallelismとかが思い出されて
JSerがマルチスレッド処理を当たり前に書く時代もそう遠くないんだろうね
440:デフォルトの名無しさん
13/11/10 04:10:55.98
>>439
データ並列からマルチスレッドには飛躍があるけどな。
441:デフォルトの名無しさん
13/11/10 12:52:20.30
は?
マルチスレッド⊃並列だろうに
どこに飛躍が???
442:デフォルトの名無しさん
13/11/11 14:42:38.63
ぴょーん!
443:デフォルトの名無しさん
13/11/13 23:20:03.54
マルチスレッドでないデータ並列がSIMD
444:デフォルトの名無しさん
13/11/14 10:57:15.41
SIMDはそもそも並列とか意識できなくね
445:デフォルトの名無しさん
13/11/14 19:08:10.11
君はそうなのだろう。
446:デフォルトの名無しさん
13/11/14 19:23:39.42
SIMDAPIを使っても必ずSIMD命令が使われるわけじゃないしあってると思うよ
447:デフォルトの名無しさん
13/11/17 15:42:20.11
Dartのcascade演算子JSにも欲しいなあ
obj..a = 1
..b = 2
..c = 3
↓
obj.a = 1, obj.b = 2, obj.c = 3
or
Object.mixin(obj, {
a: 1,
b: 2,
c: 3
})
448:デフォルトの名無しさん
13/11/18 21:00:01.72
いよいよ始まるというのにこの過疎りようは悲しい……
449:デフォルトの名無しさん
13/11/19 19:24:22.27
今が一番盛り上がる時期なのにな
450:デフォルトの名無しさん
13/11/19 22:43:24.98
>>447
VBのWithステートメントに似ているな。
With Label
.Height = 2000
.Width = 2000
.Caption = "Label"
End With
JavaScriptのwithはピリオドが要らないという失敗をしてしまった。
with(label) {
height = 2000
width = 2000
caption = "Label"
}
たったこれだけのことだが、heightはlabel.heightなのか
withの外にあるheightなのか見た目でわからない上に、
label.heightが存在すればlabel.heightに、存在しなければwithの外のheightに
書き込むというだめだこりゃ的な動きをしてしまう。
451:デフォルトの名無しさん
13/11/20 01:28:33.20
もしかしてプロキシと組み合わせればなんとかなる可能性が微レ存……?
function makeSafeScope(obj){
return new Proxy(obj, {
......
})
}
with(makeSafeScope(obj)) {
}
452:デフォルトの名無しさん
13/11/20 02:16:17.48
withってこうやって使うもんでしょ
var scopeOrContext = {a:0, f: function(){++this.a}}
with(Object.create(scopeOrContext)){
f()// 1
}
scope.a// 0
453:デフォルトの名無しさん
13/11/20 03:22:46.52
with(obj) {
a = 1
}
ってした時にaがobj.aなのかそうでないのか分かりにくいってことだよ
454:デフォルトの名無しさん
13/11/20 17:17:17.01
そう言えば今までブロック文中の関数宣言は非推奨だったけど
ES6からはブロックスコープになったんだよな
(function (){
"use strict"
if(1){
function a() {}
}
return typeof a
})() //"undefined"
455:デフォルトの名無しさん
13/11/21 22:19:07.88
>>401
>Array.apply(null, { length: 5 }).map(Number.call, Number);
配列内包ってもう固まったんだっけ?
456:デフォルトの名無しさん
13/11/22 00:22:59.64
固まってる
for-ofとifだけ
a = [1,2,3,4,5]
b = [ for(v of a) if(v > 2) v*2 ] // [6,8,10]
457:デフォルトの名無しさん
13/11/22 01:34:53.19
ES6への機能追加が21日で完了しました。
つまり、まもなくラストコールです。
今後は約1年間、実装からのフィードバックを含めた、
バグフィックスや小規模な改定のみが行われ、勧告となります。
458:デフォルトの名無しさん
13/11/22 02:38:13.10
やっと、ラストコールか。ちょっと停滞気味のRhinoフォークしてくる。
459:デフォルトの名無しさん
13/11/22 03:00:22.47
え、Rhinoって使ってる人いるの?
460:デフォルトの名無しさん
13/11/22 04:24:06.17
ググると結構あるぞ。むしろjavaだと他に何がある?
461:デフォルトの名無しさん
13/11/23 08:45:11.30
つNashorn
462:デフォルトの名無しさん
13/11/24 16:57:20.57
余計な記法増やして読みにくくするのやめてほしいわ
このスレ見ても結局
黒魔術が増えるだけなんだなES6って
463:デフォルトの名無しさん
13/11/25 09:34:48.99
流れについていけない守旧派の極みだな
別にいいんだよ、IE6が理解できる範囲のJavascriptしか頭に入りませんってなら
464:デフォルトの名無しさん
13/12/01 04:26:34.11
ES6は必要な進化だろうけど、そのうち黒魔術化するでしょ
LLJS/asm.js最適化しながら手書きできる人間なんて僅かしかいなくてコンパイラにjavascript吐かせる時代になるかもしれない
アセンブラやCやってた連中が復活するかもしれないけど
465:デフォルトの名無しさん
13/12/01 10:59:57.81
Dartのことですね
466:デフォルトの名無しさん
13/12/03 12:22:46.92
ES6が糞過ぎて猫様もお怒り
Hearing about ES6 modules - Node.js Reactions
URLリンク(nodejsreactions.tumblr.com)
467:デフォルトの名無しさん
13/12/03 22:17:04.57
猫かわいい
468:デフォルトの名無しさん
13/12/12 02:15:57.94
URLリンク(en.wikipedia.org)
ここの結果見るとIEが一番準拠しててFirefoxの準拠度がダントツ悪い
逆だと思ってたから意外だな
Firefoxは仕様が決まる前から先行実装してるっていうのがあるから
しょうがない面もあるかも
469:デフォルトの名無しさん
13/12/21 19:49:07.41
ES6はCと違ってよくわからないって人がごねた結果だろ
470:デフォルトの名無しさん
13/12/21 19:50:05.91
>>469
Cをよくわかってないなら喋らない方がいいよw
471:デフォルトの名無しさん
13/12/26 23:29:54.06
A=フェラチオ
B=手マン
C=セックス
D=スカトロ
472:デフォルトの名無しさん
13/12/26 23:57:34.24
>>468
最新のIEと10年前のFirefoxを比較すれば当然そうなります
473:デフォルトの名無しさん
13/12/27 00:10:24.18
10年前にFirefoxなんかあったっけ?
10年前だとIE以外は生まれてすらいない時代だと思うけど。
474:デフォルトの名無しさん
13/12/27 00:13:04.22
>>473
でたらめを書かないでください。
Firefoxは10年前既にありました。
475:デフォルトの名無しさん
13/12/27 00:15:25.39
あ、やっぱりなかったみたいだね。
URLリンク(ja.wikipedia.org)
2003年5月16日 製品名を Firebird へ改称
2004年2月9日 製品名を Firefox へ改称
476:デフォルトの名無しさん
13/12/27 00:16:20.89
>>473
板違い
IEの話はドザ板でやれ
477:デフォルトの名無しさん
13/12/27 00:19:58.37
>>475
Firefoxの最初のバージョンはフェニックスと呼ばれました。
ウィキペディアで調べてもわからないことはあるものです。
そんなに恥ずかしがらなくてもいいです。
生きている価値が無いというほどのことではありません。
でも、ウィキペディアで調べて知ったかぶりをするのはもうやめたほうが良いかもしれませんね。
478:デフォルトの名無しさん
13/12/27 00:20:55.81
間違えた。IEを持ちだしたのは>>472だった。
>>472は消えろ
479:デフォルトの名無しさん
13/12/27 00:22:18.40
>>475
名前が変わったら別の製品だと思ったのか
恥ずかしすぎワロタ
480:デフォルトの名無しさん
13/12/27 00:45:26.15
もうそろそろ興奮収まったかい?
481:デフォルトの名無しさん
13/12/27 01:03:00.89
ワールドクラスの馬鹿を発見した興奮!
482:デフォルトの名無しさん
13/12/27 01:05:50.54
まだだったか
483:デフォルトの名無しさん
13/12/27 05:30:34.81
>>477>>479
全く読んでないから知らんけど、名前が違う頃のFirefox使ったデータならその頃の名前で書くんじゃねーの?
484:デフォルトの名無しさん
13/12/30 16:38:13.73
>>472
>最新のIEと10年前のFirefoxを比較
どーゆー意味?
>>468に載ってるFirefoxのバージョンは26とNightly 29なんだけど
485:デフォルトの名無しさん
13/12/30 19:17:26.11
>>468
mozilla.orgのJavascriptは独自仕様だよ。
ECMAScriptに入ってないのも独自の判断で仕様に入れて
Javascript 1.xと称している。
この場合のJavascriptはmozillaの商標。
一般的に言ってるJavascriptは標準規格のECMAScriptの通称。
そのうち独自仕様は辞めると思うが、
もともとJavascriptは彼ら(前身のNetscape社)のもの。
486:デフォルトの名無しさん
13/12/30 19:33:25.23
困るんだよねー
ちゃんと規格としてかっちり決まってから実装始めてもらわないと
487:デフォルトの名無しさん
13/12/30 23:27:24.32
しかし実装がないと規格も決まらないというジレンマ
488:デフォルトの名無しさん
13/12/31 16:53:03.28
>>486
このスレの住民の言葉とは思えんな
Fxのお陰でどれだけ仕様が改善できて策定がスムーズに行ったことだか
特に構文レベルだと長いフィードバックが不可欠
それをFxがずっと前からやってくれたおかげで、
今のFxの独自実装が抱える多くの問題を踏まずにすんだ
ChromeにだってSymbolやPromiseやら先行実装たくさんあるし
これから先もSIMDやParallelやら先行実装が重要なものは沢山ある
489:デフォルトの名無しさん
13/12/31 18:11:09.61
これからのJSって便利にもなるが厄介なことも増えるよな
例えばnewが要るかどうか
理屈としては継承のために@@createを呼び出させるべきかどうかなんだろうけど、
Mapなんかは付けないとエラー、Proxyやvalue object系には付けるとエラー、とか覚えるのが増えるね
490:デフォルトの名無しさん
14/01/01 00:01:49.39
今年はES6の年です
皆さん祝いましょう!
491:デフォルトの名無しさん
14/01/01 01:43:16.27
お断りします
492:デフォルトの名無しさん
14/01/01 02:31:16.08
>>489
今でもフレームワークごとに違うじゃん。
493:デフォルトの名無しさん
14/01/01 10:06:51.50
ビルドインオブジェクトの話でしょ
フレームワークはフレームワーク
まあ余談だけどユーザー側で作るAPIは基本的に
Class.initとかClass.create~とかを提供する形にした方がいいと思うね
494:デフォルトの名無しさん
14/01/01 10:19:14.82
ついにJSも世代が分かれて古い方はstaticおじさんと呼ばれるようになるに違いない
495:デフォルトの名無しさん
14/01/01 12:44:58.45
ES6が糞過ぎるからしょうがないね
496:デフォルトの名無しさん
14/01/01 14:35:09.29
そうか?物によっては10年もかけただけあって随分洗練されてると思うが
今でも微妙な問題は残ってるけど大山は全て乗り越えた感じだ
497:デフォルトの名無しさん
14/01/01 14:44:38.39
おまえらArray.prototype.shuffleとか作ってないか?
そういうのは困るからArray.prototype._shuffleみたいにしろとさ
498:デフォルトの名無しさん
14/01/01 14:56:37.99
ES6に足りないものは、
{obj1,obj2,obj3}.prop.{prop1,prop2,prop3}.prop = val
というシンタックス。あとはいい。
499:デフォルトの名無しさん
14/01/01 15:03:07.14
イラネ
なんだその黒魔術
500:デフォルトの名無しさん
14/01/01 15:21:41.51
これが黒魔術なら分割代入も黒魔術ということになってしまうな
501:デフォルトの名無しさん
14/01/01 15:30:34.13
そうか
本当は
[a,b,c] = [1,2,3]
のように
[o.a,o.b,o.c] = [1,2,3]
を
o[a,b,c] = [1,2,3]
と書きたいが
これだとa,b,cのコンマが独立した演算子と取られてしまうから
可能性としては
o{a,b,c} = {a:1,b:2,c:3}
か
o{0:a,1:b,2:c} = [1,2,3]
とするしかないのか
それがどうも冴えないから入らなかったんだろうね
502:デフォルトの名無しさん
14/01/01 15:49:11.00
はあ・・
JavaScript ES6 Bad Parts -分かりにくい悪手法-
という良書が出来るのが目に見えてる
503:デフォルトの名無しさん
14/01/01 15:55:16.38
でも>>498の「{}.」は案外凄い良いシンタックスだと思うよ
{obj1,obj2,obj3}.prop.{prop1,prop2,prop3}.prop = val
{obj1,obj2,obj3}.{prop.{prop1,prop2,prop3}.prop} = val
{obj1,obj2,obj3}.{prop.{prop1,prop2,prop3}}.prop = val
{{obj1,obj2,obj3}.{prop.{prop1,prop2,prop3}}}.prop = val
読みやすさは最悪だか汎用性レベルは最高
あらゆるパターンを記述できるわ
案外ES7くらいで採用されるかもね
504:デフォルトの名無しさん
14/01/01 16:14:52.51
ES6のBest Partsのspread演算子様
arr.slice()
↓
[...arr]
arr.slice().push(x), arr
↓
[...arr, x]
for(var i = 0, arr = []; i < len; i++) arr[i] = i
↓
arr = [...Array(len).keys()]
arr.filter(function (x, i, a) {return a.indexOf(x) == i})
↓
[...new Set(arr)]
str.split('')
↓
[...str]
可能性は無限大
505:デフォルトの名無しさん
14/01/01 16:47:20.67
配列内包も素晴らしい
s1 = 'abcde', s2 = '12345'
for (var arr = [], i1 = 0; i1 < s1.length; i1++) for (var i2 = 0; i2 < s2.length; i2++) arr.push(s1[i1] + s2[i2])
↓
arr = [for (c1 of s1) for (c2 of s2) c1 + c2]
506:デフォルトの名無しさん
14/01/01 21:58:18.62
みんなcoffeescriptからの流用なんだけどね
507:デフォルトの名無しさん
14/01/01 22:56:47.56
いいえPythonやHaskellなんかからの導入です
CSも同じく
508:デフォルトの名無しさん
14/01/02 08:45:45.32
他の言語からの取り入れを悪いことのように言う傾向が今年は滅びますように
509:デフォルトの名無しさん
14/01/02 10:23:18.50
そんなのは見たことないな
510:デフォルトの名無しさん
14/01/02 10:48:29.19
>>501
o['a', 'b', 'c'] = [1, 2, 3];
が既存の分割代入に近くていい気がする。
511:デフォルトの名無しさん
14/01/02 14:05:42.56
プロパティの分割代入とか、プロトタイプ継承を理解していない証拠
512:デフォルトの名無しさん
14/01/02 14:27:08.28
>>510
それは無理
o['a', 'b', 'c'] = [1, 2, 3];
は既に
o['c'] = [1, 2, 3];
と解釈されるから
513:デフォルトの名無しさん
14/01/02 16:59:30.82
慣れれば読みやすい可能性が微レ存
p{a,b} = q
↓
p.a = q.a
p.b = q.b
p.x.{a,b} = q
↓
p.x.a = q.a
p.x.b = q.b
p.{x.{a,b}} = q
↓
p.{x.a,x.b} = q
↓
p.x.a = q.x.a
p.x.b = q.x.b
514:デフォルトの名無しさん
14/01/02 17:00:13.11
p.{x,y}.{a.b} = q
↓
p.x.a = q.a
p.x.b = q.b
p.y.a = q.a
p.y.b = q.b
p.{{x,y}.{a.b}} = q
↓
p.{x.a,x.b,y.a,y.b} = q
↓
p.x.a = q.x.a
p.x.b = q.x.b
p.y.a = q.y.a
p.y.b = q.y.b
p.{z:{x,y}.{c:a.d:b}} = q
↓
p.{z.c:x.a,z.d:x.b,z.c:y.a,z.d:y.b} = q
↓
p.x.a = q.z.c
p.x.b = q.z.d
p.y.a = q.z.c
p.y.b = q.z.d
515:デフォルトの名無しさん
14/01/02 17:19:12.05
後は分割代入でも先送りになったけど
undefinedを見逃す?演算子系は実際必要だな
if(a&&a.b&&a.b.c)
↓
if(a.?b.?c)
var {a:{b:c}} = {} //c=undefind.b -> error
↓
var {a:{?b:c}} = {} //c=undefind.?b -> undefined
516:デフォルトの名無しさん
14/01/02 17:59:53.93
>>514
パターンマッチはスクリプト言語なら強化して欲しいが、
これに?演算子やguardやら入ったらカオスになるんだろうな。
517:デフォルトの名無しさん
14/01/07 14:42:38.41
おまえらみんなwithでも使ってろ
ただし最後はちゃんと"use strict";を書いてデバッグすること
518:デフォルトの名無しさん
14/01/09 16:12:01.04
with分も捨てたもんじゃない
プロキシと組み合わせればスクリプトを分かりやすく書けたりする
unit1.on('reqestCommand', unit => {
with (new ControlerProxy(unit)) {
if (Y > 100) TURN_LEFT_180
GO_100
if (Y < 0) FREEZE
}
})
519:デフォルトの名無しさん
14/01/15 00:39:55.46
try { (ノ°□°)ノノ ┻━┻ } catch() { ┬─┬ ノ( ゜-゜ノ) }
520:デフォルトの名無しさん
14/01/16 20:32:57.94
es6にguardsが入らなかったのはかなり残念だ
JavaScriptでちゃんと静的型チェックをしようとすると、
URLリンク(developers.google.com)
このClosure Compilerのアノテーションを使うのが一番良さそうだけど
見ただけでめげた…
guardsの構文を受け付けて、コンパイル時に削除してくれればいいんだけどなぁ
521:デフォルトの名無しさん
14/01/17 06:08:12.57
ES6にGuardsが入ると思ってたのはあんただけだろうが、そもそもJavaScriptに静的型チェックなんて必要ない
スクリプト言語の性格や既存のライブラリを考えると徒労に終わるだけだし
そういうことで今では::構文もbindに取られてるし、ESメンバーにもそんなに好かれていない
URLリンク(wiki.ecmascript.org)
URLリンク(esdiscuss.org)
Trademarksはパターンマッチの為の機能として残るだろうが、今後型のための構文が採用されることはない
JSでどうしても型を明記したい場合は、a = b|0 や c = float32(d + e) のようにすることだね
そうじゃないのを望むならDartからでも変換すればいい
522:デフォルトの名無しさん
14/01/17 10:11:32.27
静的型チェックっていうと大袈裟だったかもしれないけど、他人が書いた関数で
引き数に何を渡せばいいか分からない事ってないか?
複数人で規模の大きめのアプリを作る時とかは、みんなまじめにアノテーション
とか書いてんのかね。
しかしBrendan Eichがいらねってんなら望み薄だな…
bindはいいけど、guardsはTypeScriptと同じように:一個にすればいいんじゃね?
523:デフォルトの名無しさん
14/01/17 10:35:50.16
まあダックタイピング+トライ・アンド・エラーで行くしかしょうが無いでしょ。
公式で用意されてる関数は適当に叩けば適切なエラーが帰ってくるからそれ見習ってもいいかもな。
crypto.getRandomValues()
//TypeError: Failed to execute 'getRandomValues' on 'Crypto': 1 argument required, but only 0 present.
crypto.getRandomValues("^_^")
//TypeError: Failed to execute 'getRandomValues' on 'Crypto': First argument is not an ArrayBufferView
crypto.getRandomValues(new Float64Array(10))
//TypeMismatchError: Failed to execute 'getRandomValues' on 'Crypto': The provided ArrayBufferView is of type 'Float64', which is not an integer array type.
crypto.getRandomValues(new Int32Array(10))
//[519742316, 1326690367, 1843628936, 94818381, 1481545681, -949200701, 1818462933, -1973550051, 2019705203, -1026601786]
524:デフォルトの名無しさん
14/01/17 14:41:15.55
トライ・アンド・エラーで別に構わないけど、crypto.getRandomValues()みたいに
適切なエラーを出す為にもGaurdsは必要だと思うけどね。
現状の現実的な解は、関数の先頭に型チェックするassertなりを仕込んでおいて
リリース時にスクリプトで削除するか、何もしない関数に置き換えるとかかな。
525:デフォルトの名無しさん
14/01/18 09:06:28.46
Gaurdsに頼る形だとtry-catchを使うことになるし、結局型に合わなかったことしか分からない
必要なのは適切な型か、適切なインターフェイスを備えてるかをテストすることだと思う
この辺りを良くする仕組みはES6にも入ってる
ES6ではinstanceof演算子は実質オーバーライド可能になって、関数じゃないオブジェクトに対しても使えるようになった
例えばこう書ける
const IntegerArray = {
[Symbol.hasInstance](x) {
return [Int8Array, Int16Array, Int32Array, Uint8Array, Uint16Array, Uint32Array].some(A => x instanceof A)
}
}
new Float64Array(10) instanceof IntegerArray //false
new Int32Array(10) instanceof IntegerArray //true
これなら柔軟に対応できる。ちなみにClassも継承を活用できていい
class IntegerArray extends TypedArray {
static [Symbol.hasInstance](x) {
return super(x) && x[Symbol.toStringTag].contains('nt')
}
}
526:デフォルトの名無しさん
14/01/18 17:02:05.76
なるほど型判定にinstanceofを使えばいいんだな
しかし[Symbol.hasInstance](x)って見慣れない構文だな…
x[Symbol.toStringTag]も
どこ見ればいいか教えてもらえると助かる
527:デフォルトの名無しさん
14/01/18 21:26:39.22
前者はMethodDefinition
ObjectLiteral
↓{ PropertyDefinitionList }
↓{ PropertyDefinition }
↓{ MethodDefinition }
ClassExpression
↓class BindingIdentifier ClassTail
↓class Identifier extends AssignmentExpression { ClassBody }
ClassBody
↓ClassElementList
↓ClassElement
↓static MethodDefinition
MethodDefinition
↓PropertyName ( StrictFormalParameters ) { FunctionBody }
↓ComputedPropertyName ( FormalParameters ) { FunctionBody }
↓[ AssignmentExpression ] ( ) { FunctionBody }
後者は「known symbol」でドラフトを検索してみるといい
528:デフォルトの名無しさん
14/01/21 07:00:19.03
try { (ノ°□°)ノノ ┻━┻ } catch() { ┬─┬ ノ( ゜-゜ノ) }
529:デフォルトの名無しさん
14/01/21 14:32:33.68
ドラフトr22来たね
URLリンク(wiki.ecmascript.org)
1つ挙げるとしたら
System.globalでグローバルオブジェクトが取れるようになったのは嬉しいね
530:デフォルトの名無しさん
14/01/25 07:24:58.43
例のwith proxyでvalue objectと演算子オーバーロードがエミュレートできるな
概念を書くと例えば
v = vo1 + vo2 * vo3
のとき
get vo1 → get vo2 → get vo3 → set v vo1 + vo2 * vo3
のリクエストが受け取れる
ここでvalue objectがgetされたときは適当な数値で返しながら覚えておく
例えばそれぞれ2.1、3.2、4.3とか
するとこの場合「set v 15.86」リクエストがあった時、実際の処理は2.1+3.2*4.3だったであろうことが逆算でわかる
つまりvにvo1+vo2*vo3の意味するとこの結果を代わりに設定して、その後のget vで返すことができる
これでマズイこともあるが、かなりのパターンのオーバーロードができそう
もう一つ思いついたのは、クロージャなしで任意の変数を関数に紐付けできる
WeakMapにcalleeとオブジェクトを紐付ければそれっぽくできるか
with(scope(arguments)){
$static, hoge, fuga, puyo, $
}
みたいな素敵な宣言文も定義できる
531:デフォルトの名無しさん
14/01/31 06:23:51.84
今やってるTC39ミーティングはES7がいよいよ始まったって感じで興味深いね。
Structured Clone、Typed objects、Value object、Parallel、Object.observe、Do expression、Async/await
その中のTyped objectsのスライドも面白い。
URLリンク(docs.google.com)
tobj.bufferで仮想的なメモリダンプができて、それを一旦保存して同型のコンストラクタに食わせることで復元したりも出来そうだね。
個人的お気に入りなのは『do式』
見た目はdo-while文のwhile以降がない形で、最後の評価値を返すブロック文のような式。
見送られたlet文のより良い代わりになったり、複数行アロー関数でのreturnの省略など、かなり素敵に役に立ちそう。
var v; let (r = rand()) { v = b*n|0 }
↓
var v = do {let r = rand(); b*c|0 }
func = () => { ......; return hoge }
↓
func = () => do{ ......; hoge }
ES6はいよいよ詰める作業に入ったね。
おそらくもう一回、3月末のミーティングを終えてから、4月くらいに最終草案が出来るんじゃないかな。
532:デフォルトの名無しさん
14/01/31 19:19:33.18
Value Objectsのスライド面白いね。
URLリンク(www.slideshare.net)
興味深いのは数値にサフィックスを付けて独自の型を定義できるようになったことだろうか。
1KB + 1MB // 1025KB とかできるわけだ。
更に演算子での暗黙の型変換を簡単に調整できるかもしれない。
awaitの情報も面白い。
URLリンク(github.com)
Promiseが活躍してるね。
533:デフォルトの名無しさん
14/02/01 01:35:24.81
単体doはPerlを思い出すな
534:デフォルトの名無しさん
14/02/03 21:58:06.74
最近JSのマクロでsweet.jsが流行ってるけど、ES8のマクロはこれがベースになりそうな予感
535:デフォルトの名無しさん
14/02/03 23:27:10.33
ES8って…鬼が笑いそうだな(節分だけに)
536:デフォルトの名無しさん
14/02/04 00:01:33.82
ラムダっちゃ
537:デフォルトの名無しさん
14/02/04 06:06:37.19
>>535
ES6の勧告は今年末
ES7の勧告はその2年後(つまり今から約3年後)を予定してるとなると
ES8の勧告は2020年になるまでには……って感じだろうな
でもこれまでの流れを見ると、ES7が大方固まったころ、つまり今から2年後にはES8の仕様もミーティングで話されていくし、
その1年前、つまりES6が勧告される頃には、メーリングリストで議論されてstrawmanに候補が挙げられだすのが定跡
つまり、ES8を考えだすのは来年の話でもないと思う
そもそもSweet.jsはMozilla製だし、macro文とかdef文とかESに取り込まれることを狙っているのかもしれない
あともう一つ挙げるなら、かつてES8だと思われてた機能も今のところマクロ以外はみんなES7になったし、
ES7だと思われてたPromiseが急遽ES6に入った例もあるから
マクロもSweet.jsみたいなのがPromiseライブラリ並みの存在になればもしかしたら……ってのはある
538:デフォルトの名無しさん
14/02/04 06:18:04.99
春にはV8でもアロー関数が使えるようになりそうだよ!!
やったねたえちゃん!
URLリンク(code.google.com)
539:デフォルトの名無しさん
14/02/05 06:02:48.34
今までWorker間のデータのやり取りはコピーか移譲しかできない件でいろいろ議論があったが、
V8/ChromeでArrayBufferの共有をできるようにするみたい。
オマケで排他処理を利用したスレッド制御ができるようになる。
URLリンク(chromiumcodereview.appspot.com)
URLリンク(chromiumcodereview.appspot.com)
URLリンク(chromiumcodereview.appspot.com)
540:デフォルトの名無しさん
14/02/06 10:10:23.63
先日の会議でPromiseに関してchainを廃止してcastをresolveに統合することになったんだけど、凄い揉めてる
URLリンク(esdiscuss.org)
似たのがあるのはややこしくて無駄
chainとthen、resolveとcastでそれぞれ前者がベーシックで、後者が実用的という感じだろうか
で、残すとなると実用的な方になるのはもっともだが、
ベーシックな方を捨てると、関数型スタイルとしての魅力を大きく損ない、ただのサポートAPIに成り下がってしまう
皆Promiseに対して考えてる重みが全然違う
高レベルなフレームワーク追加と思うかパラダイム導入と思うかでぜんぜん違う
宗教的な部分も関わってくる
もっと根本的な設計から文句がある人もいる(決まるのが急すぎた!)
今でも案が出るし、PromiseじゃなかったらとっくにES7に持ち越しになってると思う
今後どうなるか注目
541:デフォルトの名無しさん
14/02/06 18:21:27.41
こんな感じ?
~ML~
chain(flatMap)が要る要らないというようなことが半年前から度々話されてきた
~そして先週の会議~
「要らないよね~」
「無くすのでいいと思う」
(ほぼ満場一致ですぐ決まる)
~ML~
「解決したよ~^^ chainとresolveは無くすね」
「これはひどい><」
「話が違うじゃねえかざけんな!」
「オンラインでの積み重ねを大事にしろよ」
・Googleの人
「あー、会議に出れなくて言えなかったのマズったな
ま、周りではchain推しだしV8では無くさないことにしたから^^;
(そもそもthenがクソだからchain実装したんだし!)」
「でも会議にでなかった人が決議を取り消せたら進展しないよね…」
『『『会議の意義って…………』』』
そして遂に出てしまった危険ワード「disasters like ES4」に皆が内心震え上がりましたとさ
爆死
542:デフォルトの名無しさん
14/02/16 06:09:25.38
URLリンク(wiki.ecmascript.org)
これでprivateメンバを実現する仕組みは分かったんだけど
イマイチ他の有り難みが分からない
もしかして
f.set(b, v1)
f.set(b, v2)
f.set(b, v3)
x = f.get(b)
に比べて
b@f = v1
b@f = v2
b@f = v3
x = b@f
の形だと3変数を関連付けする意味も持ってるから
x = v3
とコードを最適化できるってこと?
それと、もしこうなったらなんかヤバイね
URLリンク(esdiscuss.org)
543:デフォルトの名無しさん
14/02/19 19:12:47.88
CやC++もそうだけど、最新仕様にジワジワ対応してくのがいやだな
ベンダー中立なのも善し悪しだ
544:デフォルトの名無しさん
14/02/20 00:50:48.29
es6のletも関数の先頭に巻き上がるの?
545:デフォルトの名無しさん
14/02/20 06:13:15.91
let,constはブロックスコープで巻き上がらないよ
因みに関数宣言はブロックスコープで巻き上がる事になった
スコープに関してはこの2点を押さえとけばいい
546:デフォルトの名無しさん
14/02/20 10:54:52.79
どうもどうも。
つうことはlet,constだけを使ってる限りは、C++と同じように使う直前で宣言する
っていうルールでいいわけだ
547:デフォルトの名無しさん
14/02/20 18:47:18.88
逆じゃね?
巻き上がるvarは先頭で宣言する意味が無いけど、
letはブロック文の先頭にやった方がいいと思う。
var a
if(f) { a = 1 }
else { a = 2 }
は
if(f) { var a = 1 }
else { var a = 2 }
とできるし、そのほうが分かりやすい。
letだとこれができない。
で、分岐の前で宣言するようなことをちまちますると分かりにくいから、
いっそそのブロックの先頭でまとめて宣言した方が分かりやすい。
constは定数なので当然先頭のほうが分かりやすい。
548:デフォルトの名無しさん
14/02/20 20:11:08.24
'use strict';
var a = 1;
function hoge() {
// ↓グローバル変数にアクセスするつもり
console.log(a); // => undefined (巻き上げの為)
var a = 2;
// aを使う処理
};
--------
let a = 1;
function hoge() {
// ↓グローバル変数にアクセスするつもり
console.log(a); // => 1 (のはず未確認)
let a = 2;
// aを使う処理
};
と直感的になるから使う直前で宣言するで問題無いよ
549:デフォルトの名無しさん
14/02/21 06:02:18.19
>>548 あくまで変数はスコープに属する
つまり正確には変数の存在は巻き上がるというかスコープに浸透する
但し宣言箇所までに使おうとするとエラーになる
だからletさえあれば必ずしも良く書けるというわけでもない
特にfor文ではletは一見凄くいい
最近Cと同様に毎ループスコープコンテキストを生成するようになった
これでfor文中でのクロージャ生成がグッとよくなる
ただしその影響でパフォーマンスに影響があるかもしれない
理論的にはループ中にスコープコンテキストを保持するものがない場合
コンテキストを生成しなくて済むが、実際最適化が進むのは時間かかる
いずれにせよ、letはキチッとしたイメージで使っていくべきだと思う
>>547のような場合は、もし使う直前で宣言するのなら
それはそれ以前に変数を使っていた場合にエラーにしたいからという理由に自ずとなる
だがもし>>548のように見えて、キチッとしてないと思うのならブロック文の最初で宣言すべき
ただ大半のケースであろう、そのスコープだけで下位のスコープでは使わない場合
一気に宣言と代入をした方がコンパクトでいいとは思う
場合によっては先頭にする、また場合によってはvarも使うというように
個人的ポリシーのもと綺麗に使い分けるか、思い切ってvarを捨てて
letのその場宣言に統一するか、どちらがいいかは分からない
550:デフォルトの名無しさん
14/02/21 10:47:15.29
変数の定義は出来る限り後にするってのはEffectiveC++にも書いてある事だし
let,constを使ってる限りはその習慣のままでよくなったって事でいいよ
551:デフォルトの名無しさん
14/02/25 17:51:36.53
ES6ってEffectiveC++まで読まないと使いこなせないのか…
552:デフォルトの名無しさん
14/02/25 23:03:38.54
>>551
んなわけない
C++の人がJS のヘンテコな仕様を気にしなくてよくなっただけだ
553:デフォルトの名無しさん
14/03/20 20:37:22.08 OnvdowAM
ES7+に関するニュースがたまってきた
まずObject.observeがChrome M35でデフォルト有効になるね
つまり日本時間の4/1からES7の時代なわけだ、素晴らしい
それからES6に摂りこぼしたようなメソッドが入ってくる
URLリンク(esdiscuss.org)
まあこういうのは仮にES7になっても、すぐ実装される可能性が高いか
あと興味深かったのはASTならぬCSTについて
URLリンク(esdiscuss.org)
これが標準APIとして入ると、最近2chでもよく耳にするJSのコード分析ツールが発達するだろうね
554:デフォルトの名無しさん
14/04/06 10:34:50.10 BAtZ8TGv
Microsoft、プログラミング言語“TypeScript”を正式リリース
URLリンク(www.forest.impress.co.jp)
555:デフォルトの名無しさん
14/04/26 00:52:27.92 FOzpDrfL
しかし、letが使えない事が最もイラつく要因だな
これだけは間違いなく設計ミスと言わざるを得ない
はやいとこletが当たり前のように使えるようになってほしいよ
556:デフォルトの名無しさん
14/04/26 04:17:27.66 m4NkAp8y
Let it be.
557:デフォルトの名無しさん
14/04/26 06:30:34.96 IOWbf8hT
なんでそんなもんが要るのか理解に苦しむ
558:デフォルトの名無しさん
14/04/26 07:34:51.39 /1bv/NFj
letって糖衣構文だよね?
559:デフォルトの名無しさん
14/04/26 09:05:12.45 N/wOneBP
letをラムダ式で書くのは一般に可読性がすごく悪いので、letがラムダ式の糖衣構文であることは
間違いないけど、良い糖衣構文の典型例と言っていい。
おまけにJSのラムダ式は function とか無駄にキーワードも長いし(funcで十分ですお)。
560:デフォルトの名無しさん
14/04/26 09:28:02.77 dytsHLSj
そもそもムダ式の使いどころがわからないw
561:デフォルトの名無しさん
14/04/26 10:45:40.07 /1bv/NFj
(function って書きかたするだけで即時無名関数だってわかるし、可読性悪いと思わないな。
とはいえletは便利だと思う。
562:デフォルトの名無しさん
14/04/27 10:16:14.38 J+hFW2BD
架空の構文を使うが、
let (a = a に与える値, b = b に与える値) { a とか b とかを使ったプログラム片 };
↑コレが、こうなる↓
(function (a, b) { a とか b とかを使ったプログラム片 })(a に与える値, b に与える値);
可読性は大幅に違うと思うが?
563:デフォルトの名無しさん
14/04/27 12:50:33.35 dzdj67m/
var使えばいいじゃん
564:デフォルトの名無しさん
14/04/27 16:49:18.92 /n7QikUK
varか
565:デフォルトの名無しさん
14/04/27 16:58:01.12 ZSKa5kXO
バーカと言ってんのか。
566:デフォルトの名無しさん
14/04/28 07:32:48.30 pTdZCSXw
perlみたいにmyにすればvarより一文字タイプする手間が減って
人類全体ではおそらくのべ何百万時間と何百テラバイト節約できたのに。
567:デフォルトの名無しさん
14/04/28 10:37:13.73 nTejnWG/
そこでさらに1文字減らそうと考えないお前はとことん子供だな
568:デフォルトの名無しさん
14/04/28 12:21:34.72 6N4YFPM8
>>556
今なら let it go だな
569:デフォルトの名無しさん
14/04/29 01:06:54.91 AbmpH0cg
>>567
phpの$はすばらしいな!え、ちがう?
570:デフォルトの名無しさん
14/04/29 20:33:54.13 pZyrXbny
class構文書く時@@createとconstructorの役割の割り振りが難しそうだな
Arrayとか標準クラスを参考にすると@@create()ではそのクラスのインスタンスたり得る未初期化のオブジェクトを構築する
つまり例えばArrayならlengthや自然数がハックされた(Proxy)オブジェクトを作り、prototypeの継承もここでする
この時点で、obj.isClass()はtrueになるべきだが、まだオブジェクトが使える状態であってはいけない
その次にconstructor()で、this.isClass()がtrueならば実際の初期化を行い、使える状態にする
this.isClassがfalseまたは、初期化済みのインスタンスが渡された場合はエラーにする
逆にconstructorでオブジェクトをそのクラスのインスタンスたらしめる処理を行ってはいけない
例えば、内部的に使用するプロパティを新しく作成してはいけない
内部プロパティは@@create()でundefinedの値を入れて作っておき、constructor()ではそこに入れるだけにする
これを常に守っているクラス間では、多重継承や多重継承元オブジェクトの作成など柔軟性の高さを確保しつつ、安全なクラスシステムが定義できる
一方自由が好きな人でも、@@createを使いこなすことで自分好みのクラスシステムを再定義できる
例えば~.prototype.~は長いから~.$.~にしようとかも超容易にできる
571:デフォルトの名無しさん
14/04/29 21:23:55.12 /EtEvdEl
JavaのJavaScriptが更新されたね
572:デフォルトの名無しさん
14/05/10 00:26:41.76 IHaPgo2n
ES6のイテレータってJava8のStreamAPIみたいなメソッド無いの?
573:デフォルトの名無しさん
14/05/29 22:34:29.48 fV0QO8N6
マイクロソフト、IEの新機能紹介サイト「status.modern.ie」を正式版に
URLリンク(www.atmarkit.co.jp)