ECMAScript デス 4

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
《ECMAScriptを語るスレ》

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


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

■過去スレ
JavaScript デス
http://pc5.2ch.net/test/read.cgi/tech/1052273054/
ECMAScript デス 2
http://pc11.2ch.net/test/read.cgi/tech/1088298991/
2デフォルトの名無しさん: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 +
http://toro.2ch.net/test/read.cgi/hp/1325400523/

※JavaScriptが板違いと言いたい人へ
運営サイドから次のような見解が出ています。
|459 飛べない削除屋 ★ sage :04/05/30 15:38 ID:???
|>‍>458
|ローカルルールにはひどく単純化されて書かれていますが、
|Javascript という言語そのものが板違いなのではありません。
|用途によって板違いかどうかを判断してください。
3デフォルトの名無しさん:2012/01/02(月) 05:21:56.94
3. - 主な実装 -
Rhino (Mozilla.orgでメンテナンスされている組み込みを目的としたJava製の実装)
http://www.mozilla.org/rhino/

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

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

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

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

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

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

Tamarin (Adobe から Mozilla.org に寄贈された JIT 付きの仮想マシン。
コンパイラは含まれないので、ECMAScript のソースを直接実行することはできない。)
https://wiki.mozilla.org/Tamarin
4デフォルトの名無しさん:2012/01/02(月) 05:22:47.60
3の続き

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

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

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

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

iv / lv5(日本人によって開発されているC++実装で、ES5.1準拠を謳う)
https://github.com/Constellation/iv/wiki/lv5
5デフォルトの名無しさん:2012/01/02(月) 05:23:15.54
4. - 関連スレ -
Web上におけるクライアントサイドスクリプティングに特化した実装(通称Javascript)については
WebPrograming板などの専門スレをご利用ください。

[Web製作板] + JavaScript の質問用スレッド vol.94 +
http://toro.2ch.net/test/read.cgi/hp/1325400523/
[WebProg板] Ajaxでも語りませんか Rigel4
http://kohada.2ch.net/test/read.cgi/php/1166751613/
[プログラム板] JavaScriptスレ
http://toro.2ch.net/test/read.cgi/tech/1314333133/
6デフォルトの名無しさん:2012/01/02(月) 05:25:46.39
ここまでテンプレ
リンク切れの修正や実装の補足などをした
7デフォルトの名無しさん:2012/01/02(月) 09:55:56.16
>>1
おつ
8デフォルトの名無しさん: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デフォルトの名無しさん:2012/01/02(月) 12:07:04.67
name で名前が取り出せるようになるから。
11デフォルトの名無しさん:2012/01/02(月) 12:14:18.49
あ、それだけなんですか。デバッグの時に多少マシになる感じなんですね。
12デフォルトの名無しさん:2012/01/02(月) 12:15:14.56
>>8
言語仕様を読んだこと無い奴がカドクセーとかほざいてるだけだから気にするな。
13デフォルトの名無しさん:2012/01/02(月) 12:39:13.77
そういう流れいらないから
14デフォルトの名無しさん:2012/01/02(月) 12:45:04.91
カッコを付ける習慣がある以上、納得できる理由を出さないと。ただの遠吠えになってるよ。
15デフォルトの名無しさん:2012/01/02(月) 12:59:11.96
お前の習慣なんてしらねーよw
16think49 ◆bKk/qcAKuM :2012/01/02(月) 19:52:15.67
>>前スレ997
ご指摘通り、記憶違いのようでした。お騒がせしました。

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

>>9
名前付き関数式は関数内のスコープに影響するので変数名を変更しても自身を参照できるようになります。
17デフォルトの名無しさん: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デフォルトの名無しさん:2012/01/03(火) 12:04:33.05
>>16
> 変数名を変更しても

「変数が別のものに束縛されても」と言いたいのかな?
19デフォルトの名無しさん:2012/01/03(火) 13:43:44.69
ECMAScriptの規格に「束縛」なんて用語出てこないけど、何と勘違いしちゃってるの?
20think49 ◆bKk/qcAKuM :2012/01/03(火) 15:09:33.38
>>18
「束縛」はわかりませんが、http://jsfiddle.net/4ULa3/1/ の「名前付き関数式を利用するパターン」がそれです。
IE8- ではバグがあるので使えませんけどね…。
http://d.hatena.ne.jp/think49/20110521/1305959222

後学の為に「束縛」を説明(もしくは参考URLの掲示)していただけると嬉しいです。
ぐぐって何となくは理解しましたが、「変数への代入 === 束縛」なのでしょうか。
この前提が正しいと仮定して、束縛することよりも元々の変数の名前で参照できなくなることが鍵のような気がします。
21デフォルトの名無しさん: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デフォルトの名無しさん:2012/01/13(金) 16:46:09.65
>>8
>JSON2.jsでは普通に使われてる書き方だけどな。

hoge = function(){}();

こういうのの話だよね?
無いぞ。どこだよ。
23デフォルトの名無しさん: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デフォルトの名無しさん:2012/02/05(日) 21:17:08.31
ttp://d.hatena.ne.jp/oogatta/20111204/1322982897

ES.nextもstrawmanもキモくね?
25デフォルトの名無しさん:2012/02/06(月) 00:49:49.89
Traitだけありゃいいのに最適化がうんたら
26デフォルトの名無しさん:2012/02/23(木) 00:39:23.23
>>24
実行コンテキストがいちいち変わるのが理解出来ないからクラスベースの
構文糖用意したつもりなんだよ。妥協点がそこだったんだろ。

ところで関数が暗黙にthisプロパティを持たなくなったのは良かったが
Function.prototype.bind(cx,args...)で引数のLIST型書きかえれるようにしたのはやめて欲しかった。
Callオブジェクトを撲滅できない以上ここら辺は積極的に隠蔽すべきだと思うんだが。
__proto__プロパティがダメでObject.define*がいい理由も根拠がわからん。
27デフォルトの名無しさん:2012/03/07(水) 21:34:12.90
__proto__がいいと思う理由は何?
28デフォルトの名無しさん: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デフォルトの名無しさん:2012/03/08(木) 23:46:27.29
newはprototypeのコピーであって参照じゃないっしょ
30デフォルトの名無しさん:2012/03/09(金) 02:34:50.33
>>29
言われて本読みなおしてググってやっと理解できました。
ありがとうございます。
31デフォルトの名無しさん:2012/03/15(木) 01:18:49.40
ECMAScript Language Specification ECMA-262 6th Edition - DRAFT
http://people.mozilla.org/~jorendorff/es6-draft.html

読みやすくてイイ!
32デフォルトの名無しさん:2012/03/24(土) 17:13:23.76
JavaScriptではperlの
( $foo, $bar ) = split( /,/ );
みたいな書き方は出来ない?
(リストの左辺値)
33デフォルトの名無しさん:2012/03/24(土) 17:13:59.06
>>32
すんません。ECMAScriptでした。
34デフォルトの名無しさん:2012/03/24(土) 17:53:59.26
実装による
以上
35デフォルトの名無しさん:2012/03/24(土) 20:34:52.67
>>34
仕様の話に実装で答えても…
36デフォルトの名無しさん:2012/03/24(土) 20:38:43.62
ES5.1までの仕様にはないかな
6以降で入れるみたいな話しがちらほら
Fxはたしか実装してた気がする
37デフォルトの名無しさん:2012/03/25(日) 00:11:46.03
FirefoxはJavaScript1.7で導入してて
https://developer.mozilla.org/ja/New_in_JavaScript_1.7
分割代入 (destructuring assignment) って名前がついてる
38デフォルトの名無しさん:2012/03/25(日) 07:09:48.00
CoffeeScript使え
39デフォルトの名無しさん:2012/03/27(火) 14:24:18.92
32です。ありがとうございました。
ってことは、配列の内容を個々に変数にバラすには
1個ずつ代入するしか方法がない、ってことでしょうかね。
40デフォルトの名無しさん:2012/03/27(火) 15:40:12.32
だからFFでできるしCS使う手もあるっていってるじゃん
41デフォルトの名無しさん:2012/03/27(火) 23:09:58.48
isnt演算子のセンスのなさ
isnt = is not = is!
でよかったじゃん
42デフォルトの名無しさん:2012/03/28(水) 09:34:12.46
それは分かりづらいから無い
43デフォルトの名無しさん:2012/03/28(水) 21:08:23.71
Dだと!is
>>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] );
}
}
CoffeeScriptはES3デスよ……
>>45
すんません。よく知りませんでした。
勉強します。
47デフォルトの名無しさん:2012/04/27(金) 12:03:13.48
ところでes6のletとconstはふざけてんのアレ?
48デフォルトの名無しさん:2012/04/27(金) 14:32:16.75
letはいろんな書き方できるから?
何がどうふざけてるか書いてくれないかな
49デフォルトの名無しさん:2012/04/27(金) 22:41:57.09
そういう感性は俺にはなかった。
letもconstもプログラム言語にはあって然るべき機能だと思うけど。
50デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2012/04/28(土) 09:54:55.97
ガチで長いぞw
54デフォルトの名無しさん:2012/04/28(土) 17:45:52.49
>>50
長過ぎるのと意味が分からんところがあるけど
> このときtry-catchの変数だけは実装上varとは別のスロット集合に束縛してスコープが別になってる。
とりあえず、↑これはcatch内だけだね。

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

他は後でつっこむ
55デフォルトの名無しさん:2012/04/28(土) 18:55:45.44
>>50-52"をまとめると

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

ってこと?
56デフォルトの名無しさん:2012/04/28(土) 20:34:09.47
let文、let式がなければ

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

とかではまるやつが出てくるのは目に見えてるしな
57デフォルトの名無しさん:2012/04/28(土) 22:07:39.07
letは色んな事出来すぎるからだめなんだよなぁ
何であんなに色んな記法を作ったのか
58デフォルトの名無しさん:2012/04/29(日) 01:30:12.11
>>51
> ほかにもconstは最適化のために初期化子必須になったんだけどこれは元々ある変数の初期化を伴わない定義の

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

> 未初期化のconst

constは初期化必須って言っているのに、未初期化って矛盾してるぞ。その時はどんな値になってるんだ?
単純に未初期化のconstは、その時点で実行時エラーになる気がするが。
59デフォルトの名無しさん:2012/04/29(日) 01:39:48.38
constもletもJavaScriptの構造を理解している人に取っては必要ないものだよ
他言語メインの人がなんとなく使うときにハマるからあった方がいいねってもの
60デフォルトの名無しさん:2012/04/29(日) 01:40:25.53
const hoge;
hoge = "後から代入できちゃう";

ってことなんじゃねーの?
undefinedな定数にしたくて初期値省略してるのに、代入されたら台無しだよっていう
61デフォルトの名無しさん:2012/04/29(日) 02:01:05.13
constな変数(定数)をundefinedにする意味は全くないと思うけど、単純に未定義
って事もあるから、どっちでもいいか。
constな変数は絶対に初期化しとけって事だな。
62デフォルトの名無しさん: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デフォルトの名無しさん:2012/04/29(日) 07:56:25.15
JavaScriptって、一見代入とかができたように見えて、実はできない、という
場合ってスルーしちゃうじゃない。昔から。

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

alert(foo.bar) // undefined
64デフォルトの名無しさん:2012/04/29(日) 08:00:51.12
何のためのstrict modeなんですかねえ
65デフォルトの名無しさん:2012/04/29(日) 08:13:31.96
たとえばJavaだと、参照される前に確実に1回だけ初期化される変数は、
finalだけど初期値なし、にできるけどな。

要するにundefinedってのは、名前が未定義って意味じゃなくて、初期化されてない値
(unititializeとすべき?)って意味だから、「undefinedな定数」なんて無理だから、って
ことじゃね?
66デフォルトの名無しさん:2012/04/29(日) 08:27:47.33
>>63
これは foo.bar にアクセスした時点で新たに String オブジェクトが生成されて
そっちの bar プロパティに代入してるだけだから、
代入が失敗しているわけではないと思う
67デフォルトの名無しさん:2012/04/29(日) 13:19:34.99
>>66
イミフ
68デフォルトの名無しさん:2012/04/29(日) 13:20:57.64
fxでも失敗するね
const hoge;
hoge = "aaaa"; // aaaa
hoge; // undefined
69デフォルトの名無しさん:2012/04/29(日) 13:26:20.85
>>67
仕様書を読んでみるといい
70デフォルトの名無しさん:2012/04/29(日) 13:41:28.54
6ドラフトの12.2.1 Let and Const Declarations
読んだけどわからん
そんなこと書いてあるかな?
71デフォルトの名無しさん:2012/04/29(日) 14:11:35.11
すごくおおざっぱに説明すると、プリミティブに対してオブジェクトとして
アクセスしようとすると、オブジェクトが作られて、それに対してアクセスする、
というのが言語仕様。

だから、その作られたオブジェクトの属性として設定されるけど、そのオブジェクトに
アクセスする方法がないし、元の変数は元のプリミティブを指したままなので……
というのが >>63 で起きてること。
72デフォルトの名無しさん:2012/04/29(日) 22:57:50.88
ゴミな仕様だな
73デフォルトの名無しさん:2012/04/30(月) 12:10:26.90
普通に例外吐いて止まってくれるだけでだいぶ助かるんだが
74デフォルトの名無しさん:2012/04/30(月) 13:06:49.34
strict mode + Object.sealed でおk
75デフォルトの名無しさん:2012/04/30(月) 15:41:31.94
foo.bar()
みたいな明らかに一文が終了してるときもセミコロンいるやん。

if(foo)
a+b;

みたいなコード書くヤツのほうを撲滅しろよ。
76デフォルトの名無しさん:2012/04/30(月) 16:27:47.76
波括弧を必須にするだけでよかったのにな
77デフォルトの名無しさん:2012/04/30(月) 16:59:47.58
;の省略とかややこしくなるだけだからいらんわ
78デフォルトの名無しさん:2012/04/30(月) 17:09:36.40
セミコロン省略はそこまで混乱しないだろ
79デフォルトの名無しさん:2012/04/30(月) 18:12:22.52
多分シェルでも全ての行末にセミコロンを付けるような人なんだろう
80デフォルトの名無しさん:2012/04/30(月) 21:28:42.23
セミコロン省略はあっていい
自分も付けるか気分と見やすさと必須性で決める
基本は全く無駄な物だから付けない
81デフォルトの名無しさん:2012/04/30(月) 22:12:51.55
必要ないならなくなってるよ。必要だから残ってる。
httpを使うことを考えると無くせない。
82デフォルトの名無しさん:2012/05/01(火) 07:52:42.83
俺は実際全くセミコロン付けないで書けている。よって必要ない。

改行せず一行に詰め込む時にだけ必要、という主張だね。
83デフォルトの名無しさん:2012/05/01(火) 08:48:23.26
そんなことは言ってない
必要ないところで省略した方が逆に見栄えもよく感じられて
問題もないこともあるから省略できていいって言ってる
セミコロンは必要、だけど省略も必要
わかる?
84デフォルトの名無しさん:2012/05/01(火) 08:57:11.06
省略したほうがいい場面ってどこだよ

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

みたいに関数本体が一文で済むところなら
セミコロンなしでもいいかなという気はするけど、
それ以外になんかあるか?
85デフォルトの名無しさん:2012/05/01(火) 09:25:23.96
一律つけた方が法則がシンプルな分
見栄えもいいよ
セミコロンの場合実害が少ないからなくても困らないけど
86デフォルトの名無しさん:2012/05/01(火) 09:46:43.49
メモ帳で長いコード書くとき
カッチリしたもう変更がないだろう機械的なコードはセミコロンで固めて
個性的な変更しまくりのふわふわしたコードには付けないな
87デフォルトの名無しさん:2012/05/01(火) 09:49:49.99
>>84
いや、むしろそういうごちゃごちゃした1行には付けるべきだろ。

a=1
b=2+a
みたいなのには必要ない、もしくは、
a=1;b=2+a;
にする。
88デフォルトの名無しさん:2012/05/01(火) 09:54:58.57
>>86
こーいう、背後に哲学が感じられる使い分けが
コードから読み取れれば問題ない

無分別に一貫性なくつけたりつけなかったり
は醜いし読みにくい。
考えなさっぽさが滲みでてみっともないし。
89デフォルトの名無しさん:2012/05/01(火) 10:28:52.18
スマホで作ってるとセミコロン付ける付けないとインデントはかなり悩む

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

数の進数やbit数に関しての拡張と現在milli秒で扱ってる範囲ををmicro秒にして欲しいんだけど
そういう話は挙がってないの?
90デフォルトの名無しさん:2012/05/01(火) 11:54:26.69
なんでもかんでもマイクロ秒管理したら
既存APIが遅くなるんでねーの?
91デフォルトの名無しさん:2012/05/01(火) 12:18:42.55
OSから取得するナノ秒までで約60bit
マイクロ秒までで約50bit
ミリ秒までで約40bit

全部64bit整数使ってるだろうから変わりないのでは?
92デフォルトの名無しさん:2012/05/01(火) 14:11:47.69
非力な組み込みでもecmascript使うんだから標準で仕様化したらだめだ。
93デフォルトの名無しさん:2012/05/01(火) 14:45:30.95
非力というか万が一タイマーがサポートしてないのなら0埋めで返せばいいだけじゃない?
スクロールとか描画なんかの演算とタイマー設定をもう少し正確にやりたいだけでしょ?
まあディスプレイ付きのデバイスなら今時間違いなくマイクロ秒まではサポートしてるタイマー使ってるはずだけど
94デフォルトの名無しさん:2012/05/01(火) 18:40:05.14
セミコロン問題は、一応プラグマのopen issueのままです。
http://wiki.ecmascript.org/doku.php?id=harmony:pragmas
95デフォルトの名無しさん:2012/05/02(水) 00:11:18.62
>>93
だから、ECMAScriptなんつー総本山規格じゃなくて、ディスプレイ付デバイスで動かすような実装のレベルで
何とかしてよってのが>>92なんじゃねーの。
96デフォルトの名無しさん:2012/05/02(水) 05:02:25.84
マイクロ秒単位のタイマは、むしろ非力な組み込みでの需要の方が大きいんじゃねーの
なんにせよ非リアルタイムな環境でのマイクロ秒タイマは
信用ならない精度になるだろ

そういう話をするとしたらQueryPerformanceCounter的な高精度カウンタを新設して
自前でポーリングしれって感じになるんじゃねえかな
97デフォルトの名無しさん: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デフォルトの名無しさん:2012/05/03(木) 08:34:31.35
>>97
Function#bind を活用してみてください。
99デフォルトの名無しさん:2012/05/03(木) 09:00:22.22
>>98
それじゃ無理だろ。
そもそもbindさせるオブジェクトを
これから作ろうって話な訳だし。
evalして無理やりパースするくらいじゃね?
100デフォルトの名無しさん:2012/05/03(木) 11:47:48.86
>>97
もともとそのコンストラクタをどう使うつもりなのか
101デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2012/05/03(木) 14:19:49.87
それじゃapplyNewの戻り値が関数になるし[2,3]がインスタンスにバインドされない。
隠蔽したいのはCのvar c=0だけだと思う。
104デフォルトの名無しさん:2012/05/03(木) 14:32:30.10
いい忘れた。
a2.push.apply(a2, args)じゃなくてArray.prototype.push.apply(a2, args)じゃね?
105デフォルトの名無しさん:2012/05/03(木) 15:32:29.16
>>100
基本的には「コンストラクタを呼び出す時に
apply的な呼び出しは可能なのか」ということ。
限定的な使い方ではなくクロージャとかになっていても
問題ないような記法が自分では見つけられなかった。

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

強引な代替案なら思い付くんだけど
ハッとするようなスマートな記法をお持ちの方がいたら
勉強になるなと思ったですw
106デフォルトの名無しさん: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デフォルトの名無しさん:2012/05/03(木) 17:54:48.87
言っておくが >>102 でできるからな。
108デフォルトの名無しさん:2012/05/03(木) 20:53:52.00
>>107
jqueryとかのbindメソッドじゃダメだよね?
現時点で実装してる処理系ってFirefoxくらい?
109デフォルトの名無しさん:2012/05/03(木) 21:15:07.89
ES5だからIE9以上を含む全てじゃね?
IEはしらんがFxやらGoogleChromeやらOperaは実装済のはず
11097:2012/05/03(木) 23:41:34.06
>>102
ありがとう!
勉強になったよ
pushの結合もオレには新しかったw
concatより早いんかな
あとで調べてみようっと
111デフォルトの名無しさん: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デフォルトの名無しさん:2012/05/04(金) 13:43:47.26
__proto__使わずに同じ事する懐かしの方法だな。

>>105はnew(C.apply(...))の形式が取りたいって最初の要件は良かったのか?
113デフォルトの名無しさん:2012/05/04(金) 13:45:14.01
最初の要件かそもそも、不明確なので
114デフォルトの名無しさん:2012/05/04(金) 15:36:13.38
>>112
実引数に配列を渡したいだけかと思ってたが。
115デフォルトの名無しさん: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デフォルトの名無しさん:2012/05/04(金) 16:43:37.62
>>115
そうか、>>111は忘れてくれw
117デフォルトの名無しさん:2012/05/23(水) 01:38:00.11
ECMAからES5.1仕様書のHTML版公開
http://ecma-international.org/ecma-262/5.1/
118デフォルトの名無しさん:2012/05/23(水) 11:26:27.98
素晴らしい。
119デフォルトの名無しさん:2012/06/04(月) 06:55:06.70
お兄ちゃん、感心しているだけじゃなくてちゃんと読まないとダメだよ?
120デフォルトの名無しさん:2012/06/04(月) 16:23:57.05
あー毒舌な妹がこんなところにまで
121デフォルトの名無しさん:2012/06/10(日) 04:12:22.56
なあお前ら。
関数が結合されるのがヤダヤダ!って場合は__parent__の代わりにbind使えばいいが__proto__はどうするよ?
あと自己反映のときのcalleeとか。harmonyにProxyがあるのにcalleeがダメな理由てなんだ?
122デフォルトの名無しさん:2012/06/10(日) 11:15:47.27
>>121
__proto__のgetterはObject.getPrototypeOf、setterはObject.createである程度代用できる
arguments.calleeについてはhttp://togetter.com/li/215907 が参考になる
123デフォルトの名無しさん:2012/06/11(月) 07:47:35.23
>>122
そこ色々間違ってるから鵜呑みにしないほうがいいぞ。
124デフォルトの名無しさん:2012/06/11(月) 10:30:16.63
>>123
どこがどう間違っているのか分からないとあなたの情報を鵜呑みに出来ない
125デフォルトの名無しさん:2012/06/11(月) 10:30:27.73
>>123
ご指摘ありがとう
よろしければ、より参考になる資料を示して頂けると嬉しい
126デフォルトの名無しさん:2012/06/14(木) 17:49:57.32
古い情報も相当残ってるけどwiki.ecmascript.orgが確実。
127デフォルトの名無しさん:2012/06/14(木) 18:28:36.68
>>126
古い情報が相当残っているのに確実とする理屈がわからない
結局、どこが間違っているかも言及なしだしあてにはできないなー
128デフォルトの名無しさん:2012/06/15(金) 08:25:24.62
書いた本人は分かってるんだろうけど書き方がイマイチだから読む人がちゃんと分からないのではってことかな?

いずれにしろ1つのサイトだけあてにするのはダメ
129デフォルトの名無しさん:2012/07/01(日) 15:23:04.66
ttp://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts
>removed <| and TriangleLiterals
これだからTC-39はダメなんだ!
130デフォルトの名無しさん:2012/07/01(日) 16:24:38.17
そらそうよwww
これでもう復活はないなw 嫌いじゃないけどちょっと無理がありすぎたんだw
131デフォルトの名無しさん:2012/07/02(月) 11:09:20.07
ダメなところを改善したいBrendan EichといじりたくないTC39の戦いはまだまだつづく!
132デフォルトの名無しさん:2012/07/02(月) 13:59:41.98
AS3が一番とばっちりだよな。
先走りすぎたせいでJS2とも別モンになっちまったしhaXeの方がJS2に近いくらいだわ。
133デフォルトの名無しさん:2012/07/02(月) 14:57:01.97
Q. JS2とは?
134デフォルトの名無しさん:2012/07/02(月) 16:48:46.88
ActionScript3は、少し先走りすぎだったし、
Mozillaに提供した実装Tamarinのコードの質が悪く、
仕様の安易な部分と合わせて、反対派を団結させてしまったね。
結局Mozilla.orgでもTamarinを利用するTraceMonkeyプロジェクトはなくなったし。
ECMAScript 4で議論された機能については、議論継続中だからいいんだけども。
135デフォルトの名無しさん: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デフォルトの名無しさん:2012/07/06(金) 16:22:49.91
ECMAScript 4に戻ってやり直すのが皆一番幸せになるわ
137デフォルトの名無しさん:2012/07/06(金) 16:26:33.37
つか明らかにJavaScriptの土管化が進行中な件
ウェブのC言語と言えば聞こえはいいが、要は誰も直で書きたがらないってことだからな。
そういう用途に応えるためにLLJSとか開き直ったものも出してきてるしw
138デフォルトの名無しさん:2012/07/06(金) 16:31:52.47
そして
問題点1:土管としては低効率
問題点2:土管が土管化を嫌がっていらんことするリスク
139デフォルトの名無しさん:2012/07/07(土) 01:50:08.30
それって土管って表現するの?
140デフォルトの名無しさん: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デフォルトの名無しさん:2012/09/27(木) 00:40:57.35
ECMAScript6にいつのまにかclassが追加されててワロタw
どうやら6/15のDraftに追加されたようだ。
さがしたら>>135で話題になってたけど、言ってる意味がわからん。。
ちょっと勉強するか。
143デフォルトの名無しさん:2012/09/27(木) 01:36:15.53
しかし仕様書を見てもよくわからんな。。
もう少し土管化するまで待つか
144デフォルトの名無しさん:2012/09/27(木) 08:05:08.60
土管化が何を指してるのかさっぱりだ
145デフォルトの名無しさん:2012/10/01(月) 02:35:37.39
http://www.slideshare.net/agigigigi/ecmascript-study-2-esnext-updates
http://constellation.github.com/slides/contents/20120812/presentation.html

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

それにしても、モジュールの機能が無いみたいだけどそれ以外は普通にモダンな
スクリプト言語になっちゃうね。
146デフォルトの名無しさん:2012/10/01(月) 12:03:59.01
言語設計は最初からモダンだけどな。
ライブラリ設計は古かったけど。(殆ど無いに等しいし)
147デフォルトの名無しさん:2012/10/14(日) 16:38:50.03
ECMAScriptの最新 = TypeScriptなの?
148デフォルトの名無しさん:2012/10/15(月) 00:05:30.16
私も興味があります
現在策定中のECMAScriptとTypeScriptの相違はどの程度なのでしょうか?
149デフォルトの名無しさん:2012/10/15(月) 00:19:27.67
マージされることがあるとしても、バージョン二つくらい後だろ。
クラス仕様については、ECMAScriptとほぼ同じ機能になってるな。
違いは組み込みかライブラリ化の違いくらい。
150デフォルトの名無しさん:2012/10/15(月) 17:18:28.74
>>149
ありがとうございます
そうなると、あと10年位掛かりそうな・・・

オプショナルな静的型付けとかジェネリックとか、次の仕様に取り込まれないかな
151デフォルトの名無しさん:2012/10/15(月) 17:47:41.70
ECMAScript4の失敗を忘れたのか?
そこまでやるならいっそ新しい言語にしてくれたほうがマシ
糞みたいな互換性やら名前やらとはさっさとおさらばしたいぜ
152デフォルトの名無しさん:2012/10/15(月) 20:19:01.64
ECMAScript4の失敗についてはよく知らないけど
TypeScriptはJavaScriptの上位互換だよ
TypeScriptのように、既存のJavaScriptが動くように仕様を拡張したら問題ないのでは?
153デフォルトの名無しさん:2012/10/15(月) 20:43:43.76
154デフォルトの名無しさん: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デフォルトの名無しさん:2012/10/15(月) 22:58:57.10
MicrosoftはMicrosoftで思惑あったと思うが、
・AdobeがActionScriptをECMAScript4にしようとしていた。
・既に広く広まったECMAScript3との互換性の問題が軽視。
古いコードをどうやって実行するのか議論が深まらないまま。
・ECMAScript4の新機能の多くがActionScriptをコピーしただけで、
入れることの是非、設計詳細部の議論が深まらないまま。
・ActionScriptの機能の多くが実装者の思いつきで設計。(Adobeの公開MLに残ってる)
・参照実装であるtamarinのコードの質の低さ。
というわけでストップになった。
ただしECMAScript4で導入されそうになった機能は捨てられたわけでなく、
多くは議論を深めてから入れる方向で考えられている。
Webの現状を考えると時間をかけるのが妥当と判断された。
それはBrandenの声明にもはっきり書かれている。
156デフォルトの名無しさん:2012/10/15(月) 23:48:22.01
>>155
ActionScriptはECMAScript 4を元に作られたと思っていたのですが、
実際は逆で、ActionScriptを元にECMAScript 4の仕様を決めようとしていたということでしょうか?
ECMAScript 4は2回決裂しているようなので、そこらへんの前後関係は良く分かりませんが、
少なくとも2回目の決裂に関しては、Adobeの強引さとActionScriptの出来が問題になったということですかね。

ECMAScript 6に関してはしっかり議論して合意に達してほしいですね。
便利な機能が入ることを期待しつつ、時間が掛かることをもどかしく思ったりしつつ、
末端プログラマとして、仕様策定者に期待したいです。
157デフォルトの名無しさん:2012/10/16(火) 08:10:49.32
>実際は逆で、ActionScriptを元にECMAScript 4の仕様を決めようとしていたということでしょうか?
ドラフトを先走って実装しただけ
158デフォルトの名無しさん:2012/10/18(木) 19:10:41.39
>>154
前半の陰謀論はまったく要らないな
159デフォルトの名無しさん:2012/10/19(金) 21:05:59.32
160デフォルトの名無しさん:2012/10/19(金) 21:13:28.34
>>159
ちなみにBrendan Eichのスライド
161デフォルトの名無しさん:2012/10/19(金) 21:25:10.17
Brendan Eich @BrazilJS 2012 - The State of JavaScript
http://www.youtube.com/watch?v=DASvUIAfoRU
162デフォルトの名無しさん:2012/10/20(土) 00:54:46.78
typescript出たばかりなのに、No Classかよw
163デフォルトの名無しさん:2012/11/02(金) 03:30:41.79
tcp/ipみたく実装できてから仕様が固まるのかな
164デフォルトの名無しさん:2012/11/14(水) 10:34:30.08
結果論かもしれないが、ECMAScript 4を捨てたのは明らかな失策だろう。
議論議論と、皆いつからそんなに会議好きになったのかな。
この記事がとても興味深いんだけど。

第二次世界大戦中のライフハック「仕事を進まなくさせる8ヵ条」
http://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デフォルトの名無しさん: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デフォルトの名無しさん:2012/11/14(水) 12:14:52.56
ちょっと昔なら逆転不可能そうに見えたブラウザ市場をChromeがガツガツ食い込んで行ったのは
裏を返せば、どのブラウザにだってまだまだシェア伸ばすチャンスはいくらでもあるってことの証明だしな
168デフォルトの名無しさん:2012/11/14(水) 12:25:49.32
おまいらスレチなんで各ブラウザの専スレでやってくれないかー
169デフォルトの名無しさん:2012/11/14(水) 12:39:10.73
そこはブラウザの専スレじゃなくてブラウザ戦争スレに誘導だろ
170デフォルトの名無しさん: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デフォルトの名無しさん:2012/11/15(木) 16:23:31.62
>>164
かなり勘違いしてる。
>>165
これ、まだ現実味ない事ばかり書いてるわけじゃなくて、
既に確定しているversion 6や既に現実になっていることが多い。
Javascriptが共通基盤になるって話がちょっと盛ってあるくらい。
172デフォルトの名無しさん:2012/11/22(木) 22:07:58.91
正直Windowsみたいに一社独占になった方が開発は楽になるけどね。
今後はいろいろなOSとブラウザが乱立するんだろうね。
173デフォルトの名無しさん:2012/11/23(金) 08:48:10.93
> 正直Windowsみたいに一社独占になった方が開発は楽になるけどね。

一生Adobe信者になれば楽になれるぞ
174デフォルトの名無しさん:2012/11/23(金) 09:55:42.99
そういやアドベはブラウザは作らないのかね。
作って普及させれば全て無駄にならないのに。
175デフォルトの名無しさん:2012/11/23(金) 10:39:23.23
Flashプラグインあるじゃん。これさえあれば既存の全ブラウザ乗っ取ったも同然。
176デフォルトの名無しさん:2012/11/23(金) 16:48:28.33
すでにIE10が乗っ取れてないわけだが
177デフォルトの名無しさん:2012/11/24(土) 12:58:20.82
なんかe4xが死にそう
interpolationは便利だったのに
178デフォルトの名無しさん:2012/11/27(火) 04:47:12.84
これか
https://developer.mozilla.org/en-US/docs/E4X

かなり思い切った決断だけど
なんで廃止にする必要があったの?
問題はFirefoxだけ?
179デフォルトの名無しさん:2012/11/27(火) 04:50:27.92
>>178
ごめん、E4Xをサポートしているのは、ブラウザではFirefoxぐらいか?
180デフォルトの名無しさん:2012/11/27(火) 10:58:00.49
もっと早くに死んでるべきものだった。
XML literal syntax(笑)
181デフォルトの名無しさん:2012/11/27(火) 11:22:01.01
セキュリティの問題さえなければ便利だったんだけどね
innerHTML(笑)は標準化さえされてないし、DOMは超冗長だし
182デフォルトの名無しさん:2012/11/27(火) 15:07:03.68
183デフォルトの名無しさん:2012/11/27(火) 16:30:09.11
E4Xってヒアドキュメントに使うもんだと思ってた
っていうかこれからヒアドキュメントどうすればいいんや・・・
184デフォルトの名無しさん:2012/11/27(火) 17:35:53.95
>>182
ちゃんと勧告まで進めばいいな
DOM4は大丈夫そうだけど、その関連規格はコケそうで怖い
DOMの仕様は5つもW3C Noteになった前例があるし
185デフォルトの名無しさん:2012/11/27(火) 22:54:32.73
186デフォルトの名無しさん:2012/12/03(月) 09:07:26.90
>>183
ES6 Template Strings
187デフォルトの名無しさん:2012/12/03(月) 22:31:17.95
>>186
何この気持ち悪い構文
普通にWYSIWYGリテラルでいいのに・・・
188デフォルトの名無しさん:2012/12/04(火) 17:52:16.89
Perlとシェルを合体させたような変な構文だな
189デフォルトの名無しさん:2012/12/04(火) 17:55:27.25
XML literalの百倍マシ。Javascriptっぽいし。
190デフォルトの名無しさん:2012/12/09(日) 23:50:29.25
JXONってDOMなんだな

>>186
#演算子やん
191デフォルトの名無しさん:2013/01/01(火) 13:04:46.41
typescriptて散々実装しねぇって駄々捏ねてたのにes4の先行実装だな。
15年早かったらes5なんてなかったのに。
192デフォルトの名無しさん:2013/01/04(金) 01:02:18.10
http://benvie.github.com/continuum/
ここにES6が実験出来るサイトがあった。
早速classとか試してみたらちゃんと動いた。
多重継承が出来なそうだが、ES6は出来ないのかな?
あと配列内包(List comprehension)がうまく動かん…
193デフォルトの名無しさん:2013/01/04(金) 02:06:29.51
trait使えばできるだろ>多重継承
ES.nextに入ってなかったっけ?
194デフォルトの名無しさん:2013/01/05(土) 11:47:34.88
VBScriptでweb上の画像を取得するスクリプトをいくつか書いたのだけど、
ブラウザをIE8からFireFoxに変えたら正常に動作しなくなった。
それで結局全部Jscriptに書き換えるはめになってしまった。

WSHの動作環境はブラウザに依存するもんなんでしょうか?
画像の取得に使用したcomはWinHttp.WinHttpRequest.5.1とMSXML2.XMLHTTP3.0、
使用OSはXPです。
195デフォルトの名無しさん:2013/01/05(土) 14:25:52.62
バッチリ依存します。そもそも、それらのAPIは標準化されていません
OperaだろうとGoogle Chromeだろうと動かないでしょう
196デフォルトの名無しさん:2013/01/05(土) 15:01:24.08
>>195
ありがとう。
テキストは取得できるのに画像が取得できないという症状でした。
JScriptにしたら問題なく動作するようになりました。

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

現実の世界では英語が国際的に標準語の地位を固めて久しいですが、
プログラムの世界は混沌としていますね。
197デフォルトの名無しさん:2013/01/05(土) 16:09:05.30
そのJScriptがクソなだけだ
英語が標準語ならJScriptはラテン語だろう
198デフォルトの名無しさん:2013/01/05(土) 19:51:42.53
MicrosoftがJScriptとかいう謎なクソ言語を作っただけの話で、
そこまでややこしい話ではない。
とりあえずIEをメインにして開発するのをやめれば
自然とそれなりに標準に沿ったものになる
199196:2013/01/05(土) 23:50:29.96
>>198
移植そのものは2ヶ月ほどの作業だったのですが、
その後のデバッグにみっちり1月半かかってしまいました。

それにしても、OSは世界標準なのに、実装されているバッチスクリプトが方言って……(泣)
200デフォルトの名無しさん:2013/01/06(日) 01:06:47.43
MSはWeb関連では失敗続きで弱小メーカーだからね。
真に世界標準なのはOffice(Excel,Word)であって、WindowsはOfficeの抱き合わせ販売
といっても過言ではない。(過言かも…)
だから、Officeの呪縛がない個人PCだとWindowsでなくてもそれほど困らないし。
201デフォルトの名無しさん:2013/01/06(日) 01:11:47.62
OfficeもWineで動くから実はWindowsは全く必要ない…?
202デフォルトの名無しさん:2013/01/06(日) 02:12:03.17
確かにそうだね。ただ、Webアプリが充実してくるとOSの重要性は無くなっていって
どうでもよくなりそうだね。
少なくとも会社のPCは、惰性でWindowsをずっと使っていくと思われる。
203デフォルトの名無しさん:2013/01/08(火) 19:42:04.34
海外じゃ公的機関が予算削減のためにOpenOfficeを使ってるだろ
204デフォルトの名無しさん:2013/01/09(水) 15:59:00.23
es6どんどん糞になっていくよな
proxyとAPI強化しか要らん
どこに行こうとしてるんだ
205デフォルトの名無しさん:2013/01/09(水) 20:30:38.50
>>204
letとかオプション引数とか=>とかが要らないわけない。
早くES6が普及してほしい。
206デフォルトの名無しさん:2013/01/09(水) 21:04:16.79
たまにはremoveされた<| と TriangleLiterals のことも思い出してあげてください
207デフォルトの名無しさん:2013/01/09(水) 23:49:59.86
>>204
API強化はスレ違いです。
208デフォルトの名無しさん:2013/01/10(木) 00:44:06.28
意味が分からん。いきなり何を言ってるんだお前は
209デフォルトの名無しさん:2013/01/12(土) 12:43:53.73
es6でconstが導入されるけど、functionの引数にもconst指定できればいいけど。
210デフォルトの名無しさん:2013/01/12(土) 16:18:48.94
const引数か、あったら便利かもな
211デフォルトの名無しさん:2013/01/12(土) 17:18:05.69
逆に無いと引数が変更されるのかがわからないし、
精神衛生上よくないよね。是非ともあってほしい機能だ。
212デフォルトの名無しさん:2013/01/12(土) 17:28:59.86
プロパティが変更できるんじゃ意味ないだろ
213デフォルトの名無しさん:2013/01/13(日) 09:51:30.92
>>211
constってプロパティが変更出来るのか?
そもそも、C++みたいにconstメソッドとかの指定が無いから、
メソッドが内部を変更してしまうかも分からないね。
つうか、今一俺が仕様を分かってないな…
214デフォルトの名無しさん:2013/01/13(日) 11:03:23.10
今のFirefoxに実装されてるconstは、
const指定した変数が指すオブジェクトを別のオブジェクトには変更できないけど、
const指定した変数が指すオブジェクトの中身は変更できるね
これを関数引数に指定できても意味無いな
215デフォルトの名無しさん:2013/01/13(日) 13:09:36.12
じゃあconstの存在意義って何よ
216デフォルトの名無しさん:2013/01/13(日) 13:52:23.84
constはプリミティブ型にしか意味なさそう。
オブジェクトを本当にconstにするには、Object.seal(obj)を使う必要があるんだろうね。
217デフォルトの名無しさん:2013/01/13(日) 14:14:28.53
インタプリタでconstは厳密な実装が難しい。ましてevalのある言語。
218デフォルトの名無しさん:2013/01/13(日) 14:15:58.46
>>216
オブジェクトを書き込み不可にしたいのならそう。
通常、constは参照の方の属性。
219デフォルトの名無しさん:2013/01/13(日) 17:39:39.16
>>217
それは違うんじゃないかな?Object.seal()とかあるわけだし。
それにしても、es6になっても癖のある言語である事に変わりないね。俺は好きだがw
220デフォルトの名無しさん:2013/01/13(日) 17:51:08.18
>>219
const引数修飾子はオブジェクトの属性ではないのです。
221デフォルトの名無しさん:2013/01/13(日) 18:23:10.52
>>220
>>217はインタプリタの一般論で言ってたから、そんなわけないとObject.seal()
を例にして否定したんだよ。
222デフォルトの名無しさん:2013/01/13(日) 19:10:38.56
一部でも難しければ、全体が難しいんじゃないかな?
223デフォルトの名無しさん:2013/01/13(日) 19:26:59.41
じゃあどうやってObject.seal()実装してるの、って話だろ
別に一部も全部も難しくないって
224デフォルトの名無しさん:2013/01/13(日) 19:44:05.92
はあ?
Property descriptorで全てのpropertyをflexible: falseにして、
新規propertyを作れなくするんだけど?
225デフォルトの名無しさん:2013/01/24(木) 19:33:48.70
flexibleは名前変わったしsealじゃなくてfeezeだよ
インタプリタでconst難しいのはあってるけど
226デフォルトの名無しさん:2013/02/01(金) 22:14:26.55
代入した時にエラーを吐くならともかく
完全にスルーするってどういう意味があるのかサッパリでござる
バグの元にしかならんと思うんだが
227デフォルトの名無しさん:2013/02/02(土) 00:31:41.27
そんなあなたにstrict mode
228デフォルトの名無しさん:2013/02/03(日) 13:30:29.45
>>226
pageをリロードしたときに二重定義エラーになるからだろ。
リロードしたときに一々コンテキスト毎再生成してたら遅いだろ。
標準化されたstrict modeはfatal-warnings modeの挙動取り込んだんだから
>>227の言う通りデバッグのときだけstrict mode使えば良いじゃん。
それよかletになつたから#ifdefとして使えんのが痛い。

他のも標準化範囲半端だから不便だけどfor ofとextraとコレクションやっと入ったんだ喜べ!
229デフォルトの名無しさん:2013/03/07(木) 15:27:21.75
http://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デフォルトの名無しさん: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デフォルトの名無しさん:2013/03/22(金) 13:18:16.69
proxy
232デフォルトの名無しさん: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.
http://stackoverflow.com/tags/typed-arrays/hot
http://stackoverflow.com/tags/arraybuffer/hot

いまさらtyped-arrayとか調べてみたけどやっぱこの辺でつまったorz
よくみたらphpもasのライブラリとかも書いててすごいなオスロのひと…
233デフォルトの名無しさん:2013/04/03(水) 13:55:55.13
>>230
ちょうどおいらもC#でjscript等で使用されることを想定してるオブジェクトを設計してるんだけど
IExpandoとかIReflectとか実装する意味ある?(面倒くさい)

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

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

で妥協しちゃだめ?
234230: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デフォルトの名無しさん:2013/04/28(日) 12:03:49.25
Functional JavaScript: Introducing Functional Programming with Underscore.js
http://www.amazon.com/Functional-JavaScript-Introducing-Programming-Underscore-js/dp/1449360726/
Publication Date: June 18, 2013
236デフォルトの名無しさん: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デフォルトの名無しさん:2013/05/29(水) 16:28:30.33
30%の確率で0、70%の確率で1を返すプログラムを教えてください
238デフォルトの名無しさん:2013/05/29(水) 19:04:59.18
>>237
乱数
239デフォルトの名無しさん:2013/05/29(水) 19:14:50.60
if ( (new Date()).getSeconds() % 3 ){
return 1;
}else{
return 0;
}
240デフォルトの名無しさん:2013/05/29(水) 19:54:46.93
>>239
それなら Date.getTime() % 3 の方がGC的によい
241デフォルトの名無しさん:2013/05/29(水) 20:08:41.26
そもそもそれ70%のコードじゃなくね
242デフォルトの名無しさん:2013/05/30(木) 12:49:14.78
これはひどい
243デフォルトの名無しさん:2013/05/30(木) 14:10:10.49
>>240
ほとんどのシステムで時計見るのは遅いよw
244デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2013/06/04(火) 16:55:54.33
>>244,245

こいつらは何がしたいわけ?
248デフォルトの名無しさん:2013/06/07(金) 12:17:25.74
どっかのアホなスレと勘違いしてるんだろ
249デフォルトの名無しさん: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デフォルトの名無しさん:2013/07/25(木) NY:AN:NY.AN
>>249
単純に4行目のfunction宣言内で新しい環境が作られているからじゃね?
つまり3行目と5行目のprint呼び出しに現れるxは、
1行目のfunction宣言の環境内で束縛されているけれど、
4行目はのprint呼び出しは(新しい)別の環境内にあるx(の束縛)を参照している
251デフォルトの名無しさん:2013/07/25(木) NY:AN:NY.AN
4行目が
function(x){x+=10;y=20;print(x,y)};
だとどうよ
252デフォルトの名無しさん:2013/07/25(木) NY:AN:NY.AN
>a,bを合わせて新たに1つのaにしているんだろうか。
スタックみたいにテーブルを重ねていくんじゃね
253デフォルトの名無しさん: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デフォルトの名無しさん:2013/07/25(木) NY:AN:NY.AN
>>249
出力結果おかしくない?
4行目は即時関数じゃないから、実行されないと思うんだけど。
実行環境によっては、それで実行されるのか?
それ以外は453が正解だと思うが。
255デフォルトの名無しさん:2013/07/26(金) NY:AN:NY.AN
変数yとかzがグローバル変数だし
4行目が名前無しの関数宣言?してるだけだし
もうなんかプログラム的にめちゃくちゃ
256デフォルトの名無しさん:2013/07/26(金) NY:AN:NY.AN
zはグローバルじゃない。
257デフォルトの名無しさん: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はグローバル変数だぞ
259255:2013/07/26(金) NY:AN:NY.AN
>>256-257
ごめんzはちょっと見落としてたよ
でもyはグローバル変数だろ?
仮引数じゃなければ、varつけて宣言してない変数はトップレベルに束縛されてしまうはず
なのでyはグローバル変数じゃない?
260デフォルトの名無しさん:2013/07/26(金) NY:AN:NY.AN
内側のクロージャの宣言はChromeとかだとエラーになるな
そもそも呼び出してないんで実行結果にまったく影響無いが
これが実行できてしまう環境ってなんなの?
261デフォルトの名無しさん:2013/07/26(金) NY:AN:NY.AN
え、関数が関数返せない処理系なんかあるの?
262デフォルトの名無しさん:2013/07/26(金) NY:AN:NY.AN
関数が何かを返すなら少なくともreturn文が必要だな
>>249>>253はreturnも無いし関数の戻り値も参照してないけど
263デフォルトの名無しさん:2013/07/26(金) NY:AN:NY.AN
(function(){var abc; abc=function(){};})();
(function(){function abc(){};})();
(function(){function(){};})();

firefoxもchromeも三つ目だけシンタックスエラーになるね
無名関数の定義は式の右辺値になってないとだめなのかな
関数宣言と紛らわしいからか
264デフォルトの名無しさん:2013/07/26(金) NY:AN:NY.AN
式の右辺値とか関係無いか
関数宣言になっちゃって、その場合は無名じゃダメってことなのかね
265デフォルトの名無しさん:2013/07/26(金) NY:AN:NY.AN
SyntaxError: function statement requires a name
が出るから多分そうだね
266デフォルトの名無しさん:2013/07/26(金) NY:AN:NY.AN
IEはドキュメントモードによってはエラーにならんのか
わらえるw
267デフォルトの名無しさん:2013/07/26(金) NY:AN:NY.AN
wshはエラー出ないね
268デフォルトの名無しさん:2013/07/26(金) NY:AN:NY.AN
Edition 3rdしか見てないけどECMA-262の仕様的にはfunction(){function(){};}はエラー
269デフォルトの名無しさん:2013/07/26(金) NY:AN:NY.AN
JScriptだから(震え声)
270デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
>>249
コードが間違ってないなら結合オブジェクト実装しちゃったんだろう
271デフォルトの名無しさん:2013/08/03(土) NY:AN:NY.AN
どうやら、6の仕様が確定するのは今年末で、最終的にリリースされるのは来年末らしいな。
もうちょっと早くなんなかったのかね。
272デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
・なぜ匿名関数呼び出しの際function(){}を括弧でくるまなければいけないのか
・なぜreturnがいるのか

ファンクショナルなことしてると助長になりすぎ
273デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
うが抜けた
274デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
うはどこに入るのか
275デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
助う長
276デフォルトの名無しさん: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デフォルトの名無しさん:2013/08/05(月) NY:AN:NY.AN
ほんとにファンクショナルなことやってるなら、
function(){}を括弧でくくる必要なんてほとんど無いはずなんだけどね。
returnは面倒くさいけど。
280デフォルトの名無しさん:2013/08/13(火) NY:AN:NY.AN
関数リテラル使って関数オブジェクトを複数作ると、一般的にメモリ上はどうなるんだろう。
関数オブジェクトが持つのはクロージャだけなのかコード部分(text領域)も複製されるのか。
関数リテラルによる関数複製のコストが知りたい。
281デフォルトの名無しさん:2013/08/13(火) NY:AN:NY.AN
ソース嫁
282デフォルトの名無しさん:2013/08/14(水) NY:AN:NY.AN
実装による、としか言いようがない。そしてこのスレはスレタイによれば標準規格についてのスレ。

ただ、ひとつ言っておくなら、textというのはバイナリコードを指す用語だから、
インタプリタには基本的にはそんなものはない。
283デフォルトの名無しさん:2013/08/14(水) NY:AN:NY.AN
>>280
関数宣言でも最適化でインライン展開するから実装者以外が気にすることじゃないな。
ariguments.calleeが遅いとか嘘で仕様からなくしたいだけだし。

>>282
純粋なインタプリタなんて素のspidermonkeyくらいじゃね?
284デフォルトの名無しさん:2013/08/14(水) NY:AN:NY.AN
素朴な通訳系実装なら構文木は共有してるし、
高度なJIT持っていれば>>283の一行目の通り。
ただシビアな要求のあるコード書いてる人は、
JITあってもプロファイル取ってあれこれやってる。
https://github.com/felixge/faster-than-c
285デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2013/09/03(火) 06:57:07.17
プロパティの削除は無くてはならないけど
トップレベル変数を削除する必要のある機械なんて皆無でしょ

所によって宣言されていたり宣言が解除されていたり出来るのは変
290デフォルトの名無しさん:2013/09/03(火) 17:44:39.86
>>289
静的型付け言語とかそういうのから見ればプロパティの削除どころか追加さえも変って事になるんじゃね?
291デフォルトの名無しさん:2013/09/03(火) 20:46:39.95
プロパティの削除は機能として無くてはならないけど
関数スコープの変数宣言の解除とか使い道がないように思うんだけど
何百行もあるような関数でならまだあるのかな
292デフォルトの名無しさん:2013/09/04(水) 00:38:38.43
>>289
>トップレベル変数を削除する必要のある機械なんて皆無でしょ
トップレベルの変数を削除なんて誰も言ってないだろ?strict modeで未修飾のdeleteならコンテキスト関係ないぞ。
どれのこと言ってんのか分からんから次の

>所によって宣言されていたり宣言が解除されていたり出来るのは変
が曖昧だが・・・プロパティが追加されたり削除されたりするのは動的言語では当たり前の仕組み。
当たり前である以上、議論する意味はなくない?ダックタイピングが型理論的にどういう分類になるか議論するのと同じことだろ。
293デフォルトの名無しさん:2013/09/04(水) 00:42:34.78
変数はプロパティとは違うだろ
そりゃvar xはJSの内部概念的には__scope__.xだけど
294デフォルトの名無しさん:2013/09/04(水) 01:55:53.59
概念じゃなくて言語仕様でVOのプロパティなんだけど。何がVOになるかは定義されてないけどVOは定義されてる。
295デフォルトの名無しさん:2013/09/04(水) 02:32:00.91
うん、でもプロパティとは違うから。
296デフォルトの名無しさん:2013/09/04(水) 02:34:45.15
うん、でもプロパティとは違うから。
297デフォルトの名無しさん:2013/09/04(水) 03:10:06.27
うん、でもプロパティとは違うからw
298デフォルトの名無しさん:2013/09/04(水) 03:54:10.85
>>289>>293>>295
 >>290
想定してるパラダイムが一致してないのに、
「俺の想定するECMAScriptのパラダイムではこうだ!」
って主張しても何の意味も無いだろ。

「ECMAScriptの仕様上、
過去どう定義されていて、
過去どう解釈されていて、
現在どう定義されていて、
現在どう解釈されるべきで、
将来どう定義されるべきで、
将来どう解釈されるべきなのか」
299デフォルトの名無しさん:2013/09/04(水) 12:16:53.34
あーこりゃ仕様に目が眩んで現実が見えてない
300デフォルトの名無しさん:2013/09/04(水) NY:AN:NY.AN
>>229
http://ambroselittle.com/2013/08/31/typescript-to-be-or-not-to-be/
http://adambard.com/blog/top-github-languages-for-2013-so-far/
> 36 TypeScript 972

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

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

…すごくいい加減そうな集計されてそう
301290,298:2013/09/04(水) 14:25:34.29
>>299
いや>>289>>293>>295の人らも俺々仕様に目が眩んで現実が見えてないって話だよ。
「〜と定義・解釈されるべき」だとしても「現状〜と定義されている」事にはならんだろ。
コレで話が通じてなかったらどうにもならん。
302デフォルトの名無しさん:2013/09/04(水) 14:35:03.70
お前が言うな
303デフォルトの名無しさん:2013/09/04(水) 18:17:22.98
近頃のエンジンは再帰を末尾最適化してくれるらしいんだけど
その最適化がどういうコードならできて、どういうコードなら妨害してしまうのか知りたい

自分たまにボードゲーム作るんだけど、
そっちではスタックオーバーフロー見なくなったけど
ちょっとしたフィボナッチで起こったりするし
まあコードの書き方が悪いんだろうけど
304デフォルトの名無しさん: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デフォルトの名無しさん:2013/09/04(水) 22:55:04.77
ES6サポート遅いな……
privateとか今年中に実装されんのかな
306デフォルトの名無しさん:2013/09/05(木) 00:37:56.08
再来月ラストコールなのに
中身の無い項目のあるドラフトとか、議論内容見てると非常に不安になってくる
307デフォルトの名無しさん:2013/09/05(木) 09:28:25.95
5.1thの和訳ってないんですか?
308デフォルトの名無しさん:2013/09/05(木) 12:48:00.89
変に英文キーワードの混じった和訳のほうが読みにくいと思うよ
309デフォルトの名無しさん:2013/09/05(木) 15:35:31.71
>>307
一応ある(もちろん非公式・未保証)
忍者規制でURL直書きできないんで↓で:
www.webzoit.net/hp/it/internet/homepage/script/ecmascript/ecma262_51/
310デフォルトの名無しさん:2013/09/06(金) 01:32:40.32
一日ぶりに来て伸びてるかと思えばなんだこれ。
>>290=298=301
あんた誰だよ。

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

>>305
privateてdraft落ちてなかったっけ?
symbolがユーザー定義できなくなっただろ。
311デフォルトの名無しさん:2013/09/06(金) 01:58:18.29
間違いなく採用はされる、Symbolとprivateをどうまとめるかの議論がもっと必要そうなだけ。
でもES7にしようとは誰も思ってないと思う。
HTMLのように1年毎くらいでES6.1、6.2と出る可能性がかなり高いかもしれない。
312デフォルトの名無しさん:2013/09/06(金) 03:31:25.49
313デフォルトの名無しさん:2013/09/06(金) 07:05:18.48
>>312
それharmony、古い。draftが出てる。
Symbolまわりは今グドグドやっててworking draftに入ったり外れたりしてる。
314デフォルトの名無しさん: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デフォルトの名無しさん:2013/09/06(金) 09:26:15.18
>>314
いや、今のドラフトに乗ってないことなんて百も承知なんだけど。
そうは言ってもV8には既に仮実装されてるし、早期に採用される可能性が高い。
むしろされない理由がない。話し合いが足らないだけで採用する方向では合意取れてるんだし。
この頃は機能も増えて各進行度もバラバラドラフトだけじゃ追い切れないよ。
ちゃんとコミュニティの情勢も読まなきゃ。
316デフォルトの名無しさん:2013/09/06(金) 10:33:10.17
ES.nextという言葉が使われだしてからもう実質Living Standardになってる
合意が取れてもドラフトに載せられるまでまとめるのが間に合わなくなりつつあるしあてにはできない
317デフォルトの名無しさん:2013/09/06(金) 13:06:46.25
「あーこりゃ仕様に目が眩んで現実が見えてない」ってやつか
318デフォルトの名無しさん:2013/09/06(金) 20:12:36.57
Number.MAX_SAFE_INTEGERとか
2^53±1のどの値にするかやプロパティ名になにが適切かが
決まるだけでもだいぶかかったしな
319デフォルトの名無しさん:2013/09/06(金) 21:36:06.53
昨今一番もてはやされてるかもしれない言語が
十年ぶりに大きく変わろうとしているのに
この過疎りようはどうにかならんのかねぇ
320デフォルトの名無しさん:2013/09/06(金) 22:43:40.90
ここ本スレじゃねぇし。
誰もECMAScriptなんて呼ばねぇよ。
321デフォルトの名無しさん:2013/09/06(金) 23:06:35.21
ここよりも盛り上がってる本スレが存在するとな!?
是非教えてもらいたいw
322デフォルトの名無しさん:2013/09/07(土) 00:22:32.33
JavaScriptで検索ぐらいしようよw
323デフォルトの名無しさん:2013/09/07(土) 07:53:44.82
324デフォルトの名無しさん:2013/09/07(土) 13:04:21.73
今まではその役割も兼ねてきたがこれからはTypeScriptって言われてる
325デフォルトの名無しさん:2013/09/07(土) 14:41:13.54
JavaScriptで検索してもここよりもスレNo少なくて最近の書き込み数も劣ってるスレしか見つからんな
326デフォルトの名無しさん:2013/09/07(土) 18:47:43.00
2ch全体ならWeb制作版の質問スレが一番賑わってるかね
327デフォルトの名無しさん:2013/09/07(土) 19:00:27.22
それを言うのなら、
ウェブプログラム版じゃね?
なんでプログラム板と分かれてるのか知らないけど
328デフォルトの名無しさん:2013/09/07(土) 19:01:26.63
いやWeb制作版だよ。

桁違いすぎるw

+ JavaScript の質問用スレッド vol.108 +
http://toro.2ch.net/test/read.cgi/hp/1378462421/
329デフォルトの名無しさん:2013/09/07(土) 20:47:44.93
屁理屈乙
そこ質問スレだから
俺も仕方ないから底で議論したりしてるけど
本来NGだから
330デフォルトの名無しさん:2013/09/07(土) 23:24:39.01
[JavaScript] スクリプト言語34 [Perl,Python,PHP]
http://toro.2ch.net/test/read.cgi/tech/1367771981/

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

今は収まってて本スレはこっち
【PHP,Python】スクリプト,バトルロワイヤル37【Perl,Ruby,JS】
http://toro.2ch.net/test/read.cgi/tech/1376836047/
332デフォルトの名無しさん:2013/09/08(日) 01:05:07.84
今月のミーティングでは細かくはあるけど非常によく使う部分に関わる重要な部分が決まるみたいだな
333デフォルトの名無しさん:2013/09/08(日) 01:54:36.00
ジェネレーター周りはこれで変更無さそう
http://domenic.me/2013/09/06/es6-iterators-generators-and-iterables/
334デフォルトの名無しさん:2013/09/10(火) 13:52:57.70
ES5の非常に秀逸な記事を見つけた。
このレベルは中々無い。
http://constellation.hatenablog.com/entry/20101205/1291564928
335デフォルトの名無しさん:2013/09/11(水) 00:05:34.67
多分unique symbols/private namesはES6に間に合って
どちらもユーザー定義出来ると思う
336デフォルトの名無しさん:2013/09/14(土) 02:23:58.45
>>334
記述子使ったことない奴向けだな
337デフォルトの名無しさん:2013/09/16(月) 23:03:46.05
ES6のオブジェクトリテラルは面白いな
http://wiki.ecmascript.org/doku.php?id=harmony:object_literals
338デフォルトの名無しさん: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デフォルトの名無しさん:2013/09/17(火) 14:46:47.01
演算子も1つじゃ足りなかったら、オーバーライドしなくても2つ3つと組み合わせればいくらでも作れるのね
そう言えば細菌は主にsortで使う、-1,0,1を返す<=>演算子が提案されてたね
341デフォルトの名無しさん:2013/09/17(火) 14:54:12.59
んなもん大昔からPerlにあるわけだが
342デフォルトの名無しさん: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] ]

http://wiki.ecmascript.org/doku.php?id=harmony:array_comprehensions
343デフォルトの名無しさん:2013/09/18(水) 01:48:14.19
for ofはfor each inでよかったのにって思ってるのは俺だけか?
E4Xから取り込んでソースコード互換を残して欲しかった。
344デフォルトの名無しさん:2013/09/18(水) 02:20:20.06
for-each-inはfor-inと同様にプロトイプも辿る
配列にも安全に使えないぽっと出のポンコツ内部イテレータもどきだったでしょ

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

JSは汎用的な言語だからE4XはES標準に組み込まれるまではいかないだろう
345デフォルトの名無しさん:2013/09/18(水) 02:38:35.03
E4Xはこれで我慢して
http://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
348デフォルトの名無しさん:2013/09/19(木) 00:00:30.00
349デフォルトの名無しさん:2013/09/19(木) 00:07:13.85
350デフォルトの名無しさん:2013/09/19(木) 02:15:58.26
>>344
いやいや、シンタックスをfor each inにしてセマンティックスをfor ofにしてくれって意味。
351デフォルトの名無しさん:2013/09/19(木) 02:40:51.35
動作が違うんだからソース互換守れないじゃん
何いってんのよ
352デフォルトの名無しさん:2013/09/19(木) 03:36:17.94
<お知らせ>
このスレの住民が引っ越してきます
http://toro.2ch.net/test/read.cgi/tech/1330477388
353デフォルトの名無しさん:2013/09/19(木) 14:12:57.57
DOMWorkerのTransferable objectsの仕組みをJSコアでサポートすることにより、
Workerの自由度と、将来のWorkerLikeな機能の可能性が格段に増す。
http://wiki.ecmascript.org/doku.php?id=strawman:structured_clone

これと同系統な仕様で、ES7期待の星のParallels
http://wiki.ecmascript.org/doku.php?id=strawman:data_parallelism
354デフォルトの名無しさん:2013/09/19(木) 16:46:08.91
ES6だと念願(?)だった配列のクローンがこんな簡単にできるのな。
a1 = [1,2,3,2,1]
a2 = [...a1] //[1,2,3,2,1]

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

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

m1 = new Map()
m2 = new Map([...m1]) //Mapのクローン
355デフォルトの名無しさん:2013/09/19(木) 17:54:56.39
このスレ過疎り気味だけど
お陰で最初の方を見るとES4の分析がいろいろされてて面白いな
ES6は時間を書けるだけのものになったのか、
また行き過ぎてないかを考えるのにちょうどいい
356デフォルトの名無しさん:2013/09/19(木) 21:08:28.43
>>354
> ES6だと念願(?)だった配列のクローンがこんな簡単にできるのな。

え? 適当なライブラリの関数使えば、
今でも簡単にできるんじゃね?
357デフォルトの名無しさん:2013/09/19(木) 21:30:18.63
たかが配列のコピーに何でライブラリ入れなきゃいけないんだってことだろjk
358デフォルトの名無しさん:2013/09/19(木) 21:34:46.29
配列のコピーだけでプログラムが終わることなんて無いだろ?
ライブラリを入れるだけで、配列のコピー以外も含めて圧倒的に生産性が上がる。
目的と手段を履き違えてないか?
359デフォルトの名無しさん: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デフォルトの名無しさん:2013/09/19(木) 21:53:39.71
cloneするのに一番わかり易い文法って知ってるか?

b = clone(a)

これだよ?
361デフォルトの名無しさん:2013/09/19(木) 22:02:21.42
関数オーバーライドが出来ないんだからそれはない
362デフォルトの名無しさん:2013/09/19(木) 22:04:43.18
>>359より短く書けたw
更に古いブラウザにまで対応。
最強じゃね?

var _ = require('lodash');
var arr2 = _.clone(arr1);
363デフォルトの名無しさん:2013/09/19(木) 22:14:44.01
お前がそう思うんならそうなんだろう、お前の中ではな
364デフォルトの名無しさん:2013/09/19(木) 22:19:46.43
JavaScriptスレから移住してきた人にはスマンが
ここは標準仕様をメインで語るスレなのよ

ライブラリの話禁止というわけではないが
そういう話の流れじゃそもそもないのよな
365デフォルトの名無しさん:2013/09/19(木) 22:21:49.57
Array.isArrayがないと別コンテキストのオブジェクトが本当にArrayか見分けるのは難しいんじゃないか?
366デフォルトの名無しさん:2013/09/19(木) 22:28:43.54
>>359よりこっちの方が良かった
Array.clone = x => Array.isArray(x) ? x.map(Array.clone) : x;
367デフォルトの名無しさん:2013/09/20(金) 00:41:52.37
368デフォルトの名無しさん:2013/09/20(金) 10:58:34.35
http://stackoverflow.com/questions/14949069/lodash-undefined-in-ie?rq=1

なんか悪いんだろうなぁ…とは思うんだけど
何が悪いんだろうなぁまではよくわからん
そういうのが多すぎる…
369デフォルトの名無しさん:2013/09/20(金) 12:16:50.61
TC39勢力

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

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

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

20% 専門的な仕様の詳細に関わる
その他凄い人、偉い人
370デフォルトの名無しさん:2013/09/20(金) 14:47:21.10
TC39 3大勢力

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

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

1/3 【モーター・ギア】
企業団体として、ニ人称視点であれこれ注文する、文句・要求係
Microsoft, Apple, Intel, jQuery
371デフォルトの名無しさん:2013/09/21(土) 01:40:27.26
DOM Promise
http://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デフォルトの名無しさん:2013/09/21(土) 02:09:01.60
>>371
Promiseならそれとほぼ同じ物が
jQuery標準でついてるし、
nodeでも使える。
373デフォルトの名無しさん:2013/09/21(土) 02:24:09.24
ん?だから何?
標準と標準じゃない物同列に語られてももの凄く困惑するんだけど…
374ES6 Tips: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デフォルトの名無しさん:2013/09/21(土) 02:53:35.32
>>373
JavaScriptの世界では、標準ではないものも
広く使わわれている。

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

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

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

標準じゃないものを使っているごく普通の人たちは
標準を待っているお前よりも未来に生きている。
劇的に変わるのは、標準を待っている人たちだけ。
376デフォルトの名無しさん:2013/09/21(土) 03:11:51.67
>>375
標準で無いもの(拡張)は利用する側が自分で選択できる。
標準は全ての実装が準拠しようとするため選択できない。

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

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

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

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

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

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

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

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

だから、今更標準に入ったって、何も変わりはしないの。
標準に入ったものをすぐ使えるわけでもないしね。
379ES6 Tips:2013/09/21(土) 03:31:49.22
どうしても使いたい奴がプラグイン導入して個人的に使うのと、
大々的に標準に入って、さあ皆さん使ってくださいとなるのでは次元が違うぞ。

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

お前さんの言うとおり、プラグインで十分問題が解決するんなら
標準に入れて必要以上に影響を及ぼしたり、言語の肥大化を招くよりはいいだろうってことだ。
お前さんは一体何と戦ってるんだい?
380デフォルトの名無しさん:2013/09/21(土) 03:33:04.21
>>379
いや、お前が何と戦っているのか知りたいんだが?
381デフォルトの名無しさん:2013/09/21(土) 03:33:31.76
プラグインがあるから標準いらないと言いたいのなら、意見の差はないだろう
382デフォルトの名無しさん:2013/09/21(土) 03:35:05.06
>>380
こっちはお前さんがよく分からんツッコミしてくるからその度に冷静に返してるだけだが?
383デフォルトの名無しさん:2013/09/21(土) 03:37:53.11
> Node.jsの雰囲気を丸ごと変えてしまう力もあるかも知れないし、
> FirefoxOSのアプリとか、これからの出るものに凄く影響を与えるに違いない

俺は最初から、これはありえないと言ってるだけですが?
Node.jsやFirefoxOSのアプリなどの実際の開発知らないでしょ?
384デフォルトの名無しさん:2013/09/21(土) 03:41:04.53
そこら辺は個人の感覚だろうからそこまでは否定しないよ。

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

これから5年も10年も仕様に入れるべきものなのかってこと。
385デフォルトの名無しさん:2013/09/21(土) 03:42:14.06
>>384
根拠は?
お前の妄想?
386デフォルトの名無しさん:2013/09/21(土) 03:51:40.78
ホント安易に考えてんなぁコイツ
387デフォルトの名無しさん:2013/09/21(土) 03:52:29.34
根拠というか懸念した理由は上でいくつか挙がってるけど、
もちろん自分が下手するとそうなりそうで怖いなと思っただけで、
標準に入ることで絶対に悪くなるとは言わない。

しかし、今更ES標準になったところで影響力は小さいという論には、今のところ納得出来ないな。
あると考えるのが基本なんだから、無いと思うのならもっと理論的に言って欲しい。
388デフォルトの名無しさん:2013/09/21(土) 03:58:25.22
> しかし、今更ES標準になったところで影響力は小さいという論には、今のところ納得出来ないな。

歴史が証明している。

ECMAScript 5が標準になってどんな影響があったか?
明らかに小さいだろう?
389デフォルトの名無しさん:2013/09/21(土) 04:00:26.96
あ、非JSerはお帰りください
390デフォルトの名無しさん:2013/09/21(土) 04:03:17.56
理論的な話ねぇ?

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

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

十分理論的ですね。
391デフォルトの名無しさん:2013/09/21(土) 04:03:22.79
お前らが最近プログラム系の板によく現れる荒らしに構ってる間にも
仕様はどんどん勧告へと近づいてきてる
https://twitter.com/BoazSender/status/381129573804417024/
392デフォルトの名無しさん:2013/09/21(土) 04:04:42.74
うん、、、もういいよ。
お前さんに分かってもらうのは諦めた。
393デフォルトの名無しさん:2013/09/21(土) 04:43:03.51
>>390が日本語読めない子なのは十分わかった

けど俺も標準に入れてもいいとは思うぞ
ただしC++11のoptional featureみたいな感じがベストじゃないか。すべての標準処理系がDOMを備えるべきだとは思えんし
394デフォルトの名無しさん:2013/09/21(土) 04:52:47.89
utilモジュールに入れてimportで取ってくる形ならいいけど、
グローバルにむき出しなら嫌だな
395デフォルトの名無しさん:2013/09/21(土) 05:02:38.84
ポイントは前倒ししてまでstrawmanをES6に入れるのかってとこじゃね?
入れるのなら今回のミーティングがラストチャンスだけど
ギリギリで間に合わせた感もあるしな
http://esdiscuss.org/topic/promises-final-steps

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

やっぱりいろいろとES6.1が必要なんじゃないかな
というかこの冬のラストコールに間に合うの?
396デフォルトの名無しさん:2013/09/21(土) 05:46:24.50
>>371,395
PromiseLoveなAnne van Kesterenっていう人が早く入れようとしてるように見える
397デフォルトの名無しさん:2013/09/21(土) 21:13:19.03
http://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
http://pointedears.de/scripts/test/es-matrix/

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

http://mozilla.6506.n7.nabble.com/Promises-final-steps-td290303.html
スレを眺めてるとES7とか文字が並んでるし議論してる人らは
ES6のことを念頭に置いて話てる訳ではないんでないの
398デフォルトの名無しさん:2013/09/21(土) 23:48:12.67
ミーティングに挙げる仕様を詰めてるだけでES6には入れようとしてないよ
今回はES7についても話し合われたからね
399デフォルトの名無しさん:2013/09/21(土) 23:59:44.55
読むとDOM PromiseのJS実装版じゃなくて、
もっと低レベルな感覚な実装なのね、いいかも。

でもこれ入れるんなら、
イベントという概念をもっとJSから扱えやすくなって欲しいな
そっちの方向の進化はかなり良さそう
400デフォルトの名無しさん:2013/09/22(日) 00:16:25.61
イベントはあまりに重要で各環境の事情を抱えた概念だから難しそう
イベントキューの操作くらいは一般化出来ないかな?
401デフォルトの名無しさん: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デフォルトの名無しさん:2013/09/27(金) 01:13:04.58
ECMAScript6に単純に型指定だけ出来て、静的型チェックしてくれれば最強なのに…
型指定以外は完全に一緒で良いんで、そういうプリプロセッサを誰か作ってくれないかな。
404デフォルトの名無しさん:2013/09/27(金) 01:54:42.52
あー、7のguardsがそれにあたるのか。7がリリースされるのっていつになるやら…
405デフォルトの名無しさん:2013/09/28(土) 07:44:14.08
406デフォルトの名無しさん:2013/10/04(金) 12:32:46.81
ES6ファミリーにPromiseが入ります。
おめでとう・・・・・・・・! おめでとう・・・・・・・・!
407デフォルトの名無しさん:2013/10/05(土) 18:32:39.18
ES7のdata_parallelismがFirefox 27 (Nightly) でデフォルトで有効になったようだ。
http://jsperf.com/array-intersection-filter-vs-for-loop/2
http://wiki.ecmascript.org/doku.php?id=strawman:data_parallelism
408デフォルトの名無しさん: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デフォルトの名無しさん:2013/10/13(日) 16:05:28.76
ES6概要
ただしこれでも仕様の半分程度
https://speakerdeck.com/simonenko/ecmascript-6-budushchieie-javascript
410デフォルトの名無しさん:2013/10/16(水) 01:04:25.93
asm.js、32bit浮動小数点演算、SIMD演算の現状と可能性について
http://kripken.github.io/mloc_emscripten_talk/sloop.html
411デフォルトの名無しさん:2013/10/19(土) 19:00:16.23
412デフォルトの名無しさん: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デフォルトの名無しさん:2013/10/24(木) 19:47:18.44
は? ISO規格に追随するのやめちゃったの?
C++11も翻訳しないみたいだし、JISCは馬鹿なの?死ぬの?
414デフォルトの名無しさん:2013/10/24(木) 20:16:16.20
本文は翻訳してないあのスタイルじゃあ、あっても無いのとたいして変わりなかったしなw
415デフォルトの名無しさん:2013/10/25(金) 01:44:56.49
つーか規格の和訳って必要ないよなぁ
どうせ原文にあたらなきゃならくなるんだから
416デフォルトの名無しさん:2013/10/25(金) 02:50:16.91
JISにすることで著作権フリーになるんだよ(適当)
417デフォルトの名無しさん:2013/10/25(金) 10:55:39.28
昔は日立とか東芝とか三菱とかが
主要言語のマイコンパイラ作ってたから、
社内技術者のために日本語訳が欲しいという要求があったけど、
今は業界からそういう要望もないのでしょう。
エコシステムとか言うんでしょ。
418デフォルトの名無しさん:2013/10/25(金) 15:38:22.47
>>416
なるなら大歓迎だわ。
ぜんぜんなんねーんだよ。
419デフォルトの名無しさん:2013/10/25(金) 16:29:14.50
エコシステム->生態系
420デフォルトの名無しさん: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デフォルトの名無しさん:2013/10/25(金) 16:56:58.44
JISの著作権は原案作成者とそれを規格化の過程において修正する工業調査会にあり、
公衆送信権は工業調査会が独占している。
422デフォルトの名無しさん:2013/10/25(金) 17:02:49.30
>>416
原文嫁
著作権は放棄しないって明記されてるぞ
423デフォルトの名無しさん:2013/10/25(金) 17:07:45.39
著作権は内国法優先だから、日本で規格の著作者やISOがどんなに著作権を主張しようと
著作権法の第13条第2号がある限り著作権が認められるはずがない……ってのが>>420のリンク先の主張でしょ
自分も法律を字義的に解釈すればそれであってると思うけど、これ以上は著作権スレに行ってやったほうがいいね
424デフォルトの名無しさん:2013/10/25(金) 17:31:57.94
規格書は告示、訓令、通達その他これらに類するものじゃないから。
「XXXという規格を制定した」これは告示、XXXの規格書本体は告示じゃない。
425デフォルトの名無しさん:2013/10/25(金) 18:01:00.17
>>424
だからその屁理屈はドイツじゃ通らなかったんだっつーの
426デフォルトの名無しさん:2013/10/25(金) 18:03:42.08
ドイツだけじゃない。アメリカでも国の策定する規格に著作権は認められなかった。

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

ドイツでは法文に従って判断すると著作権が認められないという判決が出たから著作権法改訂されたと、当のDQNのブログにある。
428デフォルトの名無しさん:2013/10/25(金) 19:13:55.99
天気の配信とか、役人の天下り先確保のために法令を整備してたでしょ。
それと同じなんじゃない?
429デフォルトの名無しさん:2013/10/25(金) 19:19:17.04
分かりやすく産業にすると
・ドイツやアメリカでは国家規格に著作権は認められなかった(現在は法を改正済)
・日本は現在ドイツやアメリカの法改正前と同じ状況
・改正しないとJISに著作権は認められない
・JISスレか著作権スレでやれ
430デフォルトの名無しさん:2013/10/25(金) 19:39:41.50
×・改正しないとJISに著作権は認められない
○・改正しないとJISに著作権は認められないとDQNは考えている、行政はそのように考えていない、司法が行政の不利になる判決を出すことは稀
431デフォルトの名無しさん:2013/10/25(金) 20:17:49.62
まあ、日本での前例もないみたいだし、これ以上水かけ論やりたいなら余所でね
432デフォルトの名無しさん:2013/10/26(土) 10:38:18.25
仕様の話をしようぜ
433デフォルトの名無しさん:2013/10/27(日) 20:35:34.71
ECMAScript Support Matrix
http://pointedears.de/scripts/test/es-matrix/

合間合間に実装の話もですね…
434デフォルトの名無しさん:2013/10/28(月) 09:40:22.02
話題出していっていいのよ
435デフォルトの名無しさん:2013/10/30(水) 21:43:23.98
ES7の機能で一番早く使えるようになるのはSIMDかもな
SMが来年中に実装しそうな勢いだし、何と言ってもV8が興味持ってる
影響範囲がほぼ無いしね
436デフォルトの名無しさん:2013/10/31(木) 01:05:58.42
double以外の数値型の演算をどうするかの話が詰まっていきそうだな
http://esdiscuss.org/topic/proposal-for-efficient-64-bit-arithmetic-without-value-objects
この様子だとES7は3年後くらいかもな
437デフォルトの名無しさん:2013/10/31(木) 01:11:49.51
今はもういつES7か?ってのに
こだわる必要はない気がする。
なぜなら順次実装されて言ってるから。
完成する前に使えるようになってる。
438デフォルトの名無しさん:2013/10/31(木) 01:35:06.64
とは言え勧告前のものはいくら実装されていても
いつケチが付いて仕様が変わるとも知れないからな
http://esdiscuss.org/topic/math-sign-vs-0
439デフォルトの名無しさん:2013/11/06(水) 10:03:34.97
http://html5experts.jp/cssradar/3176/
ここのServiceWorkerとAnimation-Proxy見ると、
ES7のdata parallelismとかが思い出されて
JSerがマルチスレッド処理を当たり前に書く時代もそう遠くないんだろうね
440デフォルトの名無しさん:2013/11/10(日) 04:10:55.98
>>439
データ並列からマルチスレッドには飛躍があるけどな。
441デフォルトの名無しさん:2013/11/10(日) 12:52:20.30
は?
マルチスレッド⊃並列だろうに
どこに飛躍が???
442デフォルトの名無しさん:2013/11/11(月) 14:42:38.63
ぴょーん!
443デフォルトの名無しさん:2013/11/13(水) 23:20:03.54
マルチスレッドでないデータ並列がSIMD
444デフォルトの名無しさん:2013/11/14(木) 10:57:15.41
SIMDはそもそも並列とか意識できなくね
445デフォルトの名無しさん:2013/11/14(木) 19:08:10.11
君はそうなのだろう。
446デフォルトの名無しさん:2013/11/14(木) 19:23:39.42
SIMDAPIを使っても必ずSIMD命令が使われるわけじゃないしあってると思うよ
447デフォルトの名無しさん: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デフォルトの名無しさん:2013/11/18(月) 21:00:01.72
いよいよ始まるというのにこの過疎りようは悲しい……
449デフォルトの名無しさん:2013/11/19(火) 19:24:22.27
今が一番盛り上がる時期なのにな
450デフォルトの名無しさん: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デフォルトの名無しさん:2013/11/20(水) 01:28:33.20
もしかしてプロキシと組み合わせればなんとかなる可能性が微レ存……?

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

with(makeSafeScope(obj)) {

}
452デフォルトの名無しさん: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デフォルトの名無しさん:2013/11/20(水) 03:22:46.52
with(obj) {
a = 1
}
ってした時にaがobj.aなのかそうでないのか分かりにくいってことだよ
454デフォルトの名無しさん:2013/11/20(水) 17:17:17.01
そう言えば今までブロック文中の関数宣言は非推奨だったけど
ES6からはブロックスコープになったんだよな

(function (){
"use strict"
if(1){
function a() {}
}
return typeof a
})() //"undefined"
455デフォルトの名無しさん: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デフォルトの名無しさん:2013/11/22(金) 02:38:13.10
やっと、ラストコールか。ちょっと停滞気味のRhinoフォークしてくる。
459デフォルトの名無しさん:2013/11/22(金) 03:00:22.47
え、Rhinoって使ってる人いるの?
460デフォルトの名無しさん:2013/11/22(金) 04:24:06.17
ググると結構あるぞ。むしろjavaだと他に何がある?
461デフォルトの名無しさん:2013/11/23(土) 08:45:11.30
つNashorn
462デフォルトの名無しさん:2013/11/24(日) 16:57:20.57
余計な記法増やして読みにくくするのやめてほしいわ
このスレ見ても結局
黒魔術が増えるだけなんだなES6って
463デフォルトの名無しさん:2013/11/25(月) 09:34:48.99
流れについていけない守旧派の極みだな
別にいいんだよ、IE6が理解できる範囲のJavascriptしか頭に入りませんってなら
464デフォルトの名無しさん:2013/12/01(日) 04:26:34.11
ES6は必要な進化だろうけど、そのうち黒魔術化するでしょ
LLJS/asm.js最適化しながら手書きできる人間なんて僅かしかいなくてコンパイラにjavascript吐かせる時代になるかもしれない
アセンブラやCやってた連中が復活するかもしれないけど
465デフォルトの名無しさん:2013/12/01(日) 10:59:57.81
Dartのことですね
466デフォルトの名無しさん:2013/12/03(火) 12:22:46.92
ES6が糞過ぎて猫様もお怒り

Hearing about ES6 modules - Node.js Reactions
http://nodejsreactions.tumblr.com/post/64587440442/hearing-about-es6-modules
467デフォルトの名無しさん:2013/12/03(火) 22:17:04.57
猫かわいい
468デフォルトの名無しさん:2013/12/12(木) 02:15:57.94
http://en.wikipedia.org/wiki/ECMAScript#Conformance_tests
ここの結果見るとIEが一番準拠しててFirefoxの準拠度がダントツ悪い
逆だと思ってたから意外だな
Firefoxは仕様が決まる前から先行実装してるっていうのがあるから
しょうがない面もあるかも
469デフォルトの名無しさん:2013/12/21(土) 19:49:07.41
ES6はCと違ってよくわからないって人がごねた結果だろ
470デフォルトの名無しさん: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デフォルトの名無しさん:2013/12/27(金) 00:10:24.18
10年前にFirefoxなんかあったっけ?
10年前だとIE以外は生まれてすらいない時代だと思うけど。
474デフォルトの名無しさん:2013/12/27(金) 00:13:04.22
>>473
でたらめを書かないでください。
Firefoxは10年前既にありました。
475デフォルトの名無しさん:2013/12/27(金) 00:15:25.39
あ、やっぱりなかったみたいだね。

http://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デフォルトの名無しさん:2013/12/27(金) 00:16:20.89
>>473
板違い
IEの話はドザ板でやれ
477デフォルトの名無しさん:2013/12/27(金) 00:19:58.37
>>475
Firefoxの最初のバージョンはフェニックスと呼ばれました。
ウィキペディアで調べてもわからないことはあるものです。

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

でも、ウィキペディアで調べて知ったかぶりをするのはもうやめたほうが良いかもしれませんね。
478デフォルトの名無しさん:2013/12/27(金) 00:20:55.81
間違えた。IEを持ちだしたのは>>472だった。
>>472は消えろ
479デフォルトの名無しさん:2013/12/27(金) 00:22:18.40
>>475
名前が変わったら別の製品だと思ったのか
恥ずかしすぎワロタ
480デフォルトの名無しさん:2013/12/27(金) 00:45:26.15
もうそろそろ興奮収まったかい?
481デフォルトの名無しさん:2013/12/27(金) 01:03:00.89
ワールドクラスの馬鹿を発見した興奮!
482デフォルトの名無しさん:2013/12/27(金) 01:05:50.54
まだだったか
483デフォルトの名無しさん:2013/12/27(金) 05:30:34.81
>>477>>479
全く読んでないから知らんけど、名前が違う頃のFirefox使ったデータならその頃の名前で書くんじゃねーの?
484デフォルトの名無しさん:2013/12/30(月) 16:38:13.73
>>472
>最新のIEと10年前のFirefoxを比較

どーゆー意味?
>>468に載ってるFirefoxのバージョンは26とNightly 29なんだけど
485デフォルトの名無しさん:2013/12/30(月) 19:17:26.11
>>468
mozilla.orgのJavascriptは独自仕様だよ。
ECMAScriptに入ってないのも独自の判断で仕様に入れて
Javascript 1.xと称している。
この場合のJavascriptはmozillaの商標。
一般的に言ってるJavascriptは標準規格のECMAScriptの通称。
そのうち独自仕様は辞めると思うが、
もともとJavascriptは彼ら(前身のNetscape社)のもの。
486デフォルトの名無しさん:2013/12/30(月) 19:33:25.23
困るんだよねー
ちゃんと規格としてかっちり決まってから実装始めてもらわないと
487デフォルトの名無しさん:2013/12/30(月) 23:27:24.32
しかし実装がないと規格も決まらないというジレンマ
488デフォルトの名無しさん:2013/12/31(火) 16:53:03.28
>>486
このスレの住民の言葉とは思えんな
Fxのお陰でどれだけ仕様が改善できて策定がスムーズに行ったことだか
特に構文レベルだと長いフィードバックが不可欠
それをFxがずっと前からやってくれたおかげで、
今のFxの独自実装が抱える多くの問題を踏まずにすんだ

ChromeにだってSymbolやPromiseやら先行実装たくさんあるし
これから先もSIMDやParallelやら先行実装が重要なものは沢山ある
489デフォルトの名無しさん:2013/12/31(火) 18:11:09.61
これからのJSって便利にもなるが厄介なことも増えるよな
例えばnewが要るかどうか
理屈としては継承のために@@createを呼び出させるべきかどうかなんだろうけど、
Mapなんかは付けないとエラー、Proxyやvalue object系には付けるとエラー、とか覚えるのが増えるね
490デフォルトの名無しさん:2014/01/01(水) 00:01:49.39
今年はES6の年です
皆さん祝いましょう!
491デフォルトの名無しさん:2014/01/01(水) 01:43:16.27
お断りします
492デフォルトの名無しさん:2014/01/01(水) 02:31:16.08
>>489
今でもフレームワークごとに違うじゃん。
493デフォルトの名無しさん:2014/01/01(水) 10:06:51.50
ビルドインオブジェクトの話でしょ
フレームワークはフレームワーク

まあ余談だけどユーザー側で作るAPIは基本的に
Class.initとかClass.create〜とかを提供する形にした方がいいと思うね
494デフォルトの名無しさん:2014/01/01(水) 10:19:14.82
ついにJSも世代が分かれて古い方はstaticおじさんと呼ばれるようになるに違いない
495デフォルトの名無しさん:2014/01/01(水) 12:44:58.45
ES6が糞過ぎるからしょうがないね
496デフォルトの名無しさん:2014/01/01(水) 14:35:09.29
そうか?物によっては10年もかけただけあって随分洗練されてると思うが
今でも微妙な問題は残ってるけど大山は全て乗り越えた感じだ
497デフォルトの名無しさん:2014/01/01(水) 14:44:38.39
おまえらArray.prototype.shuffleとか作ってないか?
そういうのは困るからArray.prototype._shuffleみたいにしろとさ
498デフォルトの名無しさん:2014/01/01(水) 14:56:37.99
ES6に足りないものは、
{obj1,obj2,obj3}.prop.{prop1,prop2,prop3}.prop = val
というシンタックス。あとはいい。
499デフォルトの名無しさん:2014/01/01(水) 15:03:07.14
イラネ
なんだその黒魔術
500デフォルトの名無しさん:2014/01/01(水) 15:21:41.51
これが黒魔術なら分割代入も黒魔術ということになってしまうな
501デフォルトの名無しさん: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デフォルトの名無しさん:2014/01/01(水) 15:49:11.00
はあ・・
JavaScript ES6 Bad Parts -分かりにくい悪手法-
という良書が出来るのが目に見えてる
503デフォルトの名無しさん: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デフォルトの名無しさん:2014/01/01(水) 21:58:18.62
みんなcoffeescriptからの流用なんだけどね
507デフォルトの名無しさん:2014/01/01(水) 22:56:47.56
いいえPythonやHaskellなんかからの導入です
CSも同じく
508デフォルトの名無しさん:2014/01/02(木) 08:45:45.32
他の言語からの取り入れを悪いことのように言う傾向が今年は滅びますように
509デフォルトの名無しさん:2014/01/02(木) 10:23:18.50
そんなのは見たことないな
510デフォルトの名無しさん:2014/01/02(木) 10:48:29.19
>>501
o['a', 'b', 'c'] = [1, 2, 3];
が既存の分割代入に近くていい気がする。
511デフォルトの名無しさん:2014/01/02(木) 14:05:42.56
プロパティの分割代入とか、プロトタイプ継承を理解していない証拠
512デフォルトの名無しさん:2014/01/02(木) 14:27:08.28
>>510
それは無理
o['a', 'b', 'c'] = [1, 2, 3];
は既に
o['c'] = [1, 2, 3];
と解釈されるから
513デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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メンバーにもそんなに好かれていない
http://wiki.ecmascript.org/doku.php?id=strawman:bind_operator
http://esdiscuss.org/topic/value-objects-roll-your-own#content-4
Trademarksはパターンマッチの為の機能として残るだろうが、今後型のための構文が採用されることはない

JSでどうしても型を明記したい場合は、a = b|0 や c = float32(d + e) のようにすることだね
そうじゃないのを望むならDartからでも変換すればいい
522デフォルトの名無しさん:2014/01/17(金) 10:11:32.27
静的型チェックっていうと大袈裟だったかもしれないけど、他人が書いた関数で
引き数に何を渡せばいいか分からない事ってないか?

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

しかしBrendan Eichがいらねってんなら望み薄だな…
bindはいいけど、guardsはTypeScriptと同じように:一個にすればいいんじゃね?
523デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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来たね
http://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のスライド面白いね。
http://www.slideshare.net/BrendanEich/value-objects2

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

awaitの情報も面白い。
https://github.com/lukehoban/ecmascript-asyncawait
Promiseが活躍してるね。
533デフォルトの名無しさん:2014/02/01(土) 01:35:24.81
単体doはPerlを思い出すな
534デフォルトの名無しさん:2014/02/03(月) 21:58:06.74
最近JSのマクロでsweet.jsが流行ってるけど、ES8のマクロはこれがベースになりそうな予感
535デフォルトの名無しさん:2014/02/03(月) 23:27:10.33
ES8って…鬼が笑いそうだな(節分だけに)
536デフォルトの名無しさん: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デフォルトの名無しさん: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に統合することになったんだけど、凄い揉めてる
http://esdiscuss.org/topic/promise-cast-and-promise-resolve

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

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

今後どうなるか注目
541デフォルトの名無しさん: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
http://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
とコードを最適化できるってこと?

それと、もしこうなったらなんかヤバイね
http://esdiscuss.org/topic/merging-bind-syntax-with-relationships
543デフォルトの名無しさん:2014/02/19(水) 19:12:47.88
CやC++もそうだけど、最新仕様にジワジワ対応してくのがいやだな
ベンダー中立なのも善し悪しだ
544デフォルトの名無しさん:2014/02/20(木) 00:50:48.29
es6のletも関数の先頭に巻き上がるの?
545デフォルトの名無しさん:2014/02/20(木) 06:13:15.91
let,constはブロックスコープで巻き上がらないよ
因みに関数宣言はブロックスコープで巻き上がる事になった
スコープに関してはこの2点を押さえとけばいい
546デフォルトの名無しさん:2014/02/20(木) 10:54:52.79
どうもどうも。
つうことはlet,constだけを使ってる限りは、C++と同じように使う直前で宣言する
っていうルールでいいわけだ
547デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2014/02/21(金) 10:47:15.29
変数の定義は出来る限り後にするってのはEffectiveC++にも書いてある事だし
let,constを使ってる限りはその習慣のままでよくなったって事でいいよ
551デフォルトの名無しさん:2014/02/25(火) 17:51:36.53
ES6ってEffectiveC++まで読まないと使いこなせないのか…
552デフォルトの名無しさん: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に摂りこぼしたようなメソッドが入ってくる
http://esdiscuss.org/topic/object-entries-object-values
まあこういうのは仮にES7になっても、すぐ実装される可能性が高いか

あと興味深かったのはASTならぬCSTについて
http://esdiscuss.org/topic/concrete-syntax-tree
これが標準APIとして入ると、最近2chでもよく耳にするJSのコード分析ツールが発達するだろうね
554デフォルトの名無しさん:2014/04/06(日) 10:34:50.10 ID:BAtZ8TGv
Microsoft、プログラミング言語“TypeScript”を正式リリース
ttp://www.forest.impress.co.jp/docs/news/20140403_642703.html
555デフォルトの名無しさん:2014/04/26(土) 00:52:27.92 ID:FOzpDrfL
しかし、letが使えない事が最もイラつく要因だな
これだけは間違いなく設計ミスと言わざるを得ない
はやいとこletが当たり前のように使えるようになってほしいよ
556デフォルトの名無しさん:2014/04/26(土) 04:17:27.66 ID:m4NkAp8y
Let it be.
557デフォルトの名無しさん:2014/04/26(土) 06:30:34.96 ID:IOWbf8hT
なんでそんなもんが要るのか理解に苦しむ
558デフォルトの名無しさん:2014/04/26(土) 07:34:51.39 ID:/1bv/NFj
letって糖衣構文だよね?
559デフォルトの名無しさん:2014/04/26(土) 09:05:12.45 ID:N/wOneBP
letをラムダ式で書くのは一般に可読性がすごく悪いので、letがラムダ式の糖衣構文であることは
間違いないけど、良い糖衣構文の典型例と言っていい。

おまけにJSのラムダ式は function とか無駄にキーワードも長いし(funcで十分ですお)。
560デフォルトの名無しさん:2014/04/26(土) 09:28:02.77 ID:dytsHLSj
そもそもムダ式の使いどころがわからないw
561デフォルトの名無しさん:2014/04/26(土) 10:45:40.07 ID:/1bv/NFj
(function って書きかたするだけで即時無名関数だってわかるし、可読性悪いと思わないな。
とはいえletは便利だと思う。
562デフォルトの名無しさん: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デフォルトの名無しさん:2014/04/27(日) 12:50:33.35 ID:dzdj67m/
var使えばいいじゃん
564デフォルトの名無しさん:2014/04/27(日) 16:49:18.92 ID:/n7QikUK
varか
565デフォルトの名無しさん:2014/04/27(日) 16:58:01.12 ID:ZSKa5kXO
バーカと言ってんのか。
566デフォルトの名無しさん:2014/04/28(月) 07:32:48.30 ID:pTdZCSXw
perlみたいにmyにすればvarより一文字タイプする手間が減って
人類全体ではおそらくのべ何百万時間と何百テラバイト節約できたのに。
567デフォルトの名無しさん:2014/04/28(月) 10:37:13.73 ID:nTejnWG/
そこでさらに1文字減らそうと考えないお前はとことん子供だな
568デフォルトの名無しさん:2014/04/28(月) 12:21:34.72 ID:6N4YFPM8
>>556
今なら let it go だな
569デフォルトの名無しさん: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デフォルトの名無しさん:2014/04/29(火) 21:23:55.12 ID:/EtEvdEl
JavaのJavaScriptが更新されたね
572デフォルトの名無しさん:2014/05/10(土) 00:26:41.76 ID:IHaPgo2n
ES6のイテレータってJava8のStreamAPIみたいなメソッド無いの?
573デフォルトの名無しさん:2014/05/29(木) 22:34:29.48 ID:fV0QO8N6
マイクロソフト、IEの新機能紹介サイト「status.modern.ie」を正式版に
http://www.atmarkit.co.jp/ait/articles/1405/29/news127.html
574デフォルトの名無しさん:2014/06/29(日) 11:40:45.08 ID:TYw9vhPY
The ECMAScript 6 schedule changes
http://www.2ality.com/2014/06/es6-schedule.html

ECMAScript 6 will be finished (with the exception of fixing last bugs) by the end of 2014.
The publication process starts in March 2015 (and is finished in June 2015).
575デフォルトの名無しさん:2014/07/01(火) 21:08:09.65 ID:Js6RRavd
>>571
Rhinoのことかと思ったが2年前から止まってるように見える
ナスポンか?と思ったが
取り立てて新しく何かが変わったとも思えない
ttps://blogs.oracle.com/nashorn_ja/

何の話?
576デフォルトの名無しさん:2014/07/03(木) 00:07:58.33 ID:vgh2JKeZ
JDKに標準添付されているJavaScriptエンジンがJDK7まではRhinoだったのがJDK8からはNashornになったという話じゃないかい
577デフォルトの名無しさん:2014/07/05(土) 00:02:39.57 ID:RY+GPlGn
なるほど
Java「標準・付属」のJavaScriptが更新, ってことね
578デフォルトの名無しさん:2014/07/05(土) 13:19:10.45 ID:ZUhQa0cg
letはwith使えば良いじゃん。

with( {i:0} )
{
}
579デフォルトの名無しさん:2014/07/05(土) 13:35:18.12 ID:ZUhQa0cg
ESはclassよりprototype方面を強化してほしいなぁ。

Echo = {};
Echo.print = function()
{
 println( this.message() );
}

Hello = Object.create( Echo );
Hello.message = function()
{
 return "Hello";
}

Hello.print();

Regexとか標準の型もこれと同じ方法で運用できると助かる。
580デフォルトの名無しさん:2014/07/12(土) 02:21:05.50 ID:+Nt4iEa/
これから262 vs 408の図になるのか?
581デフォルトの名無しさん:2014/07/12(土) 04:09:33.46 ID:CXwmpbMP
408ってなにかと思ったらDartか

あれ使ってる人ホントにいるの?
582デフォルトの名無しさん:2014/07/12(土) 13:42:14.74 ID:RL1PcgPd
IEの全盛期でも誰もVBScript使わなかったのに
当時のIEよりシェア低いChrome限定の言語とかww
583デフォルトの名無しさん:2014/07/12(土) 15:13:49.40 ID:uBkJb0ew
Dartω
584デフォルトの名無しさん:2014/07/17(木) 10:06:07.97 ID:7tNbJpr1
>>170は予言者
585デフォルトの名無しさん:2014/07/27(日) 12:13:05.86 ID:m/wrXxPd
arrow構文クソ過ぎワロタ
JSLintで使用禁止にされる未来が見える
586デフォルトの名無しさん:2014/07/27(日) 12:32:11.50 ID:yFRKgWmm
そんなこと言ってたらLISP以外使えなくなるぞ
どこらへんがクソなのか言ってみ
587デフォルトの名無しさん:2014/07/27(日) 22:59:24.24 ID:xFZZEEcS
>>585じゃないけどthisArgを固定されるのひどいと思う。
definePropertiesで省略できないじゃん。
588デフォルトの名無しさん:2014/07/27(日) 23:43:52.05 ID:aHU39MPO
それはメソッドの省略記法使えばいいんじゃ
Object.defineProperties(obj, {
abc: {
get() { /* ~~~ */ },
set(a) { /* ~~~ */ }
},
def: {
value() { /* ~~~ */ }
}
});
589デフォルトの名無しさん:2014/07/28(月) 08:50:19.14 ID:Z2TAycCm
基本的に無名関数定義にをfunction使う必要がなくなったという認識。
イベントハンドラとかで、elementをthisにしたいときくらいかな
590デフォルトの名無しさん:2014/07/28(月) 10:54:21.25 ID:7aaFLr4N
Firefox のアドオンですでに結構使ってるけど、
主なユースケースとしては >>589 のいうように
Array#forEach とか Promise, EventListener などの無名関数だから
this が束縛されることに対する不便さは特に感じてないな
591デフォルトの名無しさん:2014/07/28(月) 11:02:29.21 ID:/uFLkIvt
arrowになって普通のスクリプト言語と同じになったのに、糞という奴は
相当今までのJavaScriptに毒されてんだろうな
そろそろ20年にもなる訳だから無理もないが
592デフォルトの名無しさん:2014/07/28(月) 16:18:42.27 ID:CzzJnkp5
何故、無名関数定義にfunctionを使いたくないのかが分からない。
こうやって迷走させてDartとかに移行させるつもりなんだろうと思うわ。
593デフォルトの名無しさん:2014/07/28(月) 18:48:36.54 ID:AsP8OCCj
ES6以前からMozillaの独自拡張でfunctionの{}省略ってのができたのだから、
関数自体を短く書きたいという要求は多かったのでは?
コールバックを多用するライブラリの作り上の特性も関係してると思う
594デフォルトの名無しさん:2014/07/28(月) 22:40:27.98 ID:4c7kN4U6
funcぐらいなら毎回書いてもいいけどfunctionだと長すぎるかなー

てかJavaのラムダ式もこんな構文だし、まあ流行りってことで
595デフォルトの名無しさん:2014/07/28(月) 22:43:19.97 ID:vVN/YTut
正直、短縮した "func" をキーワードにするだけで済む話だと思うのだが、
なんでこんなすったもんだするのか。
596デフォルトの名無しさん:2014/07/28(月) 23:23:23.43 ID:3v5nU99l
何がすったもんだなのか全くわからん
C#勉強した方がいいぞ
arrowはほぼ一緒だし恥ずかしい事を言わずに済むよ
597デフォルトの名無しさん:2014/07/28(月) 23:49:08.00 ID:oo2p7jTV
もうLispで良いじゃんとしか思えん >>省略記法とか糖衣構文にまつわるゴタゴタ
598デフォルトの名無しさん:2014/07/29(火) 01:28:07.02 ID:s+4NszZe
>>595
キーワード追加は既存コードとの衝突があるし、
funcとか山ほど使われてるから大変なんだろう。
C++のautoとかは新キーワードかとおもいきやCの頃から存在してたが、
全く使われて居ない無意味なキーワードの再利用だから衝突しなかった。
599デフォルトの名無しさん:2014/07/29(火) 08:12:11.87 ID:NiL3O2Wx
ファンクチョン
600デフォルトの名無しさん:2014/07/29(火) 10:24:48.27 ID:M1sSUXRJ
> C#勉強した方がいいぞ
> arrowはほぼ一緒だし恥ずかしい事を言わずに済むよ

は?
601デフォルトの名無しさん:2014/07/29(火) 23:01:25.64 ID:qMXADwlE
ふ?
602デフォルトの名無しさん:2014/07/31(木) 00:16:35.92 ID:kd/b1mjX
ほ?
603デフォルトの名無しさん:2014/07/31(木) 00:33:13.13 ID:RAmyBjAf
ふ?
604デフォルトの名無しさん:2014/07/31(木) 00:40:15.05 ID:ZI3BLt96
>>603
そこは、「サッポロ一番カップスター!!!♪」だろう
605デフォルトの名無しさん:2014/07/31(木) 02:17:14.31 ID:8j73UATf
イベントハンドラとかでthisが変動するのって重要じゃないか。es6なんだからmoduleもthis変わるだろ?
そのとき実装が省略してarrow function使ったら仕様に出ないから分からずにthis固定されることになるじゃん。
その関数を使ったときcall/bindが期待通りに動かなくてソース読んで初めて判明することなるのは問題じゃない?
そもそも>>592の言うとおりes6が迷走し過ぎだと思う。

>>591
クロージャを()=>{}と書くのはsmalltalk系の流れだから現在は全くメジャーじゃない。変種のRubyのblockのほうが知られてるくらいじゃん。
javaなんて元はStrongTalkだから先祖返りじゃん。大体expression closuresはその20年くらい前からあるんだよ。
関数省略したいってのはその頃からある話でMSがjs2.0ゴネたから実装がjs1.8まで遅れたんじゃん。restとspreadだって同じでNSはずっとArgumentsオブジェクト止めたかったんだし。

>>592
DartかTypeScriptか忘れたけどthis固定する方法としない方法両方用意してるからそっちの方が優れてるよ。
606デフォルトの名無しさん:2014/07/31(木) 13:35:25.30 ID:fRARZe7S
他の言語に慣れた人が「thisがころころ変わるのはキモイ」とかってごねたから
arrowのthisは今の仕様になったんじゃないの? 知らんけど
607デフォルトの名無しさん:2014/07/31(木) 15:07:00.69 ID:/YLgyhx6
NYscene
608デフォルトの名無しさん:2014/07/31(木) 20:33:42.33 ID:d+uDxDT2
>>605
> クロージャを()=>{}と書くのはsmalltalk系の流れだから現在は全くメジャーじゃない。
C#と一緒だからそれで十分だし、メジャーとかマイナーとか関係無い
609デフォルトの名無しさん:2014/08/04(月) 23:13:41.46 ID:ht676QO2
C#C#C#…馬鹿みたい
610デフォルトの名無しさん:2014/08/05(火) 21:41:16.61 ID:pnN0YhcC
世界一実用性のある言語だから仕方ないね
611デフォルトの名無しさん:2014/09/10(水) 10:38:50.98 ID:DN733PzP
JavaScriptでは関数もオブジェクトだから Function instanceof Object がtrue
でもObjectは関数だから Object instanceof Function もtrue
何このループ
612デフォルトの名無しさん:2014/09/10(水) 12:05:50.10 ID:oRU1JGkH
>>611
型とコンストラクタをごっちゃにしてどうすんだ。
> Function instanceof Object → true
> Object instanceof Function → true
> new Function instanceof Object → true
> new Object instanceof Function → false
で、
> (function(Type){return Type instanceof Type}(function(){})) → false
> (function(Type){return new Type instanceof Type}(function(){})) → true
613デフォルトの名無しさん:2014/09/10(水) 12:07:06.10 ID:oRU1JGkH
ラストのわかりにくかったかもしれんので追加
> Array instanceof Array → false
> new Array instanceof Array → true
614デフォルトの名無しさん:2014/09/10(水) 14:10:06.44 ID:5+X1+3dM
typeof Function → function
typeof Object → function

要するに Object はコンストラクタ(関数)でもあり、全てのオブジェクトの親でもあるから

Function instanceof Object → 全てのオブジェクトは Object の派生であるから true
Object instanceof Function → Object は関数でもあるから true

だな
615デフォルトの名無しさん:2014/09/11(木) 05:50:12.08 ID:p9H2bXgo
> Object は関数でもあるから
「Object はObjectという型のコンストラクタ(関数)だから」と言った方が誤解を招かなくて済むと思うのだけど。
616デフォルトの名無しさん:2014/09/11(木) 07:38:07.18 ID:BpRRpzGv
関数が Object
617デフォルトの名無しさん:2014/09/16(火) 00:45:05.57 ID:/hQMl/mi
普通 Object は class なはずだけど JavaScript は関数からオブジェクトを作成するってのが
ヘンテコなところでもある
ES6だと class の定義が出来るけど、それを typeof したら何になるんだろうか?
やっぱり function か
618デフォルトの名無しさん:2014/09/16(火) 05:56:23.72 ID:YhDmcrUx
ES6のclassはただの糖衣構文だよ
619デフォルトの名無しさん:2014/09/16(火) 08:23:52.39 ID:3lalmZe4
>>617
classと型は別定義
仕様を読め
620デフォルトの名無しさん:2014/09/16(火) 08:43:08.49 ID:/hQMl/mi
>>619
だから function でしょ
621デフォルトの名無しさん:2014/09/16(火) 08:51:39.75 ID:Qx/STD8f
>>620
function という型はない
だから、仕様を読めといってる
622デフォルトの名無しさん:2014/09/16(火) 12:50:37.70 ID:LFHVwXSY
>>621
だから typeof した結果を聞いてんだよ日本語読めないのか?
623デフォルトの名無しさん:2014/09/16(火) 13:59:20.29 ID:SSFY5Y3Q
>>622
classを設定して型が変わったり、[[Call]] が付与されるわけないだろ
624デフォルトの名無しさん:2014/09/16(火) 14:11:22.37 ID:SSFY5Y3Q
625デフォルトの名無しさん:2014/09/16(火) 14:54:14.12 ID:LFHVwXSY
>>623
>>617
> ES6だと class の定義が出来るけど、それを typeof したら何になるんだろうか?
> やっぱり function か
と聞いてんだぞ
何トンチキな事さっきから言ってんの?
お前が仕様以前に日本語読めてねーじゃん
626デフォルトの名無しさん:2014/10/06(月) 21:47:17.31 ID:lTjGjScZ
ECMAScript 6モジュールがCommandJS,AMDを超える
http://www.infoq.com/jp/news/2014/10/ecmascript6
627デフォルトの名無しさん:2014/10/07(火) 11:54:16.18 ID:IxqWsXRE
AMDとは一体…うごご
628デフォルトの名無しさん:2014/10/26(日) 02:25:31.76 ID:cck0wHu4
まともなこと言ってんのは>>612だけってどうなん。

rev 28-12.5.6.1-5.
Return a String according to Table 36.

Table 36 ― typeof Operator Results
Object (implements [[Call]]) "function"

だからclass defのtypeofの結果は"function"であってるよ。

js> class A{}
js> typeof A
"function"
js> Object.prototype.toString.call(A)
"[object Function]"
js> Symbol.toStringTag in A.prototype
false

>>626
moduleはいいけどこれ勘弁してほしいわ。
>Changed ordinary object creation to dispatch object allocation through [[CreateAction]] internal slot instead of @@create method.
>Converted all @@create methods into CreateAction abstract operations.
>Eliminated Symbol.create and @@create.
629デフォルトの名無しさん:2014/10/26(日) 03:54:53.83 ID:4WZSXNcL
>だからclass defのtypeofの結果は"function"であってるよ

んなこたみんなわかってる。
>>619が日本語読めないだけ。
630デフォルトの名無しさん:2014/10/27(月) 12:10:16.79 ID:qnYU7yPZ
>>628
> js> class A{}
> js> typeof A
> "function"
これってどんな環境で確認したの?
631デフォルトの名無しさん:2014/10/27(月) 12:41:27.17 ID:2WnnLMYe
説明無しにオナニー披露してんだから
ふれちゃだめ
632デフォルトの名無しさん:2014/10/28(火) 00:48:41.70 ID:l8UbZ1qe
>>630
ttps://github.com/anba/es6draft

実装で確認しなくても14.5.14 Runtime Semantics: ClassDefinitionEvaluationのconstructorParentが%FunctionPrototype%なんだから分かるだろ。
633デフォルトの名無しさん:2014/10/28(火) 11:13:32.92 ID:FzOeccCw
>>632
これか
いやclassの型とかもはやどうでもよくて、単に実行環境を知りたかっただけ
こういうのをサクっと作っちゃうのはスゲーな
しかもガイジンにしちゃソースの可読性がハンパなくいいな…
634デフォルトの名無しさん:2014/10/29(水) 00:29:46.52 ID:UnaJRfaO
anbaってHN見て知らないなら開発者じゃないな。
635デフォルトの名無しさん:2014/10/29(水) 11:22:25.04 ID:GiyQXeuL
開発者だが全然知らん
636デフォルトの名無しさん:2014/10/29(水) 15:58:32.15 ID:UGMr0/mG
でたー通気取り
637デフォルトの名無しさん:2014/10/29(水) 19:18:31.93 ID:aEUBjZdG
>>633
> しかもガイジンにしちゃソースの可読性がハンパなくいいな…
これは偏見
638デフォルトの名無しさん:2014/10/29(水) 20:57:04.63 ID:GiyQXeuL
>>637
いやもちろん単なる主観でしかないが、こないだもOpenSSLのソースは猿が書いてるとか
言われてたし、メジャーなオプソでも意外と可読性気にせずガリガリ書いちゃってるのは
あるにはある
639デフォルトの名無しさん:2014/10/29(水) 21:17:27.14 ID:LJBpagLw
可読性どころか
ループできるところをループせずにコピペの塊だったりする
640デフォルトの名無しさん:2014/10/29(水) 22:00:42.11 ID:gF0+F/K+
>>638
jQuery作者とかCrockfordとかソースの可読性に気を使っているガイジンはたくさんいるんだが
Googleだってアメリカの会社だ
日本人のコードが特別優れているようには思えない
641デフォルトの名無しさん:2014/10/30(木) 00:42:17.78 ID:GWxr5Wfx
たしかに外人は文字列周りとかやたらhard-wiredなコーディングしてたりするけど
OpenSSLは古いし報告済みの脆弱性が放置されてるからあれを基準にしちゃダメだろ。
それこそ猿が書いたコードと人間が書いたコード一緒にするなよ。
642デフォルトの名無しさん:2014/10/30(木) 02:02:24.47 ID:4GsvotLh
>>641
猿が書いたって単なる比喩なのに、人間書いたコードと一緒するなとか意味不明
643デフォルトの名無しさん:2014/10/30(木) 13:22:00.04 ID:NixeW727
そもそも日本人は可読性に優れたコードを書くというソースはどこ?
644デフォルトの名無しさん:2014/10/30(木) 14:19:18.20 ID:cKYS02DZ
最長不倒関数でググれ
645デフォルトの名無しさん:2014/10/30(木) 19:07:37.96 ID:CaPdDXNn
>>642
馬鹿だろお前
646デフォルトの名無しさん:2014/10/30(木) 21:26:41.19 ID:X7YwtfwB
>>645
顔真っ赤w
647デフォルトの名無しさん:2014/10/31(金) 07:03:48.45 ID:PyU9LtcS
>>643
クソみたいなコーディングルールでガチガチに縛るのを横行させた実績はある。

………………策定した奴らにとってはあれが可読性に優れたコードなんだよ!
648デフォルトの名無しさん:2014/10/31(金) 17:48:27.50 ID:a4e/cHmb
コーディングルールでガチガチに縛るのは海外も変わらんよ。
違うのは海外勢はガキの頃からcomputer geekでコード書いてるのが当たり前でそういう連中はちゃんとしたコード書けるってことだけだ。
649デフォルトの名無しさん:2014/10/31(金) 21:30:43.56 ID:ztUoI9Xi
頭のおかしいルールがまかり通る、とかの実質で比較しなきゃ空論以前だな。
650デフォルトの名無しさん:2014/10/31(金) 22:55:01.00 ID:ujQGPjLm
ジャンガリアンの悪口早めろ
651デフォルトの名無しさん:2014/10/31(金) 23:16:47.41 ID:ZqadJ9Dt
スレ違いどころか板違いだな woo
652デフォルトの名無しさん:2014/11/01(土) 15:34:42.75 ID:D3G7iSJM
ハンガリアンは元々暗号めいてるC言語の型の表記方法に加えて、さらにややこしくnearとか
farが付くというマジキチなMS-DOSやWin16のC言語では意味がある。
あとシステムハンガリアンとアプリケーションハンガリアンはちゃんと区別しような。
653デフォルトの名無しさん:2014/11/01(土) 15:37:55.94 ID:Wy2Pqs6J
システムハンガリアンで役に立つのってポインタを表すpくらいじゃねぇの?
アプリケーションハンガリアンはwebアプリだと汚染の伝達が見て解るから凄く好きだが。
654デフォルトの名無しさん:2014/11/01(土) 18:45:04.77 ID:sM88bUQL
ミトコンドリア化
655デフォルトの名無しさん:2014/11/03(月) 12:41:43.96 ID:G+HpWTk6
V8にClass構文が実装された
ttp://js-next.hatenablog.com/entry/2014/11/01/034607
明日には使えなくなるES7トーク
http://azu.github.io/slide/es6talks/
656デフォルトの名無しさん:2014/12/23(火) 19:57:35.63 ID:aN/aWLOo
PromiseにNotifyのような継続したメッセージング機能がないのなんでだろ
jQueryから離れらんないじゃん
657デフォルトの名無しさん:2014/12/23(火) 22:28:18.80 ID:7XMi2k1J
それstreamで
658デフォルトの名無しさん:2014/12/23(火) 22:45:20.05 ID:fSPsfgoT
それECMAの仕様に入ってる?
659デフォルトの名無しさん:2015/02/02(月) 17:49:21.74 ID:8JTprJa1
亀だがwhatwgで仕様策定中
とりまとめはpromiseと同じ人
https://streams.spec.whatwg.org
660デフォルトの名無しさん:2015/02/11(水) 22:22:49.29 ID:uYJNlxq3
WHATWG(笑)
ブラウザの事しか考えてないゴミじゃねーか
661デフォルトの名無しさん:2015/02/13(金) 01:17:00.69 ID:Mf2kmdAI
メッセージングとかそこらへんはhost側でやればいいじゃん。
アーキテクチャ毎に最適解が違うしシングルスレッドかマルチスレッドかでそのアーキテクチャも変わるでしょ。
asyncとかPromiseみたいなどうでもいいもんを仕様に入れようとする今の流れがおかしい。
>>660の言う通りブラウザのことしか考えてない。
662デフォルトの名無しさん:2015/02/13(金) 01:38:32.09 ID:pVjZSa7s
node全否定?
663デフォルトの名無しさん:2015/02/13(金) 08:42:57.87 ID:OQXQ5SVC
>>661
ほんそれ
664デフォルトの名無しさん:2015/02/13(金) 14:14:34.12 ID:Vaa+aRRv
jQueryから離れらんない人(>656)がブラウザ依存を嫌う理由がわからん
665デフォルトの名無しさん:2015/02/13(金) 14:41:09.78 ID:FzPhDDc+
その前になぜ同一人物だと思ったのか
666デフォルトの名無しさん:2015/02/13(金) 16:00:33.10 ID:yMUA5bk4
promiseもstreamもサーバサイド発なのになぜブラウザのことしか考えてないことになるのか?
667デフォルトの名無しさん:2015/02/14(土) 22:58:03.71 ID:Vw0/10WS
promiseはjQuery.Deferredじゃないか?
そもそもfutureとpromiseは並列プログラミング一般のデザインパターンだろ。
javaも標準でconcurrentフレームワークにfutureがある。
668デフォルトの名無しさん:2015/02/15(日) 00:36:37.08 ID:Hyp4I7Sf
ES6のPromiseは直接的にはサーバサイドJSの標準化をしていたCommonJSのPromise/A+仕様が元
669デフォルトの名無しさん:2015/02/15(日) 00:42:21.54 ID:S4JnhDwu
jQuery が元になった仕様は Selectors API ぐらいかな
670デフォルトの名無しさん