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


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

ECMAScript デス 4



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

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


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

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

548 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 20:11:08.24 ]
'use strict';
var a = 1;
function hoge() {
// ↓グローバル変数にアクセスするつもり
console.log(a); // => undefined (巻き上げの為)
var a = 2;
// aを使う処理
};
--------
let a = 1;
function hoge() {
// ↓グローバル変数にアクセスするつもり
console.log(a); // => 1 (のはず未確認)
let a = 2;
// aを使う処理
};

と直感的になるから使う直前で宣言するで問題無いよ

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

570 名前:デフォルトの名無しさん [2014/04/29(火) 20:33:54.13 ID:pZyrXbny]
class構文書く時@@createとconstructorの役割の割り振りが難しそうだな
Arrayとか標準クラスを参考にすると@@create()ではそのクラスのインスタンスたり得る未初期化のオブジェクトを構築する
つまり例えばArrayならlengthや自然数がハックされた(Proxy)オブジェクトを作り、prototypeの継承もここでする
この時点で、obj.isClass()はtrueになるべきだが、まだオブジェクトが使える状態であってはいけない

その次にconstructor()で、this.isClass()がtrueならば実際の初期化を行い、使える状態にする
this.isClassがfalseまたは、初期化済みのインスタンスが渡された場合はエラーにする
逆にconstructorでオブジェクトをそのクラスのインスタンスたらしめる処理を行ってはいけない
例えば、内部的に使用するプロパティを新しく作成してはいけない
内部プロパティは@@create()でundefinedの値を入れて作っておき、constructor()ではそこに入れるだけにする

これを常に守っているクラス間では、多重継承や多重継承元オブジェクトの作成など柔軟性の高さを確保しつつ、安全なクラスシステムが定義できる
一方自由が好きな人でも、@@createを使いこなすことで自分好みのクラスシステムを再定義できる
例えば〜.prototype.〜は長いから〜.$.〜にしようとかも超容易にできる

571 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 21:23:55.12 ID:/EtEvdEl]
JavaのJavaScriptが更新されたね

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

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






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

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

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