[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 06/01 04:20 / Filesize : 154 KB / Number-of Response : 574
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ECMAScript デス 4



1 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:16:18.29 ]
《ECMAScriptを語るスレ》

1. - 概要 -
ECMA-262規格として知られる言語(通称 ECMAScript)についての利用法や言語仕様、
その他四方山話をするスレです。
Standard ECMA-262 ECMAScript Language Specification Edition 5.1 (June 2011) 標準規格(英語)
www.ecma-international.org/publications/standards/Ecma-262.htm
Annotated ECMAScript 5.1
es5.github.com/
Draft Specification for ES.next (Ecma-262 Edition 6)
wiki.ecmascript.org/doku.php?id=harmony:specification_drafts
Under Translation of ECMA-262 3rd Edition (日本語訳)
www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/


■前スレ
ECMAScript デス 3
toro.2ch.net/test/read.cgi/tech/1190160481/

■過去スレ
JavaScript デス
pc5.2ch.net/test/read.cgi/tech/1052273054/
ECMAScript デス 2
pc11.2ch.net/test/read.cgi/tech/1088298991/

2 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:17:18.23 ]
2. - JavaScriptについて -
JavaScriptは動的Webページ作成専用言語ではありません。
このスレでは、★言語★としてのECMAScript(JavaScript、JScript等)の話題を扱います。
ブラウザ環境でのJavaScriptはWeb製作板へ。ASP、CGIなどはWebProg板へ。

●スレ違い●なレスの例
 + JavaScriptによるWebページの挙動実現に関する疑問/質問、は、
   ■スレ違い■です。→Web製作板へどうぞ
 + Webブラウザの動作挙動に関するの疑問/質問         は、
   ■スレ違い■です。→Web製作板へどうぞ
 + そのほか、Webページ作成に限定した内容の疑問/質問    は、
   ■スレ違い■です。→Web製作板へどうぞ

■参考■[Web製作板] + JavaScript の質問用スレッド vol.94 +
toro.2ch.net/test/read.cgi/hp/1325400523/

※JavaScriptが板違いと言いたい人へ
運営サイドから次のような見解が出ています。
|459 飛べない削除屋 ★ sage :04/05/30 15:38 ID:???
|>‍>458
|ローカルルールにはひどく単純化されて書かれていますが、
|Javascript という言語そのものが板違いなのではありません。
|用途によって板違いかどうかを判断してください。

3 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:21:56.94 ]
3. - 主な実装 -
Rhino (Mozilla.orgでメンテナンスされている組み込みを目的としたJava製の実装)
www.mozilla.org/rhino/

SpiderMonkey (同上。ただしこちらはCによる実装で、Mozilla Firefoxで採用されている)
https://developer.mozilla.org/en/SpiderMonkey

NJS (旧NGSを引き継いで開発されている独立したインタプリタ実装)
sourceforge.net/projects/njs/

JScript (Microsoft社による実装。WSHを介したローカルマシン用のバッチスクリプトとして使用に加え、.NETの開発言語のひとつでもある。
また、WebクライアントサイドスクリプトやASPにも利用することができる。)
msdn.microsoft.com/ja-jp/library/72bd815a.aspx
JScript .NET
msdn.microsoft.com/ja-jp/library/cc435359(v=vs.71).aspx

DMDScript (Digital Mars社による実装。Windows上で利用できるJScript置き換え的な位置づけ
スタンドアロンのインタプリタに加え、COMコンポーネントとして組み込むこともできる。)
www.digitalmars.com/dscript/

FESI (ECMAScript第一版に準拠したJava実装)
www.lugrin.ch/fesi/

DMonkey (Delphi(ObjectPascal)への組み込みを目的とした実装)
sourceforge.jp/projects/dmonkey/

Tamarin (Adobe から Mozilla.org に寄贈された JIT 付きの仮想マシン。
コンパイラは含まれないので、ECMAScript のソースを直接実行することはできない。)
https://wiki.mozilla.org/Tamarin

4 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:22:47.60 ]
3の続き

KJS(KDEプロジェクトによって開発された実装)
api.kde.org/4.0-api/kdelibs-apidocs/kjs/html/index.html

JavaScriptCore(SafariのブラウザエンジンであるWebKitで採用されている実装で、KJSを元に改良されている)
trac.webkit.org/wiki/JavaScriptCore

Carakan(Opera Software ASAによって開発されOperaで採用されている実装)
my.opera.com/core/blog/2009/02/04/carakan

V8(GoogleによるC++実装で、Google ChromeやNode.jsなどで採用されている)
code.google.com/p/v8/

iv / lv5(日本人によって開発されているC++実装で、ES5.1準拠を謳う)
https://github.com/Constellation/iv/wiki/lv5

5 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:23:15.54 ]
4. - 関連スレ -
Web上におけるクライアントサイドスクリプティングに特化した実装(通称Javascript)については
WebPrograming板などの専門スレをご利用ください。

[Web製作板] + JavaScript の質問用スレッド vol.94 +
toro.2ch.net/test/read.cgi/hp/1325400523/
[WebProg板] Ajaxでも語りませんか Rigel4
kohada.2ch.net/test/read.cgi/php/1166751613/
[プログラム板] JavaScriptスレ
toro.2ch.net/test/read.cgi/tech/1314333133/

6 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:25:46.39 ]
ここまでテンプレ
リンク切れの修正や実装の補足などをした

7 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 09:55:56.16 ]
>>1
おつ

8 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 10:00:35.85 ]
>>989
JSON2.jsでは普通に使われてる書き方だけどな。
まぁ一般的な書き方は(functionの方ではあるけどな。

>>996-998
今回書かれているbに対して、それらの書き方は構文的にもエラー。
しかしb = と代入式が書かれてる時点で括弧なしは構文エラーではなくなる。
つまり単独での実行を例にするのは間違ってる。


9 名前:デフォルトの名無しさん [2012/01/02(月) 10:49:33.00 ]
なんで右にもtestを付けるんですか?
var test = function test() {};

10 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 12:07:04.67 ]
name で名前が取り出せるようになるから。



11 名前:デフォルトの名無しさん [2012/01/02(月) 12:14:18.49 ]
あ、それだけなんですか。デバッグの時に多少マシになる感じなんですね。

12 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 12:15:14.56 ]
>>8
言語仕様を読んだこと無い奴がカドクセーとかほざいてるだけだから気にするな。

13 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 12:39:13.77 ]
そういう流れいらないから

14 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 12:45:04.91 ]
カッコを付ける習慣がある以上、納得できる理由を出さないと。ただの遠吠えになってるよ。

15 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 12:59:11.96 ]
お前の習慣なんてしらねーよw

16 名前:think49 ◆bKk/qcAKuM mailto:sage [2012/01/02(月) 19:52:15.67 ]
>>前スレ997
ご指摘通り、記憶違いのようでした。お騒がせしました。

>>8
なるほど…。確かに代入演算子で右辺が式であることを保証している為、式文の規定にはとらわれないですね。納得です。
www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/11_Expressions.html#section-11.13

>>9
名前付き関数式は関数内のスコープに影響するので変数名を変更しても自身を参照できるようになります。

17 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:04:49.43 ]

い-635
ちなみに、平成18年度の民主党の収支報告書だが、
 電通が  690,150,988円(約6億9千万円)
 博報堂が 19,425,964円 (約2千万円)
 読売グループ系列(読売広告、読売メディアセンター)が 72,058,917円(約7千万円)なw
 フライシュマンヒラードジャパンが、1974000円かw
フライシュマンの本社はアメリカにあって、アメリカ政界や企業のPRも担当してるユダヤ系の会社だなw
ここが「マニュフェスト」っていう横文字を考えたんだなw

そういえば、今東電と電力総連がフライシュマンを雇ってるらしいじゃないww
札束で学者ひっぱたいてテレビででたらめ言わせても年寄なんかはまだまだテレビのいうことを信じるからなw


18 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 12:04:33.05 ]
>>16
> 変数名を変更しても

「変数が別のものに束縛されても」と言いたいのかな?

19 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 13:43:44.69 ]
ECMAScriptの規格に「束縛」なんて用語出てこないけど、何と勘違いしちゃってるの?

20 名前:think49 ◆bKk/qcAKuM mailto:sage [2012/01/03(火) 15:09:33.38 ]
>>18
「束縛」はわかりませんが、jsfiddle.net/4ULa3/1/ の「名前付き関数式を利用するパターン」がそれです。
IE8- ではバグがあるので使えませんけどね…。
d.hatena.ne.jp/think49/20110521/1305959222

後学の為に「束縛」を説明(もしくは参考URLの掲示)していただけると嬉しいです。
ぐぐって何となくは理解しましたが、「変数への代入 === 束縛」なのでしょうか。
この前提が正しいと仮定して、束縛することよりも元々の変数の名前で参照できなくなることが鍵のような気がします。



21 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 01:12:09.05 ]
ES5になってdefineProperty()とか出来て変わったようですが
下記のコードをES5らしく書くなら、どう書いたらいいでしょうか?

var O = function (a) {
this.o = a;
};
O.prototype = {
get oooo() {
return this.o;
}
};
var o = new O('oooo!');
o.oooo;

22 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 16:46:09.65 ]
>>8
>JSON2.jsでは普通に使われてる書き方だけどな。

hoge = function(){}();

こういうのの話だよね?
無いぞ。どこだよ。

23 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:53:23.33 ]
>>21
var O = Object.create(null, {
 o: { value: "" },
 oooo: { get: function() { return this.o; } }
});

var o = Object.create(O, {
 o: { value: "oooo!"}
});

24 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 21:17:08.31 ]
ttp://d.hatena.ne.jp/oogatta/20111204/1322982897

ES.nextもstrawmanもキモくね?

25 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 00:49:49.89 ]
Traitだけありゃいいのに最適化がうんたら

26 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 00:39:23.23 ]
>>24
実行コンテキストがいちいち変わるのが理解出来ないからクラスベースの
構文糖用意したつもりなんだよ。妥協点がそこだったんだろ。

ところで関数が暗黙にthisプロパティを持たなくなったのは良かったが
Function.prototype.bind(cx,args...)で引数のLIST型書きかえれるようにしたのはやめて欲しかった。
Callオブジェクトを撲滅できない以上ここら辺は積極的に隠蔽すべきだと思うんだが。
__proto__プロパティがダメでObject.define*がいい理由も根拠がわからん。

27 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 21:34:12.90 ]
__proto__がいいと思う理由は何?

28 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 21:27:21.83 ]
function Foo() {};
function Bar() {};

var f1 = new Foo();
f1.constructor === Foo.prototype.constructor; // Foo

Foo.prototype = new Bar();
var f2 = new Foo();
f2.constructor === Object.getPrototypeOf(Foo.prototype).constructor; // Bar

f1.constructor !== f2.constructor; // Foo !== Bar

Foo.prototypeの参照先が変わったのに、
なぜf1.constructorはFooを指しているんでしょうか。


29 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 23:46:27.29 ]
newはprototypeのコピーであって参照じゃないっしょ

30 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 02:34:50.33 ]
>>29
言われて本読みなおしてググってやっと理解できました。
ありがとうございます。



31 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 01:18:49.40 ]
ECMAScript Language Specification ECMA-262 6th Edition - DRAFT
people.mozilla.org/~jorendorff/es6-draft.html

読みやすくてイイ!

32 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:13:23.76 ]
JavaScriptではperlの
( $foo, $bar ) = split( /,/ );
みたいな書き方は出来ない?
(リストの左辺値)

33 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:13:59.06 ]
>>32
すんません。ECMAScriptでした。

34 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:53:59.26 ]
実装による
以上

35 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 20:34:52.67 ]
>>34
仕様の話に実装で答えても…

36 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 20:38:43.62 ]
ES5.1までの仕様にはないかな
6以降で入れるみたいな話しがちらほら
Fxはたしか実装してた気がする


37 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 00:11:46.03 ]
FirefoxはJavaScript1.7で導入してて
https://developer.mozilla.org/ja/New_in_JavaScript_1.7
分割代入 (destructuring assignment) って名前がついてる

38 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 07:09:48.00 ]
CoffeeScript使え

39 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 14:24:18.92 ]
32です。ありがとうございました。
ってことは、配列の内容を個々に変数にバラすには
1個ずつ代入するしか方法がない、ってことでしょうかね。

40 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 15:40:12.32 ]
だからFFでできるしCS使う手もあるっていってるじゃん




41 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 23:09:58.48 ]
isnt演算子のセンスのなさ
isnt = is not = is!
でよかったじゃん

42 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 09:34:12.46 ]
それは分かりづらいから無い

43 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 21:08:23.71 ]
Dだと!is

44 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 00:37:15.88 ]
>>40
ES3縛りっつー前提だもんで。
結局こんなん書きました。1個ずつ代入してることには変りはないですが。

ary2lc( [ 'yy', 'mm', 'dd' ], "2012/03/28".split("/") );

function ary2lc( to, from ) {
for( var i=0; i<to.length; i++ ) {
eval( to[i] + " = " + from[i] );
}
}

45 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 09:42:07.10 ]
CoffeeScriptはES3デスよ……

46 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 21:57:40.92 ]
>>45
すんません。よく知りませんでした。
勉強します。

47 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 12:03:13.48 ]
ところでes6のletとconstはふざけてんのアレ?

48 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 14:32:16.75 ]
letはいろんな書き方できるから?
何がどうふざけてるか書いてくれないかな

49 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 22:41:57.09 ]
そういう感性は俺にはなかった。
letもconstもプログラム言語にはあって然るべき機能だと思うけど。

50 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 08:03:01.79 ]
>>48,49
jsのブロックは見た目はブロックスコープに見えるけど言語仕様上ブロックスコープはないからブロックのセマンティックスはただの複文。
複文は複数の文を一つの文とみなすことしかやってない。var定義はプロトタイプベース言語としてのメタな文脈においてmozillaはvarバインドと呼んでるんだけど
varバインドは関数スコープで変数を束縛する。このときjsではスタックフレームもオブジェクトなのでプロトタイプベースから見ればスロット集合の実体を持ってて
ローカル変数はスタックフレームオブジェクトのスロットに束縛する。このときtry-catchの変数だけは実装上varとは別のスロット集合に束縛してスコープが別になってる。
それを仕様に取り込んだのがletでvarバインドに対してletバインドと呼んだりする。let文はその文で定義された変数はその文中のみ有効というwith文の置き換え。
let式のexpの部分は暗黙のブロックに囲まれるのでlet文の構文糖。ブロック中のlet定義は複文によって一つとみなされるので複文中の文から
letは見えるけど複文の実行が終われば他のコードからは見えなくなって結果letバインドされた変数はGCされる。
あくまでブロックスコープなんてものはなくてイメージとしてはカンマ結合(let a,=1,b=2;)みたいなもんだと思えばいい。

最新のドラフトを追ってないんで変更があるかもしれないけどes6のlet,constはdeclarationといってletバインディングされる。
es6はjsの仕様に合わせずブロックスコープを仕様にしたせいでletがブロック直下にしか置けなくなった。
letはwithの抹殺以外に旧時代のスコープを新たに作るために無名関数を使うコードを完全に置き換える目的もあったのにes6の仕様だと
let文とlet式が使えなくなってそれが直接的にできなくなった。他にもif直下にlet置けないからどんなに単独のifが短くて一行で書き
たくてもブロックで囲むコーディングルールを言語仕様が強制してしまったり、letはブロック直下以外禁止なのでforの初期化子に
置けないから本末転倒になってる。これを回避するにはforをブロックで囲んでその直下にlet定義するしかない。es5のfor-initializerが
消えたのはこれに無理やり合わせるため。
ほかにもconstがletバインドだから関数スコープじゃなくなって関数の頭で条件に応じて初期化内容を変えるのに



51 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 08:04:38.56 ]
function f(){
if(cond) const x=1;
print(x);//!condならundefined
}
function f2(){
if(cond){
const c=//hogehoge
}else{
const c=//fugafuga
}
//色々長い処理
print(c);//!condならfugafuga
}
がif(cond){ const x=1; print(x) }else{ const x=undefined; print(x) }かconst x cond ? 1 : undefined;と
function f2(){
if(cond){
const c=//hogehoge
//色々長い処理
print(c);
}else{
const c=//fugafuga
//色々長い処理
print(c);
}
になる。ほかにもconstは最適化のために初期化子必須になったんだけどこれは元々ある変数の初期化を伴わない定義の
デフォルトはundefined valueという仕様にesでlet文法作るときのミスで合わせられなくなったせいで未初期化の
constはundefined valueに束縛されずに2度目の代入が出来てしまうため、建前は最適化のためと言ってるけど初期化子必須に
したせいでconstの値がundefined valueになるときconst c = undefinedかconst c = void(0)としなきゃいけなくなったから
cに入る値が実行時まで遅延されて逆に最適化が難しくなってる。globalのプロパティundefinedはundefined valueじゃなくて
プロパティだから[[get]]するまで値が確定しないのとvoid(0)も[[call]]しないと確定しないのが原因。
jsの元からある仕様だとconstは初期化いらないから、しない場合はundefined valueに束縛されて定義時に値が確定して最適化出来る。

52 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 08:06:50.90 ]
これは最適化云々より変数の値がundefined valueになることを明確に主張するコードとしてわざとこう書くもんだった。
あとfunctionDeclarationがletバインドになったから既存の実装と全く互換性がなく関数定義をifブロックで囲むと外から見えなくなる。
#ifdefしたい時はif-elseでコード全体を囲む必要がある。#ifdefした関数使うコードがifとelseで2パスあるわけ。
es6のブロックスコープは本来はブロックスコープじゃないものをブロックスコープとして仕様にしたからコンテキスト依存になって制限のほうが多くなってるんだよ。
ecma-262は乱立する実装の最小公倍数の共通化とマシンリソースやセキュリティの都合があるから、極力実装に首突っ込まないよう
配慮されてたのに3.1派が主流になってから既存の実装と互換性がないのと最適化ばかり考えて実装の都合に制限された仕様になってるのがふざけてるって話。
nextやharmonyのbrendan eichの提案見てるとnetscape草案のjs2.0にあったのばかりだしMapやWeakMapだって3.1派が昔拒否したライブラリだし元に戻そうとしてるのは分かるよ。

仕様と実装の説明すると長いな。まあ、そういうこと。

53 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 09:54:55.97 ]
ガチで長いぞw

54 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 17:45:52.49 ]
>>50
長過ぎるのと意味が分からんところがあるけど
> このときtry-catchの変数だけは実装上varとは別のスロット集合に束縛してスコープが別になってる。
とりあえず、↑これはcatch内だけだね。

> letはブロック直下以外禁止なのでforの初期化子に
> 置けないから本末転倒になってる。これを回避するにはforをブロックで囲んでその直下にlet定義するしかない。
んなこたーない。仕様的にもちゃんと置けるよ。

他は後でつっこむ

55 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 18:55:45.44 ]
>>50-52"をまとめると

ブロックはスコープじゃなくて唯の複文
letはスコープ作るために導入された
letはundefined valueで初期化されない
letでundefined valueで初期化されるよえに=undefined、=void(0)などと書くと最適化されにくくなる弊害がある

ってこと?

56 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 20:34:09.47 ]
let文、let式がなければ

var foo = 0;
{ let foo = foo; alert(foo); }

とかではまるやつが出てくるのは目に見えてるしな

57 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 22:07:39.07 ]
letは色んな事出来すぎるからだめなんだよなぁ
何であんなに色んな記法を作ったのか


58 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 01:30:12.11 ]
>>51
> ほかにもconstは最適化のために初期化子必須になったんだけどこれは元々ある変数の初期化を伴わない定義の

constやletを初期化せずに宣言するのはバグの元だろ。どの言語でも言える事だけどローカル変数は
宣言と同時に絶対初期化するべき。

> 未初期化のconst

constは初期化必須って言っているのに、未初期化って矛盾してるぞ。その時はどんな値になってるんだ?
単純に未初期化のconstは、その時点で実行時エラーになる気がするが。


59 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 01:39:48.38 ]
constもletもJavaScriptの構造を理解している人に取っては必要ないものだよ
他言語メインの人がなんとなく使うときにハマるからあった方がいいねってもの

60 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 01:40:25.53 ]
const hoge;
hoge = "後から代入できちゃう";

ってことなんじゃねーの?
undefinedな定数にしたくて初期値省略してるのに、代入されたら台無しだよっていう



61 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 02:01:05.13 ]
constな変数(定数)をundefinedにする意味は全くないと思うけど、単純に未定義
って事もあるから、どっちでもいいか。
constな変数は絶対に初期化しとけって事だな。


62 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 07:14:17.62 ]
>>60
これってできるの?
うちのchromeさんだと出来ないんだけど

正確には代入してもconstされた値は上書きできないがエラーも出ない

#エラー出ないのはちょっとなー

const hoge = "aaaa";
hoge = "bbb"; // ここでbbbはが返る
alert(hoge); // ここで表示されるのはaaaa

const moge;
moge = "ccc"; // ここではcccが返る
alert(moge); // ここではundefinedが返る

正直な話言語仕様的には3.1で十分で
5,6なんかはは楽にするために拡張されると解釈してる


63 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 07:56:25.15 ]
JavaScriptって、一見代入とかができたように見えて、実はできない、という
場合ってスルーしちゃうじゃない。昔から。

foo = "foo"
foo.bar = "baz"

alert(foo.bar) // undefined

64 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 08:00:51.12 ]
何のためのstrict modeなんですかねえ

65 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 08:13:31.96 ]
たとえばJavaだと、参照される前に確実に1回だけ初期化される変数は、
finalだけど初期値なし、にできるけどな。

要するにundefinedってのは、名前が未定義って意味じゃなくて、初期化されてない値
(unititializeとすべき?)って意味だから、「undefinedな定数」なんて無理だから、って
ことじゃね?

66 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 08:27:47.33 ]
>>63
これは foo.bar にアクセスした時点で新たに String オブジェクトが生成されて
そっちの bar プロパティに代入してるだけだから、
代入が失敗しているわけではないと思う

67 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 13:19:34.99 ]
>>66
イミフ

68 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 13:20:57.64 ]
fxでも失敗するね
const hoge;
hoge = "aaaa"; // aaaa
hoge; // undefined

69 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 13:26:20.85 ]
>>67
仕様書を読んでみるといい

70 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 13:41:28.54 ]
6ドラフトの12.2.1 Let and Const Declarations
読んだけどわからん
そんなこと書いてあるかな?



71 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 14:11:35.11 ]
すごくおおざっぱに説明すると、プリミティブに対してオブジェクトとして
アクセスしようとすると、オブジェクトが作られて、それに対してアクセスする、
というのが言語仕様。

だから、その作られたオブジェクトの属性として設定されるけど、そのオブジェクトに
アクセスする方法がないし、元の変数は元のプリミティブを指したままなので……
というのが >>63 で起きてること。

72 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 22:57:50.88 ]
ゴミな仕様だな

73 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 12:10:26.90 ]
普通に例外吐いて止まってくれるだけでだいぶ助かるんだが

74 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 13:06:49.34 ]
strict mode + Object.sealed でおk

75 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 15:41:31.94 ]
foo.bar()
みたいな明らかに一文が終了してるときもセミコロンいるやん。

if(foo)
a+b;

みたいなコード書くヤツのほうを撲滅しろよ。

76 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 16:27:47.76 ]
波括弧を必須にするだけでよかったのにな

77 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 16:59:47.58 ]
;の省略とかややこしくなるだけだからいらんわ

78 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 17:09:36.40 ]
セミコロン省略はそこまで混乱しないだろ

79 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 18:12:22.52 ]
多分シェルでも全ての行末にセミコロンを付けるような人なんだろう

80 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 21:28:42.23 ]
セミコロン省略はあっていい
自分も付けるか気分と見やすさと必須性で決める
基本は全く無駄な物だから付けない



81 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 22:12:51.55 ]
必要ないならなくなってるよ。必要だから残ってる。
httpを使うことを考えると無くせない。

82 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 07:52:42.83 ]
俺は実際全くセミコロン付けないで書けている。よって必要ない。

改行せず一行に詰め込む時にだけ必要、という主張だね。

83 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 08:48:23.26 ]
そんなことは言ってない
必要ないところで省略した方が逆に見栄えもよく感じられて
問題もないこともあるから省略できていいって言ってる
セミコロンは必要、だけど省略も必要
わかる?

84 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 08:57:11.06 ]
省略したほうがいい場面ってどこだよ

array.filter(function(v) { return v % 2 == 0 });

みたいに関数本体が一文で済むところなら
セミコロンなしでもいいかなという気はするけど、
それ以外になんかあるか?

85 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 09:25:23.96 ]
一律つけた方が法則がシンプルな分
見栄えもいいよ
セミコロンの場合実害が少ないからなくても困らないけど

86 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 09:46:43.49 ]
メモ帳で長いコード書くとき
カッチリしたもう変更がないだろう機械的なコードはセミコロンで固めて
個性的な変更しまくりのふわふわしたコードには付けないな


87 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 09:49:49.99 ]
>>84
いや、むしろそういうごちゃごちゃした1行には付けるべきだろ。

a=1
b=2+a
みたいなのには必要ない、もしくは、
a=1;b=2+a;
にする。

88 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 09:54:58.57 ]
>>86
こーいう、背後に哲学が感じられる使い分けが
コードから読み取れれば問題ない

無分別に一貫性なくつけたりつけなかったり
は醜いし読みにくい。
考えなさっぽさが滲みでてみっともないし。

89 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 10:28:52.18 ]
スマホで作ってるとセミコロン付ける付けないとインデントはかなり悩む

それはそうとMathやStringが拡張される話で今盛り上がってるのは個人的にもありがたいんだけど

数の進数やbit数に関しての拡張と現在milli秒で扱ってる範囲ををmicro秒にして欲しいんだけど
そういう話は挙がってないの?

90 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 11:54:26.69 ]
なんでもかんでもマイクロ秒管理したら
既存APIが遅くなるんでねーの?



91 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 12:18:42.55 ]
OSから取得するナノ秒までで約60bit
マイクロ秒までで約50bit
ミリ秒までで約40bit

全部64bit整数使ってるだろうから変わりないのでは?

92 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 14:11:47.69 ]
非力な組み込みでもecmascript使うんだから標準で仕様化したらだめだ。

93 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 14:45:30.95 ]
非力というか万が一タイマーがサポートしてないのなら0埋めで返せばいいだけじゃない?
スクロールとか描画なんかの演算とタイマー設定をもう少し正確にやりたいだけでしょ?
まあディスプレイ付きのデバイスなら今時間違いなくマイクロ秒まではサポートしてるタイマー使ってるはずだけど

94 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 18:40:05.14 ]
セミコロン問題は、一応プラグマのopen issueのままです。
wiki.ecmascript.org/doku.php?id=harmony:pragmas

95 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 00:11:18.62 ]
>>93
だから、ECMAScriptなんつー総本山規格じゃなくて、ディスプレイ付デバイスで動かすような実装のレベルで
何とかしてよってのが>>92なんじゃねーの。

96 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 05:02:25.84 ]
マイクロ秒単位のタイマは、むしろ非力な組み込みでの需要の方が大きいんじゃねーの
なんにせよ非リアルタイムな環境でのマイクロ秒タイマは
信用ならない精度になるだろ

そういう話をするとしたらQueryPerformanceCounter的な高精度カウンタを新設して
自前でポーリングしれって感じになるんじゃねえかな

97 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 08:04:21.13 ]
コンストラクタを呼び出すとき
applyを使って引数を配列で指定したいときがあるんだけど可能かな?
例えばコンストラクタが
var C = (function(){
  var c = 0;
  return function (a,b) {
    this.a = a;
    this.b = b;
    alert([a,b,++c]);
  };
})();
として、とりあえず以下はダメだった。
var o = new C.apply(null, args);
var o = new (C.apply(null, args));
var o = (new C).apply(null, args);
エラー

var o = C.apply(new C, args);
コンスタラクタが二回呼ばれる
oが返されない

var o = new C();
C.apply(o, args);
コンスタラクタが二回呼ばれる

var o = {};
C.apply(o, args);
oがCのインスタンスにならない

アイデアあったらヨロ

98 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 08:34:31.35 ]
>>97
Function#bind を活用してみてください。

99 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 09:00:22.22 ]
>>98
それじゃ無理だろ。
そもそもbindさせるオブジェクトを
これから作ろうって話な訳だし。
evalして無理やりパースするくらいじゃね?

100 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 11:47:48.86 ]
>>97
もともとそのコンストラクタをどう使うつもりなのか



101 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 12:58:18.91 ]
>>97
これがしたいんだろ?
calleeと分割代入使うか__parent__書き換えるからecma標準じゃできんぞ。
calleeはYコンビネータにして分割代入はカリー化してループ回すと出来るかもしれんがこんな所じゃ貼れんよ。

function getConstructor(){
var c = 0;
return (function ([a,b]) {
this.a = a;
this.b = b;
print([a,b,++c]);
  }).bind(arguments.callee, Array.prototype.slice.call(arguments));
};

var cons = getConstructor(1,2);
var o = new cons();


102 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 13:59:28.01 ]
>>97
ES5仕様のbindがあるならこんなんでどうよ?

function applyNew(ctor, args) {
var a2 = [null];
a2.push.apply(a2, args);
return new (ctor.bind.apply(ctor, a2));
}
applyNew(C, [2,3]);

103 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 14:19:49.87 ]
それじゃapplyNewの戻り値が関数になるし[2,3]がインスタンスにバインドされない。
隠蔽したいのはCのvar c=0だけだと思う。

104 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 14:32:30.10 ]
いい忘れた。
a2.push.apply(a2, args)じゃなくてArray.prototype.push.apply(a2, args)じゃね?

105 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 15:32:29.16 ]
>>100
基本的には「コンストラクタを呼び出す時に
apply的な呼び出しは可能なのか」ということ。
限定的な使い方ではなくクロージャとかになっていても
問題ないような記法が自分では見つけられなかった。

あるコンストラクタのユーティリティ関数を作るときに
関数内からコンストラクタを呼び出す際、
引数の数が一定じゃない場合などは配列で渡せるとシンプルだなと思ったので。

強引な代替案なら思い付くんだけど
ハッとするようなスマートな記法をお持ちの方がいたら
勉強になるなと思ったですw


106 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 17:23:25.41 ]
>apply的な呼び出しは可能なのか
関数の仮引数を分割代入するだけだからnextが標準化されるまで待つよろし。
(function ({"a": a, "b": b}){return a+b;}).call(thisObj, {a : 1, b : 2})//->3
(function ([a,b]){return a+b;}).apply(thisObj, [1,2]);//->3

>クロージャとかになっていても
thisがレキシカルじゃないから元から出来るけどecmaが許さない。

107 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 17:54:48.87 ]
言っておくが >>102 でできるからな。

108 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 20:53:52.00 ]
>>107
jqueryとかのbindメソッドじゃダメだよね?
現時点で実装してる処理系ってFirefoxくらい?

109 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 21:15:07.89 ]
ES5だからIE9以上を含む全てじゃね?
IEはしらんがFxやらGoogleChromeやらOperaは実装済のはず

110 名前:97 mailto:sage [2012/05/03(木) 23:41:34.06 ]
>>102
ありがとう!
勉強になったよ
pushの結合もオレには新しかったw
concatより早いんかな
あとで調べてみようっと



111 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 11:32:46.04 ]
形だけなら別にbind 要らねんじゃね?

var Func = (function(){
  var c = 0;
  return function (a,b) {
    this.a = a;
    this.b = b;
    alert([a,b,++c]);
  };
})();

function applyNew (C, args) {
function F() {};
F.prototype = C.prototype;
var o = new F();
C.apply(o, args);
o.constructor = C;
return o;
}

var args = ["A", "B"];
var o1 = applyNew(Func, args);
var o2 = applyNew(Func, args);
var o3 = applyNew(Func, args);
alert(o1 instanceof Func)


112 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 13:43:47.26 ]
__proto__使わずに同じ事する懐かしの方法だな。

>>105はnew(C.apply(...))の形式が取りたいって最初の要件は良かったのか?

113 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 13:45:14.01 ]
最初の要件かそもそも、不明確なので

114 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 15:36:13.38 ]
>>112
実引数に配列を渡したいだけかと思ってたが。

115 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 15:47:45.81 ]
>コンストラクタを呼び出すときapplyを使って引数を配列で指定したい
これが要件で

>として、とりあえず以下はダメだった。
>var o = new C.apply(null, args);
>var o = new (C.apply(null, args));
>var o = (new C).apply(null, args);
>コンスタラクタが二回呼ばれる
>oが返されない
>oがCのインスタンスにならない

これを解決したいって話だったが>>97

116 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 16:43:37.62 ]
>>115
そうか、>>111は忘れてくれw

117 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 01:38:00.11 ]
ECMAからES5.1仕様書のHTML版公開
ecma-international.org/ecma-262/5.1/

118 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 11:26:27.98 ]
素晴らしい。

119 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 06:55:06.70 ]
お兄ちゃん、感心しているだけじゃなくてちゃんと読まないとダメだよ?

120 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 16:23:57.05 ]
あー毒舌な妹がこんなところにまで



121 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 04:12:22.56 ]
なあお前ら。
関数が結合されるのがヤダヤダ!って場合は__parent__の代わりにbind使えばいいが__proto__はどうするよ?
あと自己反映のときのcalleeとか。harmonyにProxyがあるのにcalleeがダメな理由てなんだ?

122 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 11:15:47.27 ]
>>121
__proto__のgetterはObject.getPrototypeOf、setterはObject.createである程度代用できる
arguments.calleeについてはtogetter.com/li/215907 が参考になる

123 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 07:47:35.23 ]
>>122
そこ色々間違ってるから鵜呑みにしないほうがいいぞ。

124 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 10:30:16.63 ]
>>123
どこがどう間違っているのか分からないとあなたの情報を鵜呑みに出来ない

125 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 10:30:27.73 ]
>>123
ご指摘ありがとう
よろしければ、より参考になる資料を示して頂けると嬉しい

126 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 17:49:57.32 ]
古い情報も相当残ってるけどwiki.ecmascript.orgが確実。

127 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 18:28:36.68 ]
>>126
古い情報が相当残っているのに確実とする理屈がわからない
結局、どこが間違っているかも言及なしだしあてにはできないなー

128 名前:デフォルトの名無しさん [2012/06/15(金) 08:25:24.62 ]
書いた本人は分かってるんだろうけど書き方がイマイチだから読む人がちゃんと分からないのではってことかな?

いずれにしろ1つのサイトだけあてにするのはダメ


129 名前:デフォルトの名無しさん mailto:sage [2012/07/01(日) 15:23:04.66 ]
ttp://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts
>removed <| and TriangleLiterals
これだからTC-39はダメなんだ!

130 名前:デフォルトの名無しさん mailto:sage [2012/07/01(日) 16:24:38.17 ]
そらそうよwww
これでもう復活はないなw 嫌いじゃないけどちょっと無理がありすぎたんだw



131 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 11:09:20.07 ]
ダメなところを改善したいBrendan EichといじりたくないTC39の戦いはまだまだつづく!

132 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 13:59:41.98 ]
AS3が一番とばっちりだよな。
先走りすぎたせいでJS2とも別モンになっちまったしhaXeの方がJS2に近いくらいだわ。

133 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 14:57:01.97 ]
Q. JS2とは?

134 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 16:48:46.88 ]
ActionScript3は、少し先走りすぎだったし、
Mozillaに提供した実装Tamarinのコードの質が悪く、
仕様の安易な部分と合わせて、反対派を団結させてしまったね。
結局Mozilla.orgでもTamarinを利用するTraceMonkeyプロジェクトはなくなったし。
ECMAScript 4で議論された機能については、議論継続中だからいいんだけども。

135 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 17:20:57.92 ]
議論継続中て言ったてこれだろ?

>Tentative addition of Class Definitions Syntax and Semantics in 13.5 based upon Maximally Minimal Strawman. NOTE-Classes do not yet have full consensus within TC39 and may not survive.
11.1.5 make super references illegal in method definitions within object literals
>removed <| and TriangleLiterals

subtypingのないjs1.xにclass definition入れたってFoo.prototype={}やObject.definePropertiesの構文糖でしかないし
1.xの延長である以上型変換が暗黙の強制型変換しかないから2.0と違ってタイプルーズで真の
structural typeでないから言語仕様の問題は解決できないだろ。HarmonyやStrawmanにある型付き前提の仕様入れる気無いだろTC39。

10年無駄にして最初ゴネたimport,exportとライブラリ強化入れただけだけどその間に
本来的に必要なのはclassじゃなくてsubtypeというのを少しでも認識させたのが唯一の功績だよ。

136 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 16:22:49.91 ]
ECMAScript 4に戻ってやり直すのが皆一番幸せになるわ

137 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 16:26:33.37 ]
つか明らかにJavaScriptの土管化が進行中な件
ウェブのC言語と言えば聞こえはいいが、要は誰も直で書きたがらないってことだからな。
そういう用途に応えるためにLLJSとか開き直ったものも出してきてるしw

138 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 16:31:52.47 ]
そして
問題点1:土管としては低効率
問題点2:土管が土管化を嫌がっていらんことするリスク

139 名前:デフォルトの名無しさん mailto:sage [2012/07/07(土) 01:50:08.30 ]
それって土管って表現するの?

140 名前:デフォルトの名無しさん mailto:sage [2012/07/07(土) 09:45:23.03 ]
6の仕様を見ていると結構いい感じだな。早いとこ普及してほしいよ。一応仕様のリリースは来年らしいけど。



141 名前:デフォルトの名無しさん [2012/09/10(月) 09:02:29.57 ]
>JavaScriptの土管化
>JavaScriptの土管化
>JavaScriptの土管化
>JavaScriptの土管化
>JavaScriptの土管化
>JavaScriptの土管化
>JavaScriptの土管化
>JavaScriptの土管化
>JavaScriptの土管化

142 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 00:40:57.35 ]
ECMAScript6にいつのまにかclassが追加されててワロタw
どうやら6/15のDraftに追加されたようだ。
さがしたら>>135で話題になってたけど、言ってる意味がわからん。。
ちょっと勉強するか。

143 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 01:36:15.53 ]
しかし仕様書を見てもよくわからんな。。
もう少し土管化するまで待つか

144 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 08:05:08.60 ]
土管化が何を指してるのかさっぱりだ

145 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 02:35:37.39 ]
www.slideshare.net/agigigigi/ecmascript-study-2-esnext-updates
constellation.github.com/slides/contents/20120812/presentation.html

この辺りを見てclassについてある程度理解出来た。
単なるシンタックスシュガーなんだな。それで十分だ。

それにしても、モジュールの機能が無いみたいだけどそれ以外は普通にモダンな
スクリプト言語になっちゃうね。

146 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 12:03:59.01 ]
言語設計は最初からモダンだけどな。
ライブラリ設計は古かったけど。(殆ど無いに等しいし)

147 名前:デフォルトの名無しさん [2012/10/14(日) 16:38:50.03 ]
ECMAScriptの最新 = TypeScriptなの?

148 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 00:05:30.16 ]
私も興味があります
現在策定中のECMAScriptとTypeScriptの相違はどの程度なのでしょうか?

149 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 00:19:27.67 ]
マージされることがあるとしても、バージョン二つくらい後だろ。
クラス仕様については、ECMAScriptとほぼ同じ機能になってるな。
違いは組み込みかライブラリ化の違いくらい。

150 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 17:18:28.74 ]
>>149
ありがとうございます
そうなると、あと10年位掛かりそうな・・・

オプショナルな静的型付けとかジェネリックとか、次の仕様に取り込まれないかな



151 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 17:47:41.70 ]
ECMAScript4の失敗を忘れたのか?
そこまでやるならいっそ新しい言語にしてくれたほうがマシ
糞みたいな互換性やら名前やらとはさっさとおさらばしたいぜ

152 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 20:19:01.64 ]
ECMAScript4の失敗についてはよく知らないけど
TypeScriptはJavaScriptの上位互換だよ
TypeScriptのように、既存のJavaScriptが動くように仕様を拡張したら問題ないのでは?

153 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 20:43:43.76 ]
ECMAScript4の失敗
ja.wikipedia.org/wiki/ECMAScript#ECMAScript_4
developers.slashdot.jp/story/08/08/19/0714251/
news.mynavi.jp/news/2008/08/18/027/

154 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 22:08:55.95 ]
>>153の記事を読んでの感想。

ECMAScript 4の失敗というのは、ECMAScript 4の仕様自体の問題というよりも、
Adobe、Mozilla、Opera、Google陣営と、Microsoft、Yahoo!陣営による政治的な問題
という色彩が強いように感じた。

例えば、ECMAScript 4が決裂した2008年当時は、Microsoftは「Web標準」を軽視し、
Silverlightを普及させようとしていたのではなかったか。
つまり、当時のMicrosoftは、Silverlightを普及させるために、JavaScriptが高機能になるのを嫌った。
一方、JavaScriptの重要性を認識していたMozillaやGoogleなどは、JavaScriptを大幅に拡張したかった。
そうした各陣営の様々な政治的な思惑があって、ECMAScript 4は決裂したように思う。

しかし、今は、Microsoftも「Web標準」にシフトして、業界全体でJavaScriptの重要性に対する認識が
共有されるようになったのではないか。
Webサイトに限らず、デスクトップアプリケーションやモバイルアプリ、サーバーサイドにまで
JavaScriptが使われている。
そうした中で、JavaScriptによる開発が行いやすいよう、ECMAScript 4のような大規模な拡張が
JavaScriptには求められているし、こうした要求に異を唱える陣営は今はもういないのではないか。

だから、合意に達するのであれば、慎重かつ大胆にECMAScript 6の仕様を拡張してほしいというのが、私の考え。

155 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 22:58:57.10 ]
MicrosoftはMicrosoftで思惑あったと思うが、
・AdobeがActionScriptをECMAScript4にしようとしていた。
・既に広く広まったECMAScript3との互換性の問題が軽視。
古いコードをどうやって実行するのか議論が深まらないまま。
・ECMAScript4の新機能の多くがActionScriptをコピーしただけで、
入れることの是非、設計詳細部の議論が深まらないまま。
・ActionScriptの機能の多くが実装者の思いつきで設計。(Adobeの公開MLに残ってる)
・参照実装であるtamarinのコードの質の低さ。
というわけでストップになった。
ただしECMAScript4で導入されそうになった機能は捨てられたわけでなく、
多くは議論を深めてから入れる方向で考えられている。
Webの現状を考えると時間をかけるのが妥当と判断された。
それはBrandenの声明にもはっきり書かれている。

156 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 23:48:22.01 ]
>>155
ActionScriptはECMAScript 4を元に作られたと思っていたのですが、
実際は逆で、ActionScriptを元にECMAScript 4の仕様を決めようとしていたということでしょうか?
ECMAScript 4は2回決裂しているようなので、そこらへんの前後関係は良く分かりませんが、
少なくとも2回目の決裂に関しては、Adobeの強引さとActionScriptの出来が問題になったということですかね。

ECMAScript 6に関してはしっかり議論して合意に達してほしいですね。
便利な機能が入ることを期待しつつ、時間が掛かることをもどかしく思ったりしつつ、
末端プログラマとして、仕様策定者に期待したいです。

157 名前:デフォルトの名無しさん mailto:sage [2012/10/16(火) 08:10:49.32 ]
>実際は逆で、ActionScriptを元にECMAScript 4の仕様を決めようとしていたということでしょうか?
ドラフトを先走って実装しただけ

158 名前:デフォルトの名無しさん mailto:sage [2012/10/18(木) 19:10:41.39 ]
>>154
前半の陰謀論はまったく要らないな

159 名前:デフォルトの名無しさん mailto:sage [2012/10/19(金) 21:05:59.32 ]
JavaScriptの未来?
brendaneich.github.com/Strange-Loop-2012/#/

160 名前:デフォルトの名無しさん mailto:sage [2012/10/19(金) 21:13:28.34 ]
>>159
ちなみにBrendan Eichのスライド



161 名前:デフォルトの名無しさん mailto:sage [2012/10/19(金) 21:25:10.17 ]
Brendan Eich @BrazilJS 2012 - The State of JavaScript
www.youtube.com/watch?v=DASvUIAfoRU

162 名前:デフォルトの名無しさん mailto:sage [2012/10/20(土) 00:54:46.78 ]
typescript出たばかりなのに、No Classかよw


163 名前:デフォルトの名無しさん mailto:sage [2012/11/02(金) 03:30:41.79 ]
tcp/ipみたく実装できてから仕様が固まるのかな

164 名前:デフォルトの名無しさん [2012/11/14(水) 10:34:30.08 ]
結果論かもしれないが、ECMAScript 4を捨てたのは明らかな失策だろう。
議論議論と、皆いつからそんなに会議好きになったのかな。
この記事がとても興味深いんだけど。

第二次世界大戦中のライフハック「仕事を進まなくさせる8ヵ条」
akihitok.typepad.jp/blog/2008/06/8-411f.html

> 1. 何事をするにも「通常のルート」を通して行うように主張せよ。
>   決断を早めるためのショートカットを認めるな。
> 2. 「スピーチ」を行え。できる限り頻繁に、長い話をすること。
>   長い逸話や自分の経験を持ちだして、主張のポイントを解説せよ。
>   「愛国的」な主張をちりばめることを躊躇するな。
> 3. 可能な限りの事象を委員会に持ち込み、「さらなる調査と熟考」
>   を求めよ。委員会のメンバーはできるだけ多く(少なくとも5人以上)すること。
> 4. できる限り頻繁に、無関係なテーマを持ち出すこと。
> 5. 議事録や連絡用文書、決議書などにおいて、細かい言葉遣いに
>   ついて議論せよ。
> 6. 以前の会議で決まったことを再び持ち出し、その妥当性について
>   改めて問い直せ。
> 7. 「警告」せよ。他の人々に「理性的」になることを求め、将来やっかいな
>   問題を引き起こさないよう、早急な決断を避けるよう主張せよ。
> 8. あらゆる決断の妥当性を問え。ある決定が自分たちの管轄にあるのか
>   どうか、また組織上層部のポリシーと相反しないかどうかなどを問題にせよ。

まさにウェブ標準そのものじゃないですかね。

> 「愛国的」な主張をちりばめることを躊躇するな。

オープンウェブ()の理想を語るとかですかね、この辺に対応するのは。

165 名前:デフォルトの名無しさん [2012/11/14(水) 10:41:03.03 ]
>>159
他人事ながら心配になるのは、そのスライドが現実化するよりも
Firefoxのシェアがゼロになる方がおそらく早いってことなんだが。
StatCounter等のデータ参照。特にモバイルでシェアゼロだしな。

Googleもいつまで養ってくれるんだか。
危機感があるから、ウェブの未来だのFirefox OSだの大々的にぶちあげてるんだろうけれど。

166 名前:デフォルトの名無しさん mailto:sage [2012/11/14(水) 11:55:54.29 ]
>>165
>Firefoxのシェアがゼロになる方がおそらく早い
StatCounterのデータをきちんと分析できればその妄想は消えるよ
ttp://gs.statcounter.com/#browser_version_partially_combined-ww-monthly-201001-201211

今Chromeが食ってるのはIE8以前のシェアとFirefox4以前のシェアってのが一目瞭然。
過去のFirefox3.xのシェアがぶっとかったから、ブラウザ名だけの分析だとFirefoxのシェアが失われてるように見えるが
実際には、Firefox5以降のラピッドリリースに乗り換えてるFirefox信者をGoogleは全然動かせてない。
その量、WEB利用者全体の20%強……このシェアがゼロになるというなら、ちょっとその理由を教えてほしい

167 名前:デフォルトの名無しさん mailto:sage [2012/11/14(水) 12:14:52.56 ]
ちょっと昔なら逆転不可能そうに見えたブラウザ市場をChromeがガツガツ食い込んで行ったのは
裏を返せば、どのブラウザにだってまだまだシェア伸ばすチャンスはいくらでもあるってことの証明だしな

168 名前:デフォルトの名無しさん mailto:sage [2012/11/14(水) 12:25:49.32 ]
おまいらスレチなんで各ブラウザの専スレでやってくれないかー

169 名前:デフォルトの名無しさん mailto:sage [2012/11/14(水) 12:39:10.73 ]
そこはブラウザの専スレじゃなくてブラウザ戦争スレに誘導だろ

170 名前:デフォルトの名無しさん mailto:sage [2012/11/14(水) 17:03:47.11 ]
    |┃三    ,ィ, (fー–─‐- 、、
    |┃.    ,イ/〃        ヾ= 、
    |┃   N {                \
    |┃  ト.l ヽ               l
 ガラッ.|┃ 、ゝ丶         ,..ィ从    |
    |┃  \`.、_    _,. _彡’ノリ__,.ゝ、  |     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    |┃三 `ゞf‐>n;ハ二r^ァnj< y=レヽ    <  話は聞かせてもらったぞ!
    |┃.    |fjl、 ` ̄リj^ヾ)  ̄´ ノ レ リ     |   Operaは滅亡する!
    |┃三  ヾl.`ー- べl,- ` ー-‐’  ,ン       \____________
    |┃      l     r─‐-、   /:|
    |┃三     ト、  `二¨´  ,.イ |
    |┃     _亅::ヽ、    ./ i :ト、
    |┃  -‐”「 F′::  `:ー ‘´  ,.’  フ >ー、
    |┃    ト、ヾ;、..__     , ‘_,./ /l



171 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 16:23:31.62 ]
>>164
かなり勘違いしてる。
>>165
これ、まだ現実味ない事ばかり書いてるわけじゃなくて、
既に確定しているversion 6や既に現実になっていることが多い。
Javascriptが共通基盤になるって話がちょっと盛ってあるくらい。

172 名前:デフォルトの名無しさん mailto:sage [2012/11/22(木) 22:07:58.91 ]
正直Windowsみたいに一社独占になった方が開発は楽になるけどね。
今後はいろいろなOSとブラウザが乱立するんだろうね。

173 名前:デフォルトの名無しさん mailto:sage [2012/11/23(金) 08:48:10.93 ]
> 正直Windowsみたいに一社独占になった方が開発は楽になるけどね。

一生Adobe信者になれば楽になれるぞ

174 名前:デフォルトの名無しさん mailto:sage [2012/11/23(金) 09:55:42.99 ]
そういやアドベはブラウザは作らないのかね。
作って普及させれば全て無駄にならないのに。

175 名前:デフォルトの名無しさん mailto:sage [2012/11/23(金) 10:39:23.23 ]
Flashプラグインあるじゃん。これさえあれば既存の全ブラウザ乗っ取ったも同然。

176 名前:デフォルトの名無しさん mailto:sage [2012/11/23(金) 16:48:28.33 ]
すでにIE10が乗っ取れてないわけだが

177 名前:デフォルトの名無しさん mailto:sage [2012/11/24(土) 12:58:20.82 ]
なんかe4xが死にそう
interpolationは便利だったのに

178 名前:デフォルトの名無しさん mailto:sage [2012/11/27(火) 04:47:12.84 ]
これか
https://developer.mozilla.org/en-US/docs/E4X

かなり思い切った決断だけど
なんで廃止にする必要があったの?
問題はFirefoxだけ?

179 名前:デフォルトの名無しさん mailto:sage [2012/11/27(火) 04:50:27.92 ]
>>178
ごめん、E4Xをサポートしているのは、ブラウザではFirefoxぐらいか?

180 名前:デフォルトの名無しさん mailto:sage [2012/11/27(火) 10:58:00.49 ]
もっと早くに死んでるべきものだった。
XML literal syntax(笑)



181 名前:デフォルトの名無しさん mailto:sage [2012/11/27(火) 11:22:01.01 ]
セキュリティの問題さえなければ便利だったんだけどね
innerHTML(笑)は標準化さえされてないし、DOMは超冗長だし

182 名前:デフォルトの名無しさん mailto:sage [2012/11/27(火) 15:07:03.68 ]
>>181
innerHTMLは標準化されてるよ
domparsing.spec.whatwg.org/#innerhtml
www.w3.org/TR/DOM-Parsing/#widl-Element-innerHTML

183 名前:デフォルトの名無しさん mailto:sage [2012/11/27(火) 16:30:09.11 ]
E4Xってヒアドキュメントに使うもんだと思ってた
っていうかこれからヒアドキュメントどうすればいいんや・・・

184 名前:デフォルトの名無しさん mailto:sage [2012/11/27(火) 17:35:53.95 ]
>>182
ちゃんと勧告まで進めばいいな
DOM4は大丈夫そうだけど、その関連規格はコケそうで怖い
DOMの仕様は5つもW3C Noteになった前例があるし

185 名前:デフォルトの名無しさん mailto:sage [2012/11/27(火) 22:54:32.73 ]
>>183
uupaa.hatenablog.com/entry/2012/11/08/154422

186 名前:デフォルトの名無しさん mailto:sage [2012/12/03(月) 09:07:26.90 ]
>>183
ES6 Template Strings

187 名前:デフォルトの名無しさん mailto:sage [2012/12/03(月) 22:31:17.95 ]
>>186
何この気持ち悪い構文
普通にWYSIWYGリテラルでいいのに・・・

188 名前:デフォルトの名無しさん mailto:sage [2012/12/04(火) 17:52:16.89 ]
Perlとシェルを合体させたような変な構文だな

189 名前:デフォルトの名無しさん mailto:sage [2012/12/04(火) 17:55:27.25 ]
XML literalの百倍マシ。Javascriptっぽいし。

190 名前:デフォルトの名無しさん mailto:sage [2012/12/09(日) 23:50:29.25 ]
JXONってDOMなんだな

>>186
#演算子やん



191 名前:デフォルトの名無しさん [2013/01/01(火) 13:04:46.41 ]
typescriptて散々実装しねぇって駄々捏ねてたのにes4の先行実装だな。
15年早かったらes5なんてなかったのに。

192 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 01:02:18.10 ]
benvie.github.com/continuum/
ここにES6が実験出来るサイトがあった。
早速classとか試してみたらちゃんと動いた。
多重継承が出来なそうだが、ES6は出来ないのかな?
あと配列内包(List comprehension)がうまく動かん…

193 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 02:06:29.51 ]
trait使えばできるだろ>多重継承
ES.nextに入ってなかったっけ?

194 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 11:47:34.88 ]
VBScriptでweb上の画像を取得するスクリプトをいくつか書いたのだけど、
ブラウザをIE8からFireFoxに変えたら正常に動作しなくなった。
それで結局全部Jscriptに書き換えるはめになってしまった。

WSHの動作環境はブラウザに依存するもんなんでしょうか?
画像の取得に使用したcomはWinHttp.WinHttpRequest.5.1とMSXML2.XMLHTTP3.0、
使用OSはXPです。

195 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 14:25:52.62 ]
バッチリ依存します。そもそも、それらのAPIは標準化されていません
OperaだろうとGoogle Chromeだろうと動かないでしょう

196 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 15:01:24.08 ]
>>195
ありがとう。
テキストは取得できるのに画像が取得できないという症状でした。
JScriptにしたら問題なく動作するようになりました。

しかしそのJScriptでさえ、JavaScriptの「方言」と呼ばれたりしています。
う〜む……、

現実の世界では英語が国際的に標準語の地位を固めて久しいですが、
プログラムの世界は混沌としていますね。

197 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 16:09:05.30 ]
そのJScriptがクソなだけだ
英語が標準語ならJScriptはラテン語だろう

198 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 19:51:42.53 ]
MicrosoftがJScriptとかいう謎なクソ言語を作っただけの話で、
そこまでややこしい話ではない。
とりあえずIEをメインにして開発するのをやめれば
自然とそれなりに標準に沿ったものになる

199 名前:196 mailto:sage [2013/01/05(土) 23:50:29.96 ]
>>198
移植そのものは2ヶ月ほどの作業だったのですが、
その後のデバッグにみっちり1月半かかってしまいました。

それにしても、OSは世界標準なのに、実装されているバッチスクリプトが方言って……(泣)

200 名前:デフォルトの名無しさん mailto:sage [2013/01/06(日) 01:06:47.43 ]
MSはWeb関連では失敗続きで弱小メーカーだからね。
真に世界標準なのはOffice(Excel,Word)であって、WindowsはOfficeの抱き合わせ販売
といっても過言ではない。(過言かも…)
だから、Officeの呪縛がない個人PCだとWindowsでなくてもそれほど困らないし。



201 名前:デフォルトの名無しさん mailto:sage [2013/01/06(日) 01:11:47.62 ]
OfficeもWineで動くから実はWindowsは全く必要ない…?

202 名前:デフォルトの名無しさん mailto:sage [2013/01/06(日) 02:12:03.17 ]
確かにそうだね。ただ、Webアプリが充実してくるとOSの重要性は無くなっていって
どうでもよくなりそうだね。
少なくとも会社のPCは、惰性でWindowsをずっと使っていくと思われる。

203 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 19:42:04.34 ]
海外じゃ公的機関が予算削減のためにOpenOfficeを使ってるだろ

204 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 15:59:00.23 ]
es6どんどん糞になっていくよな
proxyとAPI強化しか要らん
どこに行こうとしてるんだ

205 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 20:30:38.50 ]
>>204
letとかオプション引数とか=>とかが要らないわけない。
早くES6が普及してほしい。

206 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 21:04:16.79 ]
たまにはremoveされた<| と TriangleLiterals のことも思い出してあげてください

207 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 23:49:59.86 ]
>>204
API強化はスレ違いです。

208 名前:デフォルトの名無しさん mailto:sage [2013/01/10(木) 00:44:06.28 ]
意味が分からん。いきなり何を言ってるんだお前は

209 名前:デフォルトの名無しさん mailto:sage [2013/01/12(土) 12:43:53.73 ]
es6でconstが導入されるけど、functionの引数にもconst指定できればいいけど。

210 名前:デフォルトの名無しさん mailto:sage [2013/01/12(土) 16:18:48.94 ]
const引数か、あったら便利かもな



211 名前:デフォルトの名無しさん mailto:sage [2013/01/12(土) 17:18:05.69 ]
逆に無いと引数が変更されるのかがわからないし、
精神衛生上よくないよね。是非ともあってほしい機能だ。

212 名前:デフォルトの名無しさん mailto:sage [2013/01/12(土) 17:28:59.86 ]
プロパティが変更できるんじゃ意味ないだろ

213 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 09:51:30.92 ]
>>211
constってプロパティが変更出来るのか?
そもそも、C++みたいにconstメソッドとかの指定が無いから、
メソッドが内部を変更してしまうかも分からないね。
つうか、今一俺が仕様を分かってないな…

214 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 11:03:23.10 ]
今のFirefoxに実装されてるconstは、
const指定した変数が指すオブジェクトを別のオブジェクトには変更できないけど、
const指定した変数が指すオブジェクトの中身は変更できるね
これを関数引数に指定できても意味無いな

215 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 13:09:36.12 ]
じゃあconstの存在意義って何よ

216 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 13:52:23.84 ]
constはプリミティブ型にしか意味なさそう。
オブジェクトを本当にconstにするには、Object.seal(obj)を使う必要があるんだろうね。

217 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 14:14:28.53 ]
インタプリタでconstは厳密な実装が難しい。ましてevalのある言語。

218 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 14:15:58.46 ]
>>216
オブジェクトを書き込み不可にしたいのならそう。
通常、constは参照の方の属性。

219 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 17:39:39.16 ]
>>217
それは違うんじゃないかな?Object.seal()とかあるわけだし。
それにしても、es6になっても癖のある言語である事に変わりないね。俺は好きだがw

220 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 17:51:08.18 ]
>>219
const引数修飾子はオブジェクトの属性ではないのです。



221 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 18:23:10.52 ]
>>220
>>217はインタプリタの一般論で言ってたから、そんなわけないとObject.seal()
を例にして否定したんだよ。

222 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 19:10:38.56 ]
一部でも難しければ、全体が難しいんじゃないかな?

223 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 19:26:59.41 ]
じゃあどうやってObject.seal()実装してるの、って話だろ
別に一部も全部も難しくないって

224 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 19:44:05.92 ]
はあ?
Property descriptorで全てのpropertyをflexible: falseにして、
新規propertyを作れなくするんだけど?

225 名前:デフォルトの名無しさん mailto:sage [2013/01/24(木) 19:33:48.70 ]
flexibleは名前変わったしsealじゃなくてfeezeだよ
インタプリタでconst難しいのはあってるけど

226 名前:デフォルトの名無しさん [2013/02/01(金) 22:14:26.55 ]
代入した時にエラーを吐くならともかく
完全にスルーするってどういう意味があるのかサッパリでござる
バグの元にしかならんと思うんだが

227 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 00:31:41.27 ]
そんなあなたにstrict mode

228 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 13:30:29.45 ]
>>226
pageをリロードしたときに二重定義エラーになるからだろ。
リロードしたときに一々コンテキスト毎再生成してたら遅いだろ。
標準化されたstrict modeはfatal-warnings modeの挙動取り込んだんだから
>>227の言う通りデバッグのときだけstrict mode使えば良いじゃん。
それよかletになつたから#ifdefとして使えんのが痛い。

他のも標準化範囲半端だから不便だけどfor ofとextraとコレクションやっと入ったんだ喜べ!

229 名前:デフォルトの名無しさん mailto:sage [2013/03/07(木) 15:27:21.75 ]
en.wikipedia.org/wiki/ABAP 112位
https://github.com/languages/Lasso 54位

https://github.com/michaelcontento/monkey マルチプラットフォームなcompilerらしいが実態は謎 108位
https://github.com/languages/MoonScript coffeeっぽい lua transpiler 107位
https://github.com/languages/Rouge ruby 実装の clojure 109位
https://github.com/languages/TypeScript 真打登場?しかしrazor-qtなぜおまランクに入ってる… 80位
https://github.com/languages/PogoScript forthっぽい js transpiler 111位
https://github.com/languages/Xtend みんなも言語つくろうね!そんなeclipseで言語dsl作成ツール 99位

githubのランクにニューフェース(新言語)登場!
上記ふたつは昔からあるのだけど。状況を一言で言い表すと

すげー混沌でこれは…っていうか百花繚乱

230 名前:デフォルトの名無しさん mailto:sage [2013/03/22(金) 13:13:07.13 ]
JScriptから、要素数が65536の配列に見える
オブジェクトをC#で作っています。

x[1]=2とか、y=x[1]と書くと、IReflect.GetFieldではなく
IReflect.GetFieldsですべてのメンバを取得してから
"1"という名前のフィールドを探しているようです。

GetFieldsを呼び出された時点では、
目的のフィールド名が分からないので
フィールド名が"0"〜"65535"のFieldInfo配列を返したら
InvokeMemberまでに数秒かかってしまいます。

要素数に関わらない時間で呼び出せるようにする
方法はありませんか?



231 名前:デフォルトの名無しさん mailto:sage [2013/03/22(金) 13:18:16.69 ]
proxy

232 名前:デフォルトの名無しさん mailto:sage [2013/03/29(金) 07:35:30.36 ]
https://github.com/timkurvers/byte-buffer
>Theoretically any browser supporting JavaScript's typed arrays is
>supported. Unfortunately, the spec hasn't been finalized yet and
>as such support is limited for now.
stackoverflow.com/tags/typed-arrays/hot
stackoverflow.com/tags/arraybuffer/hot

いまさらtyped-arrayとか調べてみたけどやっぱこの辺でつまったorz
よくみたらphpもasのライブラリとかも書いててすごいなオスロのひと…

233 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 13:55:55.13 ]
>>230
ちょうどおいらもC#でjscript等で使用されることを想定してるオブジェクトを設計してるんだけど
IExpandoとかIReflectとか実装する意味ある?(面倒くさい)

もうできること限定しちゃって
コレクションもコレクションクラス作っちゃってやったほうが楽じゃね?

x.Set( 1, 2 );
y = x.Item( 1 );

で妥協しちゃだめ?

234 名前:230 mailto:sage [2013/04/04(木) 12:31:59.48 ]
setメソッドでは妥協したくないところです。

IReflect.InvokeMemberに"[DISPID=0]"というメンバに対する処理を書いて
x(1)=2、y=x(1)というのは実装できました。
今のところ、これ以上の策がなく、妥協してるところです。

IExpandoを実装するとx[1]=2は実装できたんですが
y=x[1]に対応しようとすると、
230に書いた課題が残るんですよ。

コレクションではなくて、UART経由で0〜65535のアドレスを持つ
レジスタへの読み書きなので、GetFieldsを呼び出された時点で
求めるメンバ名が取得できれば良いんですけどね。

235 名前:デフォルトの名無しさん mailto:sage [2013/04/28(日) 12:03:49.25 ]
Functional JavaScript: Introducing Functional Programming with Underscore.js
www.amazon.com/Functional-JavaScript-Introducing-Programming-Underscore-js/dp/1449360726/
Publication Date: June 18, 2013

236 名前:デフォルトの名無しさん mailto:sage [2013/04/30(火) 19:29:37.54 ]
es6 draft 15.4.4
>is not an Array exotic object
なん、だと・・・往生際が悪いぞ!マスター・アジア!
わざわざ下線引くからには皆考えることは同じだな。

あと、MappedArgumentsObjectがjs1.2のarguments objectと同じ仕様じゃん。caller無くした代わりか。
つか上がってるpdf3月なのにもう古い。

237 名前:デフォルトの名無しさん mailto:sage [2013/05/29(水) 16:28:30.33 ]
30%の確率で0、70%の確率で1を返すプログラムを教えてください

238 名前:デフォルトの名無しさん mailto:sage [2013/05/29(水) 19:04:59.18 ]
>>237
乱数

239 名前:デフォルトの名無しさん mailto:sage [2013/05/29(水) 19:14:50.60 ]
if ( (new Date()).getSeconds() % 3 ){
return 1;
}else{
return 0;
}

240 名前:デフォルトの名無しさん mailto:sage [2013/05/29(水) 19:54:46.93 ]
>>239
それなら Date.getTime() % 3 の方がGC的によい



241 名前:デフォルトの名無しさん mailto:sage [2013/05/29(水) 20:08:41.26 ]
そもそもそれ70%のコードじゃなくね

242 名前:デフォルトの名無しさん mailto:sage [2013/05/30(木) 12:49:14.78 ]
これはひどい

243 名前:デフォルトの名無しさん mailto:sage [2013/05/30(木) 14:10:10.49 ]
>>240
ほとんどのシステムで時計見るのは遅いよw

244 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/06/04(火) 16:55:54.33 ]
>>244,245

こいつらは何がしたいわけ?

248 名前:デフォルトの名無しさん mailto:sage [2013/06/07(金) 12:17:25.74 ]
どっかのアホなスレと勘違いしてるんだろ

249 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/07/25(木) NY:AN:NY.AN ]
>>249
単純に4行目のfunction宣言内で新しい環境が作られているからじゃね?
つまり3行目と5行目のprint呼び出しに現れるxは、
1行目のfunction宣言の環境内で束縛されているけれど、
4行目はのprint呼び出しは(新しい)別の環境内にあるx(の束縛)を参照している



251 名前:デフォルトの名無しさん mailto:sage [2013/07/25(木) NY:AN:NY.AN ]
4行目が
function(x){x+=10;y=20;print(x,y)};
だとどうよ

252 名前:デフォルトの名無しさん mailto:sage [2013/07/25(木) NY:AN:NY.AN ]
>a,bを合わせて新たに1つのaにしているんだろうか。
スタックみたいにテーブルを重ねていくんじゃね

253 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/07/25(木) NY:AN:NY.AN ]
>>249
出力結果おかしくない?
4行目は即時関数じゃないから、実行されないと思うんだけど。
実行環境によっては、それで実行されるのか?
それ以外は453が正解だと思うが。

255 名前:デフォルトの名無しさん mailto:sage [2013/07/26(金) NY:AN:NY.AN ]
変数yとかzがグローバル変数だし
4行目が名前無しの関数宣言?してるだけだし
もうなんかプログラム的にめちゃくちゃ

256 名前:デフォルトの名無しさん mailto:sage [2013/07/26(金) NY:AN:NY.AN ]
zはグローバルじゃない。

257 名前:デフォルトの名無しさん mailto:sage [2013/07/26(金) NY:AN:NY.AN ]
トップレベルで束縛されている変数を「グローバル変数」と呼び、
それ以外のすべての変数を「ローカル変数」と呼ぶとすれば、
>>256が言うようにzはグローバル変数じゃないし、それどころか
>>249,253ともすべての変数がローカル変数だったりする

で、あるクロージャ(ここでは環境と同義)について、
自クロージャ内で束縛されている変数を「束縛変数」と呼び、
より外側のクロージャで束縛されている変数を「自由変数」と呼ぶとすれば、

>>249の場合
[外側のクロージャ内] x(仮引数): 束縛変数, y: 束縛変数
[内側のクロージャ内] x(仮引数): 束縛変数, y: 自由変数

>>253の場合
[外側のクロージャ内] x(仮引数): 束縛変数, y: 束縛変数
[内側のクロージャ内] x: 自由変数, y: 自由変数, z(仮引数): 束縛変数

となる

258 名前:デフォルトの名無しさん [2013/07/26(金) NY:AN:NY.AN ]
>>257
yはグローバル変数だぞ

259 名前:255 mailto:sage [2013/07/26(金) NY:AN:NY.AN ]
>>256-257
ごめんzはちょっと見落としてたよ
でもyはグローバル変数だろ?
仮引数じゃなければ、varつけて宣言してない変数はトップレベルに束縛されてしまうはず
なのでyはグローバル変数じゃない?

260 名前:デフォルトの名無しさん mailto:sage [2013/07/26(金) NY:AN:NY.AN ]
内側のクロージャの宣言はChromeとかだとエラーになるな
そもそも呼び出してないんで実行結果にまったく影響無いが
これが実行できてしまう環境ってなんなの?



261 名前:デフォルトの名無しさん mailto:sage [2013/07/26(金) NY:AN:NY.AN ]
え、関数が関数返せない処理系なんかあるの?

262 名前:デフォルトの名無しさん mailto:sage [2013/07/26(金) NY:AN:NY.AN ]
関数が何かを返すなら少なくともreturn文が必要だな
>>249>>253はreturnも無いし関数の戻り値も参照してないけど

263 名前:デフォルトの名無しさん mailto:sage [2013/07/26(金) NY:AN:NY.AN ]
(function(){var abc; abc=function(){};})();
(function(){function abc(){};})();
(function(){function(){};})();

firefoxもchromeも三つ目だけシンタックスエラーになるね
無名関数の定義は式の右辺値になってないとだめなのかな
関数宣言と紛らわしいからか

264 名前:デフォルトの名無しさん mailto:sage [2013/07/26(金) NY:AN:NY.AN ]
式の右辺値とか関係無いか
関数宣言になっちゃって、その場合は無名じゃダメってことなのかね

265 名前:デフォルトの名無しさん [2013/07/26(金) NY:AN:NY.AN ]
SyntaxError: function statement requires a name
が出るから多分そうだね

266 名前:デフォルトの名無しさん mailto:sage [2013/07/26(金) NY:AN:NY.AN ]
IEはドキュメントモードによってはエラーにならんのか
わらえるw

267 名前:デフォルトの名無しさん mailto:sage [2013/07/26(金) NY:AN:NY.AN ]
wshはエラー出ないね

268 名前:デフォルトの名無しさん mailto:sage [2013/07/26(金) NY:AN:NY.AN ]
Edition 3rdしか見てないけどECMA-262の仕様的にはfunction(){function(){};}はエラー

269 名前:デフォルトの名無しさん mailto:sage [2013/07/26(金) NY:AN:NY.AN ]
JScriptだから(震え声)

270 名前:デフォルトの名無しさん mailto:sage [2013/07/27(土) NY:AN:NY.AN ]
>>249
コードが間違ってないなら結合オブジェクト実装しちゃったんだろう



271 名前:デフォルトの名無しさん mailto:sage [2013/08/03(土) NY:AN:NY.AN ]
どうやら、6の仕様が確定するのは今年末で、最終的にリリースされるのは来年末らしいな。
もうちょっと早くなんなかったのかね。

272 名前:デフォルトの名無しさん mailto:sage [2013/08/04(日) NY:AN:NY.AN ]
・なぜ匿名関数呼び出しの際function(){}を括弧でくるまなければいけないのか
・なぜreturnがいるのか

ファンクショナルなことしてると助長になりすぎ

273 名前:デフォルトの名無しさん mailto:sage [2013/08/04(日) NY:AN:NY.AN ]
うが抜けた

274 名前:デフォルトの名無しさん mailto:sage [2013/08/04(日) NY:AN:NY.AN ]
うはどこに入るのか

275 名前:デフォルトの名無しさん mailto:sage [2013/08/04(日) NY:AN:NY.AN ]
助う長

276 名前:デフォルトの名無しさん mailto:sage [2013/08/04(日) NY:AN:NY.AN ]
・なぜ「う」がいるのか

277 名前:デフォルトの名無しさん [2013/08/04(日) NY:AN:NY.AN ]
鵜飼のためにうは存在する。

278 名前:デフォルトの名無しさん [2013/08/05(月) NY:AN:NY.AN ]
>>272
functionの前にvoidとか ! とか適当な単項演算子を書けば
括弧でくるまなくても良くなる

279 名前:デフォルトの名無しさん mailto:sage [2013/08/05(月) NY:AN:NY.AN ]
ほんとにファンクショナルなことやってるなら、
function(){}を括弧でくくる必要なんてほとんど無いはずなんだけどね。
returnは面倒くさいけど。

280 名前:デフォルトの名無しさん mailto:sage [2013/08/13(火) NY:AN:NY.AN ]
関数リテラル使って関数オブジェクトを複数作ると、一般的にメモリ上はどうなるんだろう。
関数オブジェクトが持つのはクロージャだけなのかコード部分(text領域)も複製されるのか。
関数リテラルによる関数複製のコストが知りたい。



281 名前:デフォルトの名無しさん mailto:sage [2013/08/13(火) NY:AN:NY.AN ]
ソース嫁

282 名前:デフォルトの名無しさん mailto:sage [2013/08/14(水) NY:AN:NY.AN ]
実装による、としか言いようがない。そしてこのスレはスレタイによれば標準規格についてのスレ。

ただ、ひとつ言っておくなら、textというのはバイナリコードを指す用語だから、
インタプリタには基本的にはそんなものはない。

283 名前:デフォルトの名無しさん mailto:sage [2013/08/14(水) NY:AN:NY.AN ]
>>280
関数宣言でも最適化でインライン展開するから実装者以外が気にすることじゃないな。
ariguments.calleeが遅いとか嘘で仕様からなくしたいだけだし。

>>282
純粋なインタプリタなんて素のspidermonkeyくらいじゃね?

284 名前:デフォルトの名無しさん mailto:sage [2013/08/14(水) NY:AN:NY.AN ]
素朴な通訳系実装なら構文木は共有してるし、
高度なJIT持っていれば>>283の一行目の通り。
ただシビアな要求のあるコード書いてる人は、
JITあってもプロファイル取ってあれこれやってる。
https://github.com/felixge/faster-than-c

285 名前:デフォルトの名無しさん mailto:sage [2013/08/30(金) NY:AN:NY.AN ]
標準準拠でさ、関数コンテキストでDontDelete属性付けずに変数定義するの方法てないよな?
esじゃなくてもActivationオブジェクトとる方法ないけどさ。

286 名前:デフォルトの名無しさん [2013/09/02(月) 19:24:58.91 ]
JavaScriptに出来ないことなんてあるわけ無いだろ

eval('var abc = 123')
delete abc //true

287 名前:デフォルトの名無しさん [2013/09/02(月) 20:20:57.78 ]
このスレって思い出話しかすること無い寂れた言語スレに比べて
いくらでも話題にできることあるはずなのに過疎りすぎじゃね

288 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/09/03(火) 06:57:07.17 ]
プロパティの削除は無くてはならないけど
トップレベル変数を削除する必要のある機械なんて皆無でしょ

所によって宣言されていたり宣言が解除されていたり出来るのは変

290 名前:デフォルトの名無しさん mailto:sage [2013/09/03(火) 17:44:39.86 ]
>>289
静的型付け言語とかそういうのから見ればプロパティの削除どころか追加さえも変って事になるんじゃね?



291 名前:デフォルトの名無しさん mailto:sage [2013/09/03(火) 20:46:39.95 ]
プロパティの削除は機能として無くてはならないけど
関数スコープの変数宣言の解除とか使い道がないように思うんだけど
何百行もあるような関数でならまだあるのかな

292 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 00:38:38.43 ]
>>289
>トップレベル変数を削除する必要のある機械なんて皆無でしょ
トップレベルの変数を削除なんて誰も言ってないだろ?strict modeで未修飾のdeleteならコンテキスト関係ないぞ。
どれのこと言ってんのか分からんから次の

>所によって宣言されていたり宣言が解除されていたり出来るのは変
が曖昧だが・・・プロパティが追加されたり削除されたりするのは動的言語では当たり前の仕組み。
当たり前である以上、議論する意味はなくない?ダックタイピングが型理論的にどういう分類になるか議論するのと同じことだろ。

293 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 00:42:34.78 ]
変数はプロパティとは違うだろ
そりゃvar xはJSの内部概念的には__scope__.xだけど

294 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 01:55:53.59 ]
概念じゃなくて言語仕様でVOのプロパティなんだけど。何がVOになるかは定義されてないけどVOは定義されてる。

295 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 02:32:00.91 ]
うん、でもプロパティとは違うから。

296 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 02:34:45.15 ]
うん、でもプロパティとは違うから。

297 名前:デフォルトの名無しさん [2013/09/04(水) 03:10:06.27 ]
うん、でもプロパティとは違うからw

298 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 03:54:10.85 ]
>>289>>293>>295
 >>290
想定してるパラダイムが一致してないのに、
「俺の想定するECMAScriptのパラダイムではこうだ!」
って主張しても何の意味も無いだろ。

「ECMAScriptの仕様上、
過去どう定義されていて、
過去どう解釈されていて、
現在どう定義されていて、
現在どう解釈されるべきで、
将来どう定義されるべきで、
将来どう解釈されるべきなのか」

299 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 12:16:53.34 ]
あーこりゃ仕様に目が眩んで現実が見えてない

300 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) NY:AN:NY.AN ]
>>229
ambroselittle.com/2013/08/31/typescript-to-be-or-not-to-be/
adambard.com/blog/top-github-languages-for-2013-so-far/
> 36 TypeScript 972

https://github.com/trending?l=typescript

なんとなく確認してみたけど
qupzilla と qBittorrent は typescript だったんだ

…すごくいい加減そうな集計されてそう



301 名前:290,298 mailto:sage [2013/09/04(水) 14:25:34.29 ]
>>299
いや>>289>>293>>295の人らも俺々仕様に目が眩んで現実が見えてないって話だよ。
「〜と定義・解釈されるべき」だとしても「現状〜と定義されている」事にはならんだろ。
コレで話が通じてなかったらどうにもならん。

302 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 14:35:03.70 ]
お前が言うな

303 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 18:17:22.98 ]
近頃のエンジンは再帰を末尾最適化してくれるらしいんだけど
その最適化がどういうコードならできて、どういうコードなら妨害してしまうのか知りたい

自分たまにボードゲーム作るんだけど、
そっちではスタックオーバーフロー見なくなったけど
ちょっとしたフィボナッチで起こったりするし
まあコードの書き方が悪いんだろうけど

304 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 22:55:04.77 ]
ES6サポート遅いな……
privateとか今年中に実装されんのかな

306 名前:デフォルトの名無しさん mailto:sage [2013/09/05(木) 00:37:56.08 ]
再来月ラストコールなのに
中身の無い項目のあるドラフトとか、議論内容見てると非常に不安になってくる

307 名前:デフォルトの名無しさん mailto:sage [2013/09/05(木) 09:28:25.95 ]
5.1thの和訳ってないんですか?

308 名前:デフォルトの名無しさん mailto:sage [2013/09/05(木) 12:48:00.89 ]
変に英文キーワードの混じった和訳のほうが読みにくいと思うよ

309 名前:デフォルトの名無しさん mailto:sage [2013/09/05(木) 15:35:31.71 ]
>>307
一応ある(もちろん非公式・未保証)
忍者規制でURL直書きできないんで↓で:
www.webzoit.net/hp/it/internet/homepage/script/ecmascript/ecma262_51/

310 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 01:32:40.32 ]
一日ぶりに来て伸びてるかと思えばなんだこれ。
>>290=298=301
あんた誰だよ。

ついでに言うとVOは名前だけEnvironment Record Specification Typesに変わってるぞ.

>>305
privateてdraft落ちてなかったっけ?
symbolがユーザー定義できなくなっただろ。



311 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 01:58:18.29 ]
間違いなく採用はされる、Symbolとprivateをどうまとめるかの議論がもっと必要そうなだけ。
でもES7にしようとは誰も思ってないと思う。
HTMLのように1年毎くらいでES6.1、6.2と出る可能性がかなり高いかもしれない。

312 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 03:31:25.49 ]
>>310
ユーザー定義は出来るのでは
wiki.ecmascript.org/doku.php?id=harmony:modules_standard&amp;s=symbol
wiki.ecmascript.org/doku.php?id=harmony:private_name_objects

313 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 07:05:18.48 ]
>>312
それharmony、古い。draftが出てる。
Symbolまわりは今グドグドやっててworking draftに入ったり外れたりしてる。

314 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 07:53:24.88 ]
>>313だが知らんと分かりづらいな。
harmonyで提案された中から選別されてdraftになる。それが↓のCurrent Working Draftのpdfの仕様書。
ttp://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts

この仕様も最新の議論が反映されてるわけじゃない。wikiは古いのも新しいのも関係なくページを残してるからそれが仕様になるとは限らんよ。
んで、だいたいharmonyの中身はes6に、漏れたのとstrawmanがes7に行く形。value objectみたいに。

基本es6はjavascript1.8.5の改良、es7はそれより上だからes7が出て初めて未来と遭遇するわけ。

315 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 09:26:15.18 ]
>>314
いや、今のドラフトに乗ってないことなんて百も承知なんだけど。
そうは言ってもV8には既に仮実装されてるし、早期に採用される可能性が高い。
むしろされない理由がない。話し合いが足らないだけで採用する方向では合意取れてるんだし。
この頃は機能も増えて各進行度もバラバラドラフトだけじゃ追い切れないよ。
ちゃんとコミュニティの情勢も読まなきゃ。

316 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 10:33:10.17 ]
ES.nextという言葉が使われだしてからもう実質Living Standardになってる
合意が取れてもドラフトに載せられるまでまとめるのが間に合わなくなりつつあるしあてにはできない

317 名前:デフォルトの名無しさん [2013/09/06(金) 13:06:46.25 ]
「あーこりゃ仕様に目が眩んで現実が見えてない」ってやつか

318 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 20:12:36.57 ]
Number.MAX_SAFE_INTEGERとか
2^53±1のどの値にするかやプロパティ名になにが適切かが
決まるだけでもだいぶかかったしな

319 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 21:36:06.53 ]
昨今一番もてはやされてるかもしれない言語が
十年ぶりに大きく変わろうとしているのに
この過疎りようはどうにかならんのかねぇ

320 名前:デフォルトの名無しさん [2013/09/06(金) 22:43:40.90 ]
ここ本スレじゃねぇし。
誰もECMAScriptなんて呼ばねぇよ。



321 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 23:06:35.21 ]
ここよりも盛り上がってる本スレが存在するとな!?
是非教えてもらいたいw

322 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 00:22:32.33 ]
JavaScriptで検索ぐらいしようよw

323 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 07:53:44.82 ]
gaslight.co/blog/does-coffeescript-have-a-future

3年くらい遅くねぇか…

324 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 13:04:21.73 ]
今まではその役割も兼ねてきたがこれからはTypeScriptって言われてる

325 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 14:41:13.54 ]
JavaScriptで検索してもここよりもスレNo少なくて最近の書き込み数も劣ってるスレしか見つからんな

326 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 18:47:43.00 ]
2ch全体ならWeb制作版の質問スレが一番賑わってるかね

327 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 19:00:27.22 ]
それを言うのなら、
ウェブプログラム版じゃね?
なんでプログラム板と分かれてるのか知らないけど

328 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 19:01:26.63 ]
いやWeb制作版だよ。

桁違いすぎるw

+ JavaScript の質問用スレッド vol.108 +
toro.2ch.net/test/read.cgi/hp/1378462421/

329 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 20:47:44.93 ]
屁理屈乙
そこ質問スレだから
俺も仕方ないから底で議論したりしてるけど
本来NGだから

330 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 23:24:39.01 ]
[JavaScript] スクリプト言語34 [Perl,Python,PHP]
toro.2ch.net/test/read.cgi/tech/1367771981/

これじゃないの?



331 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 00:21:12.67 ]
そこは元JSerの隔離スレの残り
JSerとの衝突で一時スレが喧嘩分裂した

今は収まってて本スレはこっち
【PHP,Python】スクリプト,バトルロワイヤル37【Perl,Ruby,JS】
toro.2ch.net/test/read.cgi/tech/1376836047/

332 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 01:05:07.84 ]
今月のミーティングでは細かくはあるけど非常によく使う部分に関わる重要な部分が決まるみたいだな

333 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 01:54:36.00 ]
ジェネレーター周りはこれで変更無さそう
domenic.me/2013/09/06/es6-iterators-generators-and-iterables/

334 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 13:52:57.70 ]
ES5の非常に秀逸な記事を見つけた。
このレベルは中々無い。
constellation.hatenablog.com/entry/20101205/1291564928

335 名前:デフォルトの名無しさん mailto:sage [2013/09/11(水) 00:05:34.67 ]
多分unique symbols/private namesはES6に間に合って
どちらもユーザー定義出来ると思う

336 名前:デフォルトの名無しさん mailto:sage [2013/09/14(土) 02:23:58.45 ]
>>334
記述子使ったことない奴向けだな

337 名前:デフォルトの名無しさん mailto:sage [2013/09/16(月) 23:03:46.05 ]
ES6のオブジェクトリテラルは面白いな
wiki.ecmascript.org/doku.php?id=harmony:object_literals

338 名前:デフォルトの名無しさん mailto:sage [2013/09/17(火) 04:47:04.56 ]
<| とか妙な記号の並び使うのはどうなのよ

339 名前:デフォルトの名無しさん [2013/09/17(火) 12:09:02.13 ]
obj = { a: 1 }
obj.= { b: 2 }
obj //{ a: 1, b: 2 }

が欲しい

340 名前:デフォルトの名無しさん mailto:sage [2013/09/17(火) 14:46:47.01 ]
演算子も1つじゃ足りなかったら、オーバーライドしなくても2つ3つと組み合わせればいくらでも作れるのね
そう言えば細菌は主にsortで使う、-1,0,1を返す<=>演算子が提案されてたね



341 名前:デフォルトの名無しさん mailto:sage [2013/09/17(火) 14:54:12.59 ]
んなもん大昔からPerlにあるわけだが

342 名前:デフォルトの名無しさん mailto:sage [2013/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] ]

wiki.ecmascript.org/doku.php?id=harmony:array_comprehensions

343 名前:デフォルトの名無しさん mailto:sage [2013/09/18(水) 01:48:14.19 ]
for ofはfor each inでよかったのにって思ってるのは俺だけか?
E4Xから取り込んでソースコード互換を残して欲しかった。

344 名前:デフォルトの名無しさん mailto:sage [2013/09/18(水) 02:20:20.06 ]
for-each-inはfor-inと同様にプロトイプも辿る
配列にも安全に使えないぽっと出のポンコツ内部イテレータもどきだったでしょ

for-ofは正真正銘の外部イテレータでES6の中核機能
月とすっぽんくらい、ほんとに全然違う

JSは汎用的な言語だからE4XはES標準に組み込まれるまではいかないだろう

345 名前:デフォルトの名無しさん mailto:sage [2013/09/18(水) 02:38:35.03 ]
E4Xはこれで我慢して
wiki.ecmascript.org/doku.php?id=harmony:quasis

document.body.appendChild(dom`<span>${message}</span>`)
とか可能だと思う

346 名前:デフォルトの名無しさん [2013/09/18(水) 06:52:13.60 ]
これ楽しみにしてたのに否決されたらショックだ……
https://twitter.com/domenic/status/380002233024516096

347 名前:デフォルトの名無しさん [2013/09/18(水) 21:46:30.03 ]
https://www.youtube.com/watch?v=mmppwhkJz_A

348 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 00:00:30.00 ]
www.youtube.com/watch?v=obwMsk5JzxQ

349 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 00:07:13.85 ]
www.youtube.com/watch?v=PJ1hUr7YJ-8

350 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 02:15:58.26 ]
>>344
いやいや、シンタックスをfor each inにしてセマンティックスをfor ofにしてくれって意味。



351 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 02:40:51.35 ]
動作が違うんだからソース互換守れないじゃん
何いってんのよ

352 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 03:36:17.94 ]
<お知らせ>
このスレの住民が引っ越してきます
toro.2ch.net/test/read.cgi/tech/1330477388

353 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 14:12:57.57 ]
DOMWorkerのTransferable objectsの仕組みをJSコアでサポートすることにより、
Workerの自由度と、将来のWorkerLikeな機能の可能性が格段に増す。
wiki.ecmascript.org/doku.php?id=strawman:structured_clone

これと同系統な仕様で、ES7期待の星のParallels
wiki.ecmascript.org/doku.php?id=strawman:data_parallelism

354 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 16:46:08.91 ]
ES6だと念願(?)だった配列のクローンがこんな簡単にできるのな。
a1 = [1,2,3,2,1]
a2 = [...a1] //[1,2,3,2,1]

でも現状のドラフトの仕様だとこれは配列にしか適応できない?
ここでも挙がってるがFirefoxの実装のようにいてレートしてくれる方がいいのにな。
esdiscuss.org/topic/set-to-array-conversions
そしたらこんな使い方もできるのに。

a3 = [...new Set(a1)] //[1,2,3] 重複排除

m1 = new Map()
m2 = new Map([...m1]) //Mapのクローン

355 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 17:54:56.39 ]
このスレ過疎り気味だけど
お陰で最初の方を見るとES4の分析がいろいろされてて面白いな
ES6は時間を書けるだけのものになったのか、
また行き過ぎてないかを考えるのにちょうどいい

356 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 21:08:28.43 ]
>>354
> ES6だと念願(?)だった配列のクローンがこんな簡単にできるのな。

え? 適当なライブラリの関数使えば、
今でも簡単にできるんじゃね?

357 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 21:30:18.63 ]
たかが配列のコピーに何でライブラリ入れなきゃいけないんだってことだろjk

358 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 21:34:46.29 ]
配列のコピーだけでプログラムが終わることなんて無いだろ?
ライブラリを入れるだけで、配列のコピー以外も含めて圧倒的に生産性が上がる。
目的と手段を履き違えてないか?

359 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 21:53:39.71 ]
cloneするのに一番わかり易い文法って知ってるか?

b = clone(a)

これだよ?



361 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 22:02:21.42 ]
関数オーバーライドが出来ないんだからそれはない

362 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 22:04:43.18 ]
>>359より短く書けたw
更に古いブラウザにまで対応。
最強じゃね?

var _ = require('lodash');
var arr2 = _.clone(arr1);

363 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 22:14:44.01 ]
お前がそう思うんならそうなんだろう、お前の中ではな

364 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 22:19:46.43 ]
JavaScriptスレから移住してきた人にはスマンが
ここは標準仕様をメインで語るスレなのよ

ライブラリの話禁止というわけではないが
そういう話の流れじゃそもそもないのよな

365 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 22:21:49.57 ]
Array.isArrayがないと別コンテキストのオブジェクトが本当にArrayか見分けるのは難しいんじゃないか?

366 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 22:28:43.54 ]
>>359よりこっちの方が良かった
Array.clone = x => Array.isArray(x) ? x.map(Array.clone) : x;

367 名前:デフォルトの名無しさん mailto:sage [2013/09/20(金) 00:41:52.37 ]
https://speakerdeck.com/dherman/discussion-with-tc39-about-the-semantics-of-symbols

368 名前:デフォルトの名無しさん mailto:sage [2013/09/20(金) 10:58:34.35 ]
stackoverflow.com/questions/14949069/lodash-undefined-in-ie?rq=1

なんか悪いんだろうなぁ…とは思うんだけど
何が悪いんだろうなぁまではよくわからん
そういうのが多すぎる…

369 名前:デフォルトの名無しさん mailto:sage [2013/09/20(金) 12:16:50.61 ]
TC39勢力

30% コミュニティの流れに関わる
Google

15% 基礎構文や仕様の流れに関わる
Mozilla

35% 仕様の具体的な部分に関わる
Microsoft, Apple, Intel, jQuery

20% 専門的な仕様の詳細に関わる
その他凄い人、偉い人

370 名前:デフォルトの名無しさん mailto:sage [2013/09/20(金) 14:47:21.10 ]
TC39 3大勢力

1/3 【ハンドル・ブレーキ】
Webを牛耳る者として、三人称視点で情報や意見を提供する、情報・管理係
Google

1/3 【エンジン・アクセル】
早期実装者及び専門家として、一人称視点で仕様を策定する、規格・運用係
Mozilla, その他凄い人、偉い人

1/3 【モーター・ギア】
企業団体として、ニ人称視点であれこれ注文する、文句・要求係
Microsoft, Apple, Intel, jQuery



371 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 01:40:27.26 ]
DOM Promise
wiki.ecmascript.org/doku.php?id=strawman:promises

が思ったより早くES標準になる?
https://twitter.com/annevk/status/380723129514876929
https://twitter.com/annevk/status/380756290147868672

DOMだけで使えるのはもったいないとは思うけど
今流行ってるからと言って、安々と仕様に入れていいものなのかね

こういうのを入れると、ライブラリや各種APIもこれに合わせて書かれるようになるだろうし
使う側も積極的にこのスタイル採用するだろうから、責任凄くあると思う

Node.jsの雰囲気を丸ごと変えてしまう力もあるかも知れないし、
FirefoxOSのアプリとか、これからの出るものに凄く影響を与えるに違いない

372 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 02:09:01.60 ]
>>371
Promiseならそれとほぼ同じ物が
jQuery標準でついてるし、
nodeでも使える。

373 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 02:24:09.24 ]
ん?だから何?
標準と標準じゃない物同列に語られてももの凄く困惑するんだけど…

374 名前:ES6 Tips mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 02:53:35.32 ]
>>373
JavaScriptの世界では、標準ではないものも
広く使わわれている。

つまり、Promise が普通の世界に
俺達は生きているわけ。

そこに標準でPromise がきても
劇的な変化はないってこと。

> Node.jsの雰囲気を丸ごと変えてしまう力もあるかも知れないし、
> FirefoxOSのアプリとか、これからの出るものに凄く影響を与えるに違いない

標準じゃないものを使っているごく普通の人たちは
標準を待っているお前よりも未来に生きている。
劇的に変わるのは、標準を待っている人たちだけ。

376 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 03:11:51.67 ]
>>375
標準で無いもの(拡張)は利用する側が自分で選択できる。
標準は全ての実装が準拠しようとするため選択できない。

一つの拡張が標準になると競合する拡張が潰れたりもする。
拡張を闇雲に取り込めば標準自体が肥大化する問題も起きる。

標準に取り入れるってのは全ての環境で半強制的にそれを導入させるに等しい。
先進的であればそれで良いのであれば安定版も標準化も必要ない。
お前は標準の持つ責任を安易に考えすぎ。

…と横からレスしておく。

377 名前:ES6 Tips mailto:sage [2013/09/21(土) 03:14:07.70 ]
その根拠のない理屈には納得出来ないな
Ajaxだって、Canvasだって、標準になる前からあったが活躍しだしたのは標準化されてから
まるで全てのPromiseとAPIが何か標準に準拠して完全に互換性があるかの様に言うが、現実はそうじゃない
そもそもDOMPromiseもESで提案されてるPromiseも、今尚仕様変更が続いてるもの
そんな中幾らかの形に切り出して、バージョンの付いた標準仕様に入れる、JS標準にするということは大きな変革
準拠先も安定度も不確かな、モジュールやプラグインに頼って下さいという段階とは比べ物にならない

378 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 03:20:55.33 ]
>>376
話しそれ過ぎ。

> Node.jsの雰囲気を丸ごと変えてしまう力もあるかも知れないし、
> FirefoxOSのアプリとか、これからの出るものに凄く影響を与えるに違いない

まずね。標準の世界の話だけをするというのなら、
このような、実際の開発の世界の話をしなければいいのよ。

実際の開発の世界の話なんかしなけりゃいいのに、
わざわざヤツのほうが、勝手に実際の開発の領分に侵入してきた。
だから叩き返してやったまで。

Node.jsとかFirefoxOSアプリとか、何も変わりはしない。

実際の開発では、ここらへんの問題はライブラリによって
あらかた解決してしまってるの。

だから、今更標準に入ったって、何も変わりはしないの。
標準に入ったものをすぐ使えるわけでもないしね。

379 名前:ES6 Tips mailto:sage [2013/09/21(土) 03:31:49.22 ]
どうしても使いたい奴がプラグイン導入して個人的に使うのと、
大々的に標準に入って、さあ皆さん使ってくださいとなるのでは次元が違うぞ。

とくにJSってもうWebだけのものじゃなりつつあるし、
非同期コールバック式を緩和するためには非常に有効だけど、
本当に言語仕様に入れてメリットあるのかねという話だぞ。

お前さんの言うとおり、プラグインで十分問題が解決するんなら
標準に入れて必要以上に影響を及ぼしたり、言語の肥大化を招くよりはいいだろうってことだ。
お前さんは一体何と戦ってるんだい?

380 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 03:33:04.21 ]
>>379
いや、お前が何と戦っているのか知りたいんだが?



381 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 03:33:31.76 ]
プラグインがあるから標準いらないと言いたいのなら、意見の差はないだろう

382 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 03:35:05.06 ]
>>380
こっちはお前さんがよく分からんツッコミしてくるからその度に冷静に返してるだけだが?

383 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 03:37:53.11 ]
> Node.jsの雰囲気を丸ごと変えてしまう力もあるかも知れないし、
> FirefoxOSのアプリとか、これからの出るものに凄く影響を与えるに違いない

俺は最初から、これはありえないと言ってるだけですが?
Node.jsやFirefoxOSのアプリなどの実際の開発知らないでしょ?

384 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 03:41:04.53 ]
そこら辺は個人の感覚だろうからそこまでは否定しないよ。

ちなみに両方とも作ったことがあるけど、それは例えから。

これから5年も10年も仕様に入れるべきものなのかってこと。

385 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 03:42:14.06 ]
>>384
根拠は?
お前の妄想?

386 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 03:51:40.78 ]
ホント安易に考えてんなぁコイツ

387 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 03:52:29.34 ]
根拠というか懸念した理由は上でいくつか挙がってるけど、
もちろん自分が下手するとそうなりそうで怖いなと思っただけで、
標準に入ることで絶対に悪くなるとは言わない。

しかし、今更ES標準になったところで影響力は小さいという論には、今のところ納得出来ないな。
あると考えるのが基本なんだから、無いと思うのならもっと理論的に言って欲しい。

388 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 03:58:25.22 ]
> しかし、今更ES標準になったところで影響力は小さいという論には、今のところ納得出来ないな。

歴史が証明している。

ECMAScript 5が標準になってどんな影響があったか?
明らかに小さいだろう?

389 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 04:00:26.96 ]
あ、非JSerはお帰りください

390 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 04:03:17.56 ]
理論的な話ねぇ?

ES標準になっても、すぐに使えるわけではない。
使わないから影響を与えられない。

ES非標準で、ライブラリとして実装できるものは
すでに実装され使われている。

十分理論的ですね。



391 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 04:03:22.79 ]
お前らが最近プログラム系の板によく現れる荒らしに構ってる間にも
仕様はどんどん勧告へと近づいてきてる
https://twitter.com/BoazSender/status/381129573804417024/

392 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 04:04:42.74 ]
うん、、、もういいよ。
お前さんに分かってもらうのは諦めた。

393 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 04:43:03.51 ]
>>390が日本語読めない子なのは十分わかった

けど俺も標準に入れてもいいとは思うぞ
ただしC++11のoptional featureみたいな感じがベストじゃないか。すべての標準処理系がDOMを備えるべきだとは思えんし

394 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 04:52:47.89 ]
utilモジュールに入れてimportで取ってくる形ならいいけど、
グローバルにむき出しなら嫌だな

395 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 05:02:38.84 ]
ポイントは前倒ししてまでstrawmanをES6に入れるのかってとこじゃね?
入れるのなら今回のミーティングがラストチャンスだけど
ギリギリで間に合わせた感もあるしな
esdiscuss.org/topic/promises-final-steps

ライブラリと違って、JSの規格に一度入ると後方互換性を壊す変更は当然NGになるしね
もうちょっとWebでの使われ方見てから練っても十分な気がする

やっぱりいろいろとES6.1が必要なんじゃないかな
というかこの冬のラストコールに間に合うの?

396 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 05:46:24.50 ]
>>371,395
PromiseLoveなAnne van Kesterenっていう人が早く入れようとしてるように見える

397 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 21:13:19.03 ]
tc39wiki.calculist.org/es6/
>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
pointedears.de/scripts/test/es-matrix/

各実装のマトリックス表らしい

mozilla.6506.n7.nabble.com/Promises-final-steps-td290303.html
スレを眺めてるとES7とか文字が並んでるし議論してる人らは
ES6のことを念頭に置いて話てる訳ではないんでないの

398 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 23:48:12.67 ]
ミーティングに挙げる仕様を詰めてるだけでES6には入れようとしてないよ
今回はES7についても話し合われたからね

399 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 23:59:44.55 ]
読むとDOM PromiseのJS実装版じゃなくて、
もっと低レベルな感覚な実装なのね、いいかも。

でもこれ入れるんなら、
イベントという概念をもっとJSから扱えやすくなって欲しいな
そっちの方向の進化はかなり良さそう

400 名前:デフォルトの名無しさん mailto:sage [2013/09/22(日) 00:16:25.61 ]
イベントはあまりに重要で各環境の事情を抱えた概念だから難しそう
イベントキューの操作くらいは一般化出来ないかな?



401 名前:デフォルトの名無しさん mailto:sage [2013/09/23(月) 13:42:34.69 ]
今話題になってるこのコードとても面白いね
仕様の奥深くまで分かってないとできないことだ

Array.apply(null, { length: 5 }).map(Number.call, Number);
// [0, 1, 2, 3, 4]

402 名前:デフォルトの名無しさん [2013/09/25(水) 01:26:27.21 ]
https://github.com/rwaldron/tc39-notes/tree/master/es6/2013-09
なかなか興味深い……
ArrowFunctionが残念だなあ
Symbol周りは期待通りになってよかった
Moduleはもう少し精査が必要だね
ES7についても見えてきた

403 名前:デフォルトの名無しさん mailto:sage [2013/09/27(金) 01:13:04.58 ]
ECMAScript6に単純に型指定だけ出来て、静的型チェックしてくれれば最強なのに…
型指定以外は完全に一緒で良いんで、そういうプリプロセッサを誰か作ってくれないかな。

404 名前:デフォルトの名無しさん mailto:sage [2013/09/27(金) 01:54:42.52 ]
あー、7のguardsがそれにあたるのか。7がリリースされるのっていつになるやら…

405 名前:デフォルトの名無しさん [2013/09/28(土) 07:44:14.08 ]
wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#september_27_2013_draft_rev_19

406 名前:デフォルトの名無しさん mailto:sage [2013/10/04(金) 12:32:46.81 ]
ES6ファミリーにPromiseが入ります。
おめでとう・・・・・・・・! おめでとう・・・・・・・・!

407 名前:デフォルトの名無しさん [2013/10/05(土) 18:32:39.18 ]
ES7のdata_parallelismがFirefox 27 (Nightly) でデフォルトで有効になったようだ。
jsperf.com/array-intersection-filter-vs-for-loop/2
wiki.ecmascript.org/doku.php?id=strawman:data_parallelism

408 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/10/13(日) 16:05:28.76 ]
ES6概要
ただしこれでも仕様の半分程度
https://speakerdeck.com/simonenko/ecmascript-6-budushchieie-javascript

410 名前:デフォルトの名無しさん mailto:sage [2013/10/16(水) 01:04:25.93 ]
asm.js、32bit浮動小数点演算、SIMD演算の現状と可能性について
kripken.github.io/mloc_emscripten_talk/sloop.html



411 名前:デフォルトの名無しさん [2013/10/19(土) 19:00:16.23 ]
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ParallelArray

412 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/10/24(木) 19:47:18.44 ]
は? ISO規格に追随するのやめちゃったの?
C++11も翻訳しないみたいだし、JISCは馬鹿なの?死ぬの?

414 名前:デフォルトの名無しさん mailto:sage [2013/10/24(木) 20:16:16.20 ]
本文は翻訳してないあのスタイルじゃあ、あっても無いのとたいして変わりなかったしなw

415 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 01:44:56.49 ]
つーか規格の和訳って必要ないよなぁ
どうせ原文にあたらなきゃならくなるんだから

416 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 02:50:16.91 ]
JISにすることで著作権フリーになるんだよ(適当)

417 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 10:55:39.28 ]
昔は日立とか東芝とか三菱とかが
主要言語のマイコンパイラ作ってたから、
社内技術者のために日本語訳が欲しいという要求があったけど、
今は業界からそういう要望もないのでしょう。
エコシステムとか言うんでしょ。

418 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 15:38:22.47 ]
>>416
なるなら大歓迎だわ。
ぜんぜんなんねーんだよ。

419 名前:デフォルトの名無しさん [2013/10/25(金) 16:29:14.50 ]
エコシステム->生態系

420 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 16:39:32.81 ]
>>418
実質著作権フリーだぞ。規格表さえ手に入れればあとはネットに上げようと何しようと自由。
ttp://urheberrecht.cocolog-nifty.com/blog/2009/07/18jis-2372.html
ttp://urheberrecht.cocolog-nifty.com/blog/2010/06/45jis-be6d.html
ただ、判例としてあるのは類似のドイツのものだけで、日本での判例はまだないけどね



421 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 16:56:58.44 ]
JISの著作権は原案作成者とそれを規格化の過程において修正する工業調査会にあり、
公衆送信権は工業調査会が独占している。

422 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 17:02:49.30 ]
>>416
原文嫁
著作権は放棄しないって明記されてるぞ

423 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 17:07:45.39 ]
著作権は内国法優先だから、日本で規格の著作者やISOがどんなに著作権を主張しようと
著作権法の第13条第2号がある限り著作権が認められるはずがない……ってのが>>420のリンク先の主張でしょ
自分も法律を字義的に解釈すればそれであってると思うけど、これ以上は著作権スレに行ってやったほうがいいね

424 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 17:31:57.94 ]
規格書は告示、訓令、通達その他これらに類するものじゃないから。
「XXXという規格を制定した」これは告示、XXXの規格書本体は告示じゃない。

425 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 18:01:00.17 ]
>>424
だからその屁理屈はドイツじゃ通らなかったんだっつーの

426 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 18:03:42.08 ]
ドイツだけじゃない。アメリカでも国の策定する規格に著作権は認められなかった。

スレチだけどな!

427 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 18:59:00.70 ]
>>426
>>420は公衆送信権に違反して他人の著作物を公開したいDQNのタワゴトじゃん。

ドイツでは法文に従って判断すると著作権が認められないという判決が出たから著作権法改訂されたと、当のDQNのブログにある。

428 名前:デフォルトの名無しさん [2013/10/25(金) 19:13:55.99 ]
天気の配信とか、役人の天下り先確保のために法令を整備してたでしょ。
それと同じなんじゃない?

429 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 19:19:17.04 ]
分かりやすく産業にすると
・ドイツやアメリカでは国家規格に著作権は認められなかった(現在は法を改正済)
・日本は現在ドイツやアメリカの法改正前と同じ状況
・改正しないとJISに著作権は認められない
・JISスレか著作権スレでやれ

430 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 19:39:41.50 ]
×・改正しないとJISに著作権は認められない
○・改正しないとJISに著作権は認められないとDQNは考えている、行政はそのように考えていない、司法が行政の不利になる判決を出すことは稀



431 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 20:17:49.62 ]
まあ、日本での前例もないみたいだし、これ以上水かけ論やりたいなら余所でね

432 名前:デフォルトの名無しさん [2013/10/26(土) 10:38:18.25 ]
仕様の話をしようぜ

433 名前:デフォルトの名無しさん mailto:sage [2013/10/27(日) 20:35:34.71 ]
ECMAScript Support Matrix
pointedears.de/scripts/test/es-matrix/

合間合間に実装の話もですね…

434 名前:デフォルトの名無しさん [2013/10/28(月) 09:40:22.02 ]
話題出していっていいのよ

435 名前:デフォルトの名無しさん mailto:sage [2013/10/30(水) 21:43:23.98 ]
ES7の機能で一番早く使えるようになるのはSIMDかもな
SMが来年中に実装しそうな勢いだし、何と言ってもV8が興味持ってる
影響範囲がほぼ無いしね

436 名前:デフォルトの名無しさん [2013/10/31(木) 01:05:58.42 ]
double以外の数値型の演算をどうするかの話が詰まっていきそうだな
esdiscuss.org/topic/proposal-for-efficient-64-bit-arithmetic-without-value-objects
この様子だとES7は3年後くらいかもな

437 名前:デフォルトの名無しさん mailto:sage [2013/10/31(木) 01:11:49.51 ]
今はもういつES7か?ってのに
こだわる必要はない気がする。
なぜなら順次実装されて言ってるから。
完成する前に使えるようになってる。

438 名前:デフォルトの名無しさん [2013/10/31(木) 01:35:06.64 ]
とは言え勧告前のものはいくら実装されていても
いつケチが付いて仕様が変わるとも知れないからな
esdiscuss.org/topic/math-sign-vs-0

439 名前:デフォルトの名無しさん mailto:sage [2013/11/06(水) 10:03:34.97 ]
html5experts.jp/cssradar/3176/
ここのServiceWorkerとAnimation-Proxy見ると、
ES7のdata parallelismとかが思い出されて
JSerがマルチスレッド処理を当たり前に書く時代もそう遠くないんだろうね

440 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 04:10:55.98 ]
>>439
データ並列からマルチスレッドには飛躍があるけどな。



441 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 12:52:20.30 ]
は?
マルチスレッド⊃並列だろうに
どこに飛躍が???

442 名前:デフォルトの名無しさん [2013/11/11(月) 14:42:38.63 ]
ぴょーん!

443 名前:デフォルトの名無しさん mailto:sage [2013/11/13(水) 23:20:03.54 ]
マルチスレッドでないデータ並列がSIMD

444 名前:デフォルトの名無しさん mailto:sage [2013/11/14(木) 10:57:15.41 ]
SIMDはそもそも並列とか意識できなくね

445 名前:デフォルトの名無しさん mailto:sage [2013/11/14(木) 19:08:10.11 ]
君はそうなのだろう。

446 名前:デフォルトの名無しさん mailto:sage [2013/11/14(木) 19:23:39.42 ]
SIMDAPIを使っても必ずSIMD命令が使われるわけじゃないしあってると思うよ

447 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/11/18(月) 21:00:01.72 ]
いよいよ始まるというのにこの過疎りようは悲しい……

449 名前:デフォルトの名無しさん [2013/11/19(火) 19:24:22.27 ]
今が一番盛り上がる時期なのにな

450 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/11/20(水) 01:28:33.20 ]
もしかしてプロキシと組み合わせればなんとかなる可能性が微レ存……?

function makeSafeScope(obj){
return new Proxy(obj, {
......
})
}

with(makeSafeScope(obj)) {

}

452 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/11/20(水) 03:22:46.52 ]
with(obj) {
a = 1
}
ってした時にaがobj.aなのかそうでないのか分かりにくいってことだよ

454 名前:デフォルトの名無しさん mailto:sage [2013/11/20(水) 17:17:17.01 ]
そう言えば今までブロック文中の関数宣言は非推奨だったけど
ES6からはブロックスコープになったんだよな

(function (){
"use strict"
if(1){
function a() {}
}
return typeof a
})() //"undefined"

455 名前:デフォルトの名無しさん mailto:sage [2013/11/21(木) 22:19:07.88 ]
>>401
>Array.apply(null, { length: 5 }).map(Number.call, Number);

配列内包ってもう固まったんだっけ?

456 名前:デフォルトの名無しさん [2013/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 名前:デフォルトの名無しさん [2013/11/22(金) 01:34:53.19 ]
ES6への機能追加が21日で完了しました。
つまり、まもなくラストコールです。
今後は約1年間、実装からのフィードバックを含めた、
バグフィックスや小規模な改定のみが行われ、勧告となります。

458 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 02:38:13.10 ]
やっと、ラストコールか。ちょっと停滞気味のRhinoフォークしてくる。

459 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 03:00:22.47 ]
え、Rhinoって使ってる人いるの?

460 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 04:24:06.17 ]
ググると結構あるぞ。むしろjavaだと他に何がある?



461 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 08:45:11.30 ]
つNashorn

462 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 16:57:20.57 ]
余計な記法増やして読みにくくするのやめてほしいわ
このスレ見ても結局
黒魔術が増えるだけなんだなES6って

463 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 09:34:48.99 ]
流れについていけない守旧派の極みだな
別にいいんだよ、IE6が理解できる範囲のJavascriptしか頭に入りませんってなら

464 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 04:26:34.11 ]
ES6は必要な進化だろうけど、そのうち黒魔術化するでしょ
LLJS/asm.js最適化しながら手書きできる人間なんて僅かしかいなくてコンパイラにjavascript吐かせる時代になるかもしれない
アセンブラやCやってた連中が復活するかもしれないけど

465 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 10:59:57.81 ]
Dartのことですね

466 名前:デフォルトの名無しさん mailto:sage [2013/12/03(火) 12:22:46.92 ]
ES6が糞過ぎて猫様もお怒り

Hearing about ES6 modules - Node.js Reactions
nodejsreactions.tumblr.com/post/64587440442/hearing-about-es6-modules

467 名前:デフォルトの名無しさん mailto:sage [2013/12/03(火) 22:17:04.57 ]
猫かわいい

468 名前:デフォルトの名無しさん mailto:sage [2013/12/12(木) 02:15:57.94 ]
en.wikipedia.org/wiki/ECMAScript#Conformance_tests
ここの結果見るとIEが一番準拠しててFirefoxの準拠度がダントツ悪い
逆だと思ってたから意外だな
Firefoxは仕様が決まる前から先行実装してるっていうのがあるから
しょうがない面もあるかも

469 名前:デフォルトの名無しさん mailto:sage [2013/12/21(土) 19:49:07.41 ]
ES6はCと違ってよくわからないって人がごねた結果だろ

470 名前:デフォルトの名無しさん mailto:sage [2013/12/21(土) 19:50:05.91 ]
>>469
Cをよくわかってないなら喋らない方がいいよw



471 名前:デフォルトの名無しさん [2013/12/26(木) 23:29:54.06 ]
A=フェラチオ
B=手マン
C=セックス
D=スカトロ

472 名前:デフォルトの名無しさん [2013/12/26(木) 23:57:34.24 ]
>>468
最新のIEと10年前のFirefoxを比較すれば当然そうなります

473 名前:デフォルトの名無しさん mailto:sage [2013/12/27(金) 00:10:24.18 ]
10年前にFirefoxなんかあったっけ?
10年前だとIE以外は生まれてすらいない時代だと思うけど。

474 名前:デフォルトの名無しさん mailto:sage [2013/12/27(金) 00:13:04.22 ]
>>473
でたらめを書かないでください。
Firefoxは10年前既にありました。

475 名前:デフォルトの名無しさん mailto:sage [2013/12/27(金) 00:15:25.39 ]
あ、やっぱりなかったみたいだね。

ja.wikipedia.org/wiki/Mozilla_Firefox%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AE%E5%A4%89%E9%81%B7
2003年5月16日 製品名を Firebird へ改称
2004年2月9日 製品名を Firefox へ改称

476 名前:デフォルトの名無しさん mailto:sage [2013/12/27(金) 00:16:20.89 ]
>>473
板違い
IEの話はドザ板でやれ

477 名前:デフォルトの名無しさん mailto:sage [2013/12/27(金) 00:19:58.37 ]
>>475
Firefoxの最初のバージョンはフェニックスと呼ばれました。
ウィキペディアで調べてもわからないことはあるものです。

そんなに恥ずかしがらなくてもいいです。
生きている価値が無いというほどのことではありません。

でも、ウィキペディアで調べて知ったかぶりをするのはもうやめたほうが良いかもしれませんね。

478 名前:デフォルトの名無しさん mailto:sage [2013/12/27(金) 00:20:55.81 ]
間違えた。IEを持ちだしたのは>>472だった。
>>472は消えろ

479 名前:デフォルトの名無しさん mailto:sage [2013/12/27(金) 00:22:18.40 ]
>>475
名前が変わったら別の製品だと思ったのか
恥ずかしすぎワロタ

480 名前:デフォルトの名無しさん mailto:sage [2013/12/27(金) 00:45:26.15 ]
もうそろそろ興奮収まったかい?



481 名前:デフォルトの名無しさん [2013/12/27(金) 01:03:00.89 ]
ワールドクラスの馬鹿を発見した興奮!

482 名前:デフォルトの名無しさん mailto:sage [2013/12/27(金) 01:05:50.54 ]
まだだったか

483 名前:デフォルトの名無しさん mailto:sage [2013/12/27(金) 05:30:34.81 ]
>>477>>479
全く読んでないから知らんけど、名前が違う頃のFirefox使ったデータならその頃の名前で書くんじゃねーの?

484 名前:デフォルトの名無しさん mailto:sage [2013/12/30(月) 16:38:13.73 ]
>>472
>最新のIEと10年前のFirefoxを比較

どーゆー意味?
>>468に載ってるFirefoxのバージョンは26とNightly 29なんだけど

485 名前:デフォルトの名無しさん mailto:sage [2013/12/30(月) 19:17:26.11 ]
>>468
mozilla.orgのJavascriptは独自仕様だよ。
ECMAScriptに入ってないのも独自の判断で仕様に入れて
Javascript 1.xと称している。
この場合のJavascriptはmozillaの商標。
一般的に言ってるJavascriptは標準規格のECMAScriptの通称。
そのうち独自仕様は辞めると思うが、
もともとJavascriptは彼ら(前身のNetscape社)のもの。

486 名前:デフォルトの名無しさん mailto:sage [2013/12/30(月) 19:33:25.23 ]
困るんだよねー
ちゃんと規格としてかっちり決まってから実装始めてもらわないと

487 名前:デフォルトの名無しさん mailto:sage [2013/12/30(月) 23:27:24.32 ]
しかし実装がないと規格も決まらないというジレンマ

488 名前:デフォルトの名無しさん mailto:sage [2013/12/31(火) 16:53:03.28 ]
>>486
このスレの住民の言葉とは思えんな
Fxのお陰でどれだけ仕様が改善できて策定がスムーズに行ったことだか
特に構文レベルだと長いフィードバックが不可欠
それをFxがずっと前からやってくれたおかげで、
今のFxの独自実装が抱える多くの問題を踏まずにすんだ

ChromeにだってSymbolやPromiseやら先行実装たくさんあるし
これから先もSIMDやParallelやら先行実装が重要なものは沢山ある

489 名前:デフォルトの名無しさん mailto:sage [2013/12/31(火) 18:11:09.61 ]
これからのJSって便利にもなるが厄介なことも増えるよな
例えばnewが要るかどうか
理屈としては継承のために@@createを呼び出させるべきかどうかなんだろうけど、
Mapなんかは付けないとエラー、Proxyやvalue object系には付けるとエラー、とか覚えるのが増えるね

490 名前:デフォルトの名無しさん [2014/01/01(水) 00:01:49.39 ]
今年はES6の年です
皆さん祝いましょう!



491 名前:デフォルトの名無しさん mailto:sage [2014/01/01(水) 01:43:16.27 ]
お断りします

492 名前:デフォルトの名無しさん mailto:sage [2014/01/01(水) 02:31:16.08 ]
>>489
今でもフレームワークごとに違うじゃん。

493 名前:デフォルトの名無しさん mailto:sage [2014/01/01(水) 10:06:51.50 ]
ビルドインオブジェクトの話でしょ
フレームワークはフレームワーク

まあ余談だけどユーザー側で作るAPIは基本的に
Class.initとかClass.create〜とかを提供する形にした方がいいと思うね

494 名前:デフォルトの名無しさん [2014/01/01(水) 10:19:14.82 ]
ついにJSも世代が分かれて古い方はstaticおじさんと呼ばれるようになるに違いない

495 名前:デフォルトの名無しさん mailto:sage [2014/01/01(水) 12:44:58.45 ]
ES6が糞過ぎるからしょうがないね

496 名前:デフォルトの名無しさん [2014/01/01(水) 14:35:09.29 ]
そうか?物によっては10年もかけただけあって随分洗練されてると思うが
今でも微妙な問題は残ってるけど大山は全て乗り越えた感じだ

497 名前:デフォルトの名無しさん mailto:sage [2014/01/01(水) 14:44:38.39 ]
おまえらArray.prototype.shuffleとか作ってないか?
そういうのは困るからArray.prototype._shuffleみたいにしろとさ

498 名前:デフォルトの名無しさん mailto:sage [2014/01/01(水) 14:56:37.99 ]
ES6に足りないものは、
{obj1,obj2,obj3}.prop.{prop1,prop2,prop3}.prop = val
というシンタックス。あとはいい。

499 名前:デフォルトの名無しさん mailto:sage [2014/01/01(水) 15:03:07.14 ]
イラネ
なんだその黒魔術

500 名前:デフォルトの名無しさん mailto:sage [2014/01/01(水) 15:21:41.51 ]
これが黒魔術なら分割代入も黒魔術ということになってしまうな



501 名前:デフォルトの名無しさん mailto:sage [2014/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 名前:デフォルトの名無しさん mailto:sage [2014/01/01(水) 15:49:11.00 ]
はあ・・
JavaScript ES6 Bad Parts -分かりにくい悪手法-
という良書が出来るのが目に見えてる

503 名前:デフォルトの名無しさん mailto:sage [2014/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 名前:デフォルトの名無しさん [2014/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 名前:デフォルトの名無しさん [2014/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 名前:デフォルトの名無しさん mailto:sage [2014/01/01(水) 21:58:18.62 ]
みんなcoffeescriptからの流用なんだけどね

507 名前:デフォルトの名無しさん mailto:sage [2014/01/01(水) 22:56:47.56 ]
いいえPythonやHaskellなんかからの導入です
CSも同じく

508 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 08:45:45.32 ]
他の言語からの取り入れを悪いことのように言う傾向が今年は滅びますように

509 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 10:23:18.50 ]
そんなのは見たことないな

510 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 10:48:29.19 ]
>>501
o['a', 'b', 'c'] = [1, 2, 3];
が既存の分割代入に近くていい気がする。



511 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 14:05:42.56 ]
プロパティの分割代入とか、プロトタイプ継承を理解していない証拠

512 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 14:27:08.28 ]
>>510
それは無理
o['a', 'b', 'c'] = [1, 2, 3];
は既に
o['c'] = [1, 2, 3];
と解釈されるから

513 名前:デフォルトの名無しさん mailto:sage [2014/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 名前:デフォルトの名無しさん mailto:sage [2014/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 名前:デフォルトの名無しさん mailto:sage [2014/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 名前:デフォルトの名無しさん [2014/01/02(木) 17:59:53.93 ]
>>514
パターンマッチはスクリプト言語なら強化して欲しいが、
これに?演算子やguardやら入ったらカオスになるんだろうな。

517 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 14:42:38.41 ]
おまえらみんなwithでも使ってろ
ただし最後はちゃんと"use strict";を書いてデバッグすること

518 名前:デフォルトの名無しさん [2014/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 名前:デフォルトの名無しさん [2014/01/15(水) 00:39:55.46 ]
try { (ノ°□°)ノノ ┻━┻ } catch() { ┬─┬ ノ( ゜-゜ノ) }

520 名前:デフォルトの名無しさん mailto:sage [2014/01/16(木) 20:32:57.94 ]
es6にguardsが入らなかったのはかなり残念だ
JavaScriptでちゃんと静的型チェックをしようとすると、
https://developers.google.com/closure/compiler/docs/js-for-compiler?hl=ja
このClosure Compilerのアノテーションを使うのが一番良さそうだけど
見ただけでめげた…

guardsの構文を受け付けて、コンパイル時に削除してくれればいいんだけどなぁ



521 名前:デフォルトの名無しさん [2014/01/17(金) 06:08:12.57 ]
ES6にGuardsが入ると思ってたのはあんただけだろうが、そもそもJavaScriptに静的型チェックなんて必要ない
スクリプト言語の性格や既存のライブラリを考えると徒労に終わるだけだし

そういうことで今では::構文もbindに取られてるし、ESメンバーにもそんなに好かれていない
wiki.ecmascript.org/doku.php?id=strawman:bind_operator
esdiscuss.org/topic/value-objects-roll-your-own#content-4
Trademarksはパターンマッチの為の機能として残るだろうが、今後型のための構文が採用されることはない

JSでどうしても型を明記したい場合は、a = b|0 や c = float32(d + e) のようにすることだね
そうじゃないのを望むならDartからでも変換すればいい

522 名前:デフォルトの名無しさん mailto:sage [2014/01/17(金) 10:11:32.27 ]
静的型チェックっていうと大袈裟だったかもしれないけど、他人が書いた関数で
引き数に何を渡せばいいか分からない事ってないか?

複数人で規模の大きめのアプリを作る時とかは、みんなまじめにアノテーション
とか書いてんのかね。

しかしBrendan Eichがいらねってんなら望み薄だな…
bindはいいけど、guardsはTypeScriptと同じように:一個にすればいいんじゃね?

523 名前:デフォルトの名無しさん mailto:sage [2014/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 名前:デフォルトの名無しさん mailto:sage [2014/01/17(金) 14:41:15.55 ]
トライ・アンド・エラーで別に構わないけど、crypto.getRandomValues()みたいに
適切なエラーを出す為にもGaurdsは必要だと思うけどね。

現状の現実的な解は、関数の先頭に型チェックするassertなりを仕込んでおいて
リリース時にスクリプトで削除するか、何もしない関数に置き換えるとかかな。

525 名前:デフォルトの名無しさん [2014/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 名前:デフォルトの名無しさん mailto:sage [2014/01/18(土) 17:02:05.76 ]
なるほど型判定にinstanceofを使えばいいんだな
しかし[Symbol.hasInstance](x)って見慣れない構文だな…
x[Symbol.toStringTag]も
どこ見ればいいか教えてもらえると助かる

527 名前:デフォルトの名無しさん [2014/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 名前:デフォルトの名無しさん [2014/01/21(火) 07:00:19.03 ]
try { (ノ°□°)ノノ ┻━┻ } catch() { ┬─┬ ノ( ゜-゜ノ) }

529 名前:デフォルトの名無しさん [2014/01/21(火) 14:32:33.68 ]
ドラフトr22来たね
wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#january_20_2014_draft_rev_22

1つ挙げるとしたら
System.globalでグローバルオブジェクトが取れるようになったのは嬉しいね

530 名前:デフォルトの名無しさん [2014/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 名前:デフォルトの名無しさん [2014/01/31(金) 06:23:51.84 ]
今やってるTC39ミーティングはES7がいよいよ始まったって感じで興味深いね。
Structured Clone、Typed objects、Value object、Parallel、Object.observe、Do expression、Async/await

その中のTyped objectsのスライドも面白い。
https://docs.google.com/presentation/d/1HGoxjX74Q9i8I1ok-hkmxzWlM7CDQwxT0sUS5PJDxdg/
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 名前:デフォルトの名無しさん [2014/01/31(金) 19:19:33.18 ]
Value Objectsのスライド面白いね。
www.slideshare.net/BrendanEich/value-objects2

興味深いのは数値にサフィックスを付けて独自の型を定義できるようになったことだろうか。
1KB + 1MB // 1025KB とかできるわけだ。
更に演算子での暗黙の型変換を簡単に調整できるかもしれない。

awaitの情報も面白い。
https://github.com/lukehoban/ecmascript-asyncawait
Promiseが活躍してるね。

533 名前:デフォルトの名無しさん mailto:sage [2014/02/01(土) 01:35:24.81 ]
単体doはPerlを思い出すな

534 名前:デフォルトの名無しさん [2014/02/03(月) 21:58:06.74 ]
最近JSのマクロでsweet.jsが流行ってるけど、ES8のマクロはこれがベースになりそうな予感

535 名前:デフォルトの名無しさん mailto:sage [2014/02/03(月) 23:27:10.33 ]
ES8って…鬼が笑いそうだな(節分だけに)

536 名前:デフォルトの名無しさん mailto:sage [2014/02/04(火) 00:01:33.82 ]
ラムダっちゃ

537 名前:デフォルトの名無しさん [2014/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 名前:デフォルトの名無しさん mailto:sage [2014/02/04(火) 06:18:04.99 ]
春にはV8でもアロー関数が使えるようになりそうだよ!!
やったねたえちゃん!
https://code.google.com/p/v8/issues/detail?id=2700

539 名前:デフォルトの名無しさん [2014/02/05(水) 06:02:48.34 ]
今までWorker間のデータのやり取りはコピーか移譲しかできない件でいろいろ議論があったが、
V8/ChromeでArrayBufferの共有をできるようにするみたい。
オマケで排他処理を利用したスレッド制御ができるようになる。

https://chromiumcodereview.appspot.com/148283013/
https://chromiumcodereview.appspot.com/149053009/
https://chromiumcodereview.appspot.com/149053009/diff/1/src/arraybuffer.js

540 名前:デフォルトの名無しさん [2014/02/06(木) 10:10:23.63 ]
先日の会議でPromiseに関してchainを廃止してcastをresolveに統合することになったんだけど、凄い揉めてる
esdiscuss.org/topic/promise-cast-and-promise-resolve

似たのがあるのはややこしくて無駄
chainとthen、resolveとcastでそれぞれ前者がベーシックで、後者が実用的という感じだろうか
で、残すとなると実用的な方になるのはもっともだが、
ベーシックな方を捨てると、関数型スタイルとしての魅力を大きく損ない、ただのサポートAPIに成り下がってしまう

皆Promiseに対して考えてる重みが全然違う
高レベルなフレームワーク追加と思うかパラダイム導入と思うかでぜんぜん違う
宗教的な部分も関わってくる
もっと根本的な設計から文句がある人もいる(決まるのが急すぎた!)
今でも案が出るし、PromiseじゃなかったらとっくにES7に持ち越しになってると思う

今後どうなるか注目



541 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 18:21:27.41 ]
こんな感じ?

〜ML〜
chain(flatMap)が要る要らないというようなことが半年前から度々話されてきた

〜そして先週の会議〜
「要らないよね〜」
「無くすのでいいと思う」
(ほぼ満場一致ですぐ決まる)

〜ML〜
「解決したよ〜^^ chainとresolveは無くすね」
「これはひどい><」
「話が違うじゃねえかざけんな!」
「オンラインでの積み重ねを大事にしろよ」

・Googleの人
「あー、会議に出れなくて言えなかったのマズったな
 ま、周りではchain推しだしV8では無くさないことにしたから^^;
(そもそもthenがクソだからchain実装したんだし!)」

「でも会議にでなかった人が決議を取り消せたら進展しないよね…」
『『『会議の意義って…………』』』

そして遂に出てしまった危険ワード「disasters like ES4」に皆が内心震え上がりましたとさ
爆死

542 名前:デフォルトの名無しさん [2014/02/16(日) 06:09:25.38 ]
wiki.ecmascript.org/doku.php?id=strawman:relationships
これで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
とコードを最適化できるってこと?

それと、もしこうなったらなんかヤバイね
esdiscuss.org/topic/merging-bind-syntax-with-relationships

543 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 19:12:47.88 ]
CやC++もそうだけど、最新仕様にジワジワ対応してくのがいやだな
ベンダー中立なのも善し悪しだ

544 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 00:50:48.29 ]
es6のletも関数の先頭に巻き上がるの?

545 名前:デフォルトの名無しさん [2014/02/20(木) 06:13:15.91 ]
let,constはブロックスコープで巻き上がらないよ
因みに関数宣言はブロックスコープで巻き上がる事になった
スコープに関してはこの2点を押さえとけばいい

546 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 10:54:52.79 ]
どうもどうも。
つうことはlet,constだけを使ってる限りは、C++と同じように使う直前で宣言する
っていうルールでいいわけだ

547 名前:デフォルトの名無しさん mailto:sage [2014/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 名前:デフォルトの名無しさん mailto:sage [2014/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 名前:デフォルトの名無しさん [2014/02/21(金) 06:02:18.19 ]
>>548 あくまで変数はスコープに属する
つまり正確には変数の存在は巻き上がるというかスコープに浸透する
但し宣言箇所までに使おうとするとエラーになる
だからletさえあれば必ずしも良く書けるというわけでもない

特にfor文ではletは一見凄くいい
最近Cと同様に毎ループスコープコンテキストを生成するようになった
これでfor文中でのクロージャ生成がグッとよくなる
ただしその影響でパフォーマンスに影響があるかもしれない
理論的にはループ中にスコープコンテキストを保持するものがない場合
コンテキストを生成しなくて済むが、実際最適化が進むのは時間かかる

いずれにせよ、letはキチッとしたイメージで使っていくべきだと思う
>>547のような場合は、もし使う直前で宣言するのなら
それはそれ以前に変数を使っていた場合にエラーにしたいからという理由に自ずとなる
だがもし>>548のように見えて、キチッとしてないと思うのならブロック文の最初で宣言すべき
ただ大半のケースであろう、そのスコープだけで下位のスコープでは使わない場合
一気に宣言と代入をした方がコンパクトでいいとは思う

場合によっては先頭にする、また場合によってはvarも使うというように
個人的ポリシーのもと綺麗に使い分けるか、思い切ってvarを捨てて
letのその場宣言に統一するか、どちらがいいかは分からない

550 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 10:47:15.29 ]
変数の定義は出来る限り後にするってのはEffectiveC++にも書いてある事だし
let,constを使ってる限りはその習慣のままでよくなったって事でいいよ



551 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 17:51:36.53 ]
ES6ってEffectiveC++まで読まないと使いこなせないのか…

552 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 23:03:38.54 ]
>>551
んなわけない
C++の人がJS のヘンテコな仕様を気にしなくてよくなっただけだ

553 名前:デフォルトの名無しさん [2014/03/20(木) 20:37:22.08 ID:OnvdowAM]
ES7+に関するニュースがたまってきた
まずObject.observeがChrome M35でデフォルト有効になるね
つまり日本時間の4/1からES7の時代なわけだ、素晴らしい

それからES6に摂りこぼしたようなメソッドが入ってくる
esdiscuss.org/topic/object-entries-object-values
まあこういうのは仮にES7になっても、すぐ実装される可能性が高いか

あと興味深かったのはASTならぬCSTについて
esdiscuss.org/topic/concrete-syntax-tree
これが標準APIとして入ると、最近2chでもよく耳にするJSのコード分析ツールが発達するだろうね

554 名前:デフォルトの名無しさん mailto:sage [2014/04/06(日) 10:34:50.10 ID:BAtZ8TGv]
Microsoft、プログラミング言語“TypeScript”を正式リリース
ttp://www.forest.impress.co.jp/docs/news/20140403_642703.html

555 名前:デフォルトの名無しさん mailto:sage [2014/04/26(土) 00:52:27.92 ID:FOzpDrfL]
しかし、letが使えない事が最もイラつく要因だな
これだけは間違いなく設計ミスと言わざるを得ない
はやいとこletが当たり前のように使えるようになってほしいよ

556 名前:デフォルトの名無しさん mailto:sage [2014/04/26(土) 04:17:27.66 ID:m4NkAp8y]
Let it be.

557 名前:デフォルトの名無しさん mailto:sage [2014/04/26(土) 06:30:34.96 ID:IOWbf8hT]
なんでそんなもんが要るのか理解に苦しむ

558 名前:デフォルトの名無しさん mailto:sage [2014/04/26(土) 07:34:51.39 ID:/1bv/NFj]
letって糖衣構文だよね?

559 名前:デフォルトの名無しさん mailto:sage [2014/04/26(土) 09:05:12.45 ID:N/wOneBP]
letをラムダ式で書くのは一般に可読性がすごく悪いので、letがラムダ式の糖衣構文であることは
間違いないけど、良い糖衣構文の典型例と言っていい。

おまけにJSのラムダ式は function とか無駄にキーワードも長いし(funcで十分ですお)。

560 名前:デフォルトの名無しさん mailto:sage [2014/04/26(土) 09:28:02.77 ID:dytsHLSj]
そもそもムダ式の使いどころがわからないw



561 名前:デフォルトの名無しさん mailto:sage [2014/04/26(土) 10:45:40.07 ID:/1bv/NFj]
(function って書きかたするだけで即時無名関数だってわかるし、可読性悪いと思わないな。
とはいえletは便利だと思う。

562 名前:デフォルトの名無しさん mailto:sage [2014/04/27(日) 10:16:14.38 ID:J+hFW2BD]
架空の構文を使うが、

let (a = a に与える値, b = b に与える値) { a とか b とかを使ったプログラム片 };
↑コレが、こうなる↓
(function (a, b) { a とか b とかを使ったプログラム片 })(a に与える値, b に与える値);

可読性は大幅に違うと思うが?

563 名前:デフォルトの名無しさん mailto:sage [2014/04/27(日) 12:50:33.35 ID:dzdj67m/]
var使えばいいじゃん

564 名前:デフォルトの名無しさん [2014/04/27(日) 16:49:18.92 ID:/n7QikUK]
varか

565 名前:デフォルトの名無しさん mailto:sage [2014/04/27(日) 16:58:01.12 ID:ZSKa5kXO]
バーカと言ってんのか。

566 名前:デフォルトの名無しさん mailto:sage [2014/04/28(月) 07:32:48.30 ID:pTdZCSXw]
perlみたいにmyにすればvarより一文字タイプする手間が減って
人類全体ではおそらくのべ何百万時間と何百テラバイト節約できたのに。

567 名前:デフォルトの名無しさん mailto:sage [2014/04/28(月) 10:37:13.73 ID:nTejnWG/]
そこでさらに1文字減らそうと考えないお前はとことん子供だな

568 名前:デフォルトの名無しさん mailto:sage [2014/04/28(月) 12:21:34.72 ID:6N4YFPM8]
>>556
今なら let it go だな

569 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 01:06:54.91 ID:AbmpH0cg]
>>567
phpの$はすばらしいな!え、ちがう?

570 名前:デフォルトの名無しさん [2014/04/29(火) 20:33:54.13 ID: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 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 21:23:55.12 ID:/EtEvdEl]
JavaのJavaScriptが更新されたね

572 名前:デフォルトの名無しさん mailto:sage [2014/05/10(土) 00:26:41.76 ID:IHaPgo2n]
ES6のイテレータってJava8のStreamAPIみたいなメソッド無いの?

573 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 22:34:29.48 ID:fV0QO8N6]
マイクロソフト、IEの新機能紹介サイト「status.modern.ie」を正式版に
www.atmarkit.co.jp/ait/articles/1405/29/news127.html






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<154KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef