+ JavaScript(ECMAScript)質問用スレッド vol.122 + [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2016/08/29(月) 01:23:24.09ID:MUTWRWKoトランスパイラなどの関連技術の話題も取り扱うように変わりました。
ECMAScriptの言語仕様の話題。最新ECMAScriptによるモダンな書き方、Promiseやasync/awaitを
使った非同期プログラミング。ES2015、2016、2017等の最新ECMAScriptをブラウザで今すぐ使う方法、
ビルド環境やbowerやnodeのパッケージを使う方法等、モダンなJavaScript環境についての幅広い話をしましょう。
ECMAScript対応実行環境一覧(ブラウザやbabelを含む)
http://kangax.github.io/compat-table/es5/
http://kangax.github.io/compat-table/es6/ (= es2015)
http://kangax.github.io/compat-table/es2016plus/
http://kangax.github.io/compat-table/esnext/
JavaScriptとは?
もともとMozillaの前身のNetscapeが作った言語であり本来のJavaScriptはFirefoxの実装のみです。
JavaScriptの正式な仕様名はECMAScriptです。ですが一般に使われているとおり
ChromeやEdgeで使う言語もJavaScriptとしてこのスレでは扱います。
Firefox等のJavaScript実装は最新のECMAScriptに準拠しています。
※DOMはブラウザが提供しているものでありJavaScript(ECMAScript)の範囲外です。
なのでDOMを使ったプログラミングは原則としてこのスレの対象外です。
DOMはwindowオブジェクト(ブラウザのホストオブジェクト)経由で
参照するもので、window自体、window.document、window.Workerなどです。
これに関する話題はWeb制作板の下記のスレに移動してください。
+ JavaScript & jQuery 質問用スレッド vol.7 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/hp/1467906819/
+ JavaScript の質問用スレッド vol.130 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/hp/1463395557/
前スレ + JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1468158373/
0052デフォルトの名無しさん
2016/08/29(月) 23:20:28.64ID:1MLmR57m> 同じテストなら金掛からんの?
> 全く動作変わらないの?
お前何のためにテスト書いてるんだよw
中身が変わっても(改修を行っても)正しく動くことを
証明するためにテスト書いてるんだろw
違うわw
改修しても、正しく動く事を目的にテストしとんのだ。
誰のなんのどの金使うんだよそれに。
0055デフォルトの名無しさん
2016/08/29(月) 23:22:14.47ID:1MLmR57mお前IE使ってるんだよな?
IEのソースコード見れないよな?
それでテストしてるんだろ?
中身が見れなくてもテストしてるんだろ?
それと同じなんだが。テストって言うのは中身の実装に対してやるもんじゃないんだよ。
中身がどうであれテストの内容は同じものになる。
だから、お前がいう
誰がどうテスト結果を研修して〜の内容も
babelを使ったときと使わないときで何も変わらない。
0056デフォルトの名無しさん
2016/08/29(月) 23:22:46.60ID:BFY9f7LW0057デフォルトの名無しさん
2016/08/29(月) 23:23:18.10ID:1MLmR57m> 改修しても、正しく動く事を目的にテストしとんのだ。
改修しても正しく動くことを目的とした
テストが自動化されてるんだろ?
じゃあ、中身をどう変えたところで
テスト内容は何も変わらんだろ。
0058デフォルトの名無しさん
2016/08/29(月) 23:25:37.41ID:BFY9f7LWあの誰も読まないテスト項目書に丸付けたあと適当にモンキーテストするやつ?
それともたまにしか通らないバグコードを増やすだけのUnitTest?
0059デフォルトの名無しさん
2016/08/29(月) 23:28:55.81ID:1MLmR57mユニット(単体)テスト+結合テスト+統合テスト
困ったことにこれらの用語と意味する内容は
会社ごとに微妙に違う。
これらすべてが自動化されていることが理想。
特にウェブアプリは、一般的にブラウザもOSも
バージョンが頻繁に上がるから、自動化されてないとやっていけない。
ここまではbabel導入とは関係ない話な。
で、自動化されてるならば、babel導入しても
テストは変わらないんだからコストも変わらんという話をしてうr。
だから、
babelのバージョン上げる、babelでどうの、が全部要らなくなるよな。使わなければ。
使わないときと使ったときでは明らかに違うじゃん。
babelのバージョン上がったからテスト、が一切無いんだし。
babelのバージョン上げねばならん、も一切無い。
文化オリエントに依存して死んでった会社みたい。
>>57
「改修しても」な。要望出した客か、不具合出した会社の「改修」が金出すわな。保守費からの間接か、スポット契約ならなおさら。
babelのテスト〜納品、検収。
これ誰の持ちだし?
0061デフォルトの名無しさん
2016/08/29(月) 23:30:14.67ID:1MLmR57m> 使わないときと使ったときでは明らかに違うじゃん。
babelを使ったときと使わないときでテストの内容は変わらん。
何を言ってるんだ?
お前はどんなテストを書いてるんだ?
それがどう変わるのか言ってみろよ。
ちなみに、IEがどうのというが、契約次第だよ。
テストの内容じゃなくて、テストの意味と金。
0064デフォルトの名無しさん
2016/08/29(月) 23:31:23.80ID:1MLmR57m意味が全くわからん。
その理屈だとブラウザのバージョンが上がったらからテストだって一切ないよな?
続き書いてんのに、自分が理解できない事が出てきたら読めなくなる病気にでもかかってんのかな。
は?
babelのバージョン上がったからテスト、がなんで無いと思う?
使ってないからだよ。
0067デフォルトの名無しさん
2016/08/29(月) 23:33:10.79ID:1MLmR57mお前が言ってるテストって何のテストをしてるんだ?
普通は単体テストであれば、
関数に引数を与えて答えがちゃんと帰ってくるかなんだが、
そこに関数の中身がどうなってようが関係ないだろ。
単体テストじゃないならばもっと関数は関係ない。
アプリの動作が全く同じならば、中身が何で作られてようが
全く関係ない。
0068デフォルトの名無しさん
2016/08/29(月) 23:33:38.78ID:BFY9f7LWJavaScriptのバージョンが上がったらどうすんの?
総合テスト。
関係あるから言ってんじゃん。
0070デフォルトの名無しさん
2016/08/29(月) 23:34:21.71ID:BFY9f7LWでもbabelで作ってたらbabelのためにbabelのテストしないとだよね?
0071デフォルトの名無しさん
2016/08/29(月) 23:34:37.44ID:1MLmR57mお前が言ってる内容は
お前にしか通じんわw
だから他の人に聞く
> babelのバージョン上がったからテスト、がなんで無いと思う?
これの意味を説明してくれ(もし理解できる人がいるならばだ)
どうせ誰も説明できないさw
それこそ意味不明である証拠だからね。
上げない。
上げるときは、予算とってやるよ。
0073デフォルトの名無しさん
2016/08/29(月) 23:35:11.30ID:1MLmR57m> でもbabelで作ってたらbabelのためにbabelのテストしないとだよね?
いらない。というかそのテストの一例を書いてみてくれ。
0074デフォルトの名無しさん
2016/08/29(月) 23:35:45.37ID:BFY9f7LWそのテスト自動化されてる環境が、
今の日本にどれだけあると思ってるの?
0075デフォルトの名無しさん
2016/08/29(月) 23:36:18.74ID:1MLmR57m予算取るのかよ(爆笑)
0076デフォルトの名無しさん
2016/08/29(月) 23:36:37.95ID:BFY9f7LWじゃあおまえPHP使ってないだろうけど今すぐPHPのテストしてこいよ
0077デフォルトの名無しさん
2016/08/29(月) 23:36:49.46ID:1MLmR57m自動化されてないならば、
どうやってブラウザがバージョンアップしたときの
テストをしているのか教えてくれ。
0078デフォルトの名無しさん
2016/08/29(月) 23:36:58.58ID:BFY9f7LW銭ゲバSE
泥棒
次の行に書いてんのになぁ。
あるネジのあるロットに不備があるから、そのネジ使ってる製品全部リコール、
の、リコール対象って、ネジ使ってる製品だけじゃん。
0080デフォルトの名無しさん
2016/08/29(月) 23:38:08.25ID:BFY9f7LWみんなで手と手を取り合って愛と根性でテストするんだよ
日本の伝統文化だよ、ゲイシャフジヤマニンゲツ
0081デフォルトの名無しさん
2016/08/29(月) 23:38:36.70ID:BFY9f7LW誰の金で飯食えてると思ってるんだ、クソニートが
0082デフォルトの名無しさん
2016/08/29(月) 23:38:38.48ID:1MLmR57mなら、そのぽちぽちとやる人海戦術のテストの前に
babelを導入すれば、テストは一回ですみますよねw
0083デフォルトの名無しさん
2016/08/29(月) 23:39:55.78ID:BFY9f7LWバベルのバージョンが上がったらどうすんの?
0085デフォルトの名無しさん
2016/08/29(月) 23:41:35.61ID:BFY9f7LW跋扈の範囲内なのに・・・
0086デフォルトの名無しさん
2016/08/29(月) 23:42:40.99ID:BFY9f7LWNo 内容 期待値
1 テストデータを用意する。 正常に購入完了できること。
はいどうぞ
最悪のテスト。
テストに「正常」と言う言葉を使って、「正常となる」とテストすんなバカ。
何がどう正常かを定義してその通りだと確認すんのがテストだよ。
0088デフォルトの名無しさん
2016/08/29(月) 23:47:42.65ID:BFY9f7LWそろそろ寝る時間だよ
明日は交通機関が止まる可能性があるんだから1h前に家を出るんだよ
台風程度で遅刻する社会不適合者のゴミ屑は上司のウンコ喰って死ぬのが
この国の伝統文化だからね
0089デフォルトの名無しさん
2016/08/29(月) 23:49:15.00ID:BFY9f7LW自分で考えろ、ガキじゃないんだから
適切なデータを用意して、正常に動作することを保証するんだよ
行間を嫁って小学校の国語の授業で習わなかったのか?
そんなの上司に質問したら張り手もんだぞ
さすがに1hくらい時差出勤しなよ…
コアタイムには間に合うだろ。
0091デフォルトの名無しさん
2016/08/29(月) 23:51:15.79ID:BFY9f7LWコアタイム9-18時
1時間前に出社して社屋の清掃
その1時間前に余裕を持って出社する
0092デフォルトの名無しさん
2016/08/29(月) 23:54:05.50ID:BFY9f7LW細かい言葉の違いなんかしょうもないことを気にせずテストは気楽に
ドキュメントは書いてはいけない
0093デフォルトの名無しさん
2016/08/29(月) 23:56:37.04ID:BFY9f7LW損害賠償もんですわ
楽しかったよ。
でもお前酔ってるだろw
0095デフォルトの名無しさん
2016/08/29(月) 23:59:13.57ID:BFY9f7LW0097デフォルトの名無しさん
2016/08/30(火) 00:08:00.53ID:vxcmsfn40098デフォルトの名無しさん
2016/08/30(火) 00:44:53.70ID:h5DGk6QO明らかに主題と離れているから?
それとも、ワッチョイがコワいから?
俺が立てたから気に食わんのだろう。
雑談スレにすれば?
ブラウザとは全く関係のない、そして、古いJavaScriptではなく本人曰く、唯一無二の最新のJavaScriptの質問が来るまで。
0100デフォルトの名無しさん
2016/08/30(火) 09:36:39.00ID:JoG6iYvQプログラマ板の趣旨からは外れているからですね。
掲示板にこのように書かれています。
http://echo.2ch.net/tech/
> プログラム・ソフトの使い方はパソコン初心者板やソフトウェア板へ。
> ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
> Javascript はweb制作管理板、CGI はWEBプログラミング板へ。
> 業界談義、愚痴はプログラマー板へどうぞ。
JavaScriptは本来Web制作管理板なんですよ。
だからブラウザ専用の話がしたいならそっちでやるべき。
だけど、これが書かれたのはJavaScriptがブラウザでしか動かなかった時代の話で、
サーバーサイドJavaScriptがWeb制作管理板とは思えない。
なのでこちらは純粋に言語の話と普通のコンパイラ言語のように
ビルド周りの話に切り分けるべきでしょう。
その話をWeb制作管理板でやるのは荷が重すぎますからね。
あちらはウェブデザイナーに毛が生えたようなレベルですから。
0101デフォルトの名無しさん
2016/08/30(火) 10:31:44.92ID:rnePWv6aまあそれもいいかもしれんがECMAScriptとスレタイにつけた限りは
過去のESスレのように仕様周りの話も期待させてもらうぞ。
どのみち、このスレはあまり業務向けではないな。
ビルド周りがわからんなぁ。
ES5で書いてても、node動いてるならム板でいいんじゃねえの?逆に。
ビルドするか、せずに使うかは好き好きだし。
ビルドするならブラウザの話もしても良いみたいな論調に聞こえるなぁ。
「純粋に言語の話」と「普通のコンパイラ言語」がビルドで別れてるわけでもあるまいて。
ビルドする処理系も、しない処理系も、しないけどJITな処理系もあるんだし。言語自体も、コンパイラとは全く関係ないじゃん。
「バベる話は含みます」と言いたい事言えばいいのに。
0103デフォルトの名無しさん
2016/08/30(火) 18:30:50.76ID:rnePWv6a整理しなきゃならないほどレス多くないんだから。
あくまで目安よ。目安。
0104デフォルトの名無しさん
2016/08/30(火) 21:24:04.22ID:vxcmsfn4でもおまえbabelアンチじゃん?
0105デフォルトの名無しさん
2016/08/30(火) 21:55:39.79ID:JoG6iYvQ> ES5で書いてても、node動いてるならム板でいいんじゃねえの?逆に。
> ビルドするか、せずに使うかは好き好きだし。
そう書いたつもりですけど?
> 「バベる話は含みます」と言いたい事言えばいいのに。
babel語なんてものは存在しない。っていうかもしかして知らないの?
babelでトランスパイルするように書いたコードにbabel専用の特別な命令なんかない。
最新のブラウザであればそのまま動くコード。
> 言語自体も、コンパイラとは全く関係ないじゃん。
あんたが言ったとおり。言語自体はトランスパイラ(babel)とは全く関係ない。
JavaScrpt(=ECMAScript)の部分はブラウザでもnodeでも同じように動く。
nodeで動かないのはDOMの部分だけ。DOMの部分というのは
windowホストオブジェクト経由で参照するもの。
そもそもJavaScriptはプログラム言語なのだから、この板対応だと思うが、
なぜかム板のルールでWeb制作版に追いやられてる。
(昔はウェブ専用の簡易スクリプトでしかなかったからだと思うが)
俺としてはJavaScriptの話をム板でやるのは問題ないと思うが、
Web制作版にもJavaScriptスレは必要というのなら、
DOM関連の話をWeb制作版に持っていこうという話。
0106デフォルトの名無しさん
2016/08/30(火) 22:46:30.57ID:rnePWv6a昔はDOMだったPromiseみたいにWebと関係ない独立したAPIも多いしね。
ブラウザだってWebサイトを回覧するためのものだけではなくなってて
Web自体がプラットフォーム化してる今APIで区切っても仕方ない。
0107デフォルトの名無しさん
2016/08/30(火) 22:49:09.04ID:JoG6iYvQ昔からPromiseはDOMじゃないよ。
0108デフォルトの名無しさん
2016/08/30(火) 22:56:53.51ID:JoG6iYvQ指しているか知らんけど、
PromiseがJavaScriptの世界に提唱された初期の文書は
これなんだがURLからもわかるとおりCommonJSから生まれた
http://wiki.commonjs.org/wiki/Promises
CommonJSっていうのはサーバーサイドJavaScript
0109デフォルトの名無しさん
2016/08/30(火) 23:29:26.97ID:rnePWv6a勉強しなおしてきなさい。
アンチでもないよ。
あれは処理系として数えたいだけ。
ただのAltJS。
>>105
専用の命令でもあるし、汎用の命令でもあるよ。
解釈のされ方の問題だってば。
問題ないと思うが、と思うなら変な応酬も復讐まがいのこともせんと、受け入れれば良いんじゃねえの?
勝ち負けにこだわる人だこと。
>>109
こいつその辺の話知らんよ。
そもそも大体殆どのものが借用語みたいな言語だって事も理解してない。
JavaScriptとは関数が一級市民で、って話も、いつぞやドヤ顔でしてたけど、
原始再帰関数もリストも知らん、lispもerlangも見たことないカスだから。
0111デフォルトの名無しさん
2016/08/31(水) 01:42:04.32ID:mbRHTL3Vそれは標準化されてない
0112デフォルトの名無しさん
2016/08/31(水) 01:44:35.04ID:mbRHTL3Vhttp://www.html5rocks.com/ja/tutorials/es6/promises/
> JavaScript Promise は、最初 "Future" という名前で DOM の一部として実装されていたのが、
> 後に "Promise" と改名されて、最終的に JavaScript の一部として実装されました。
最初、と、最終的に、の間に何があったと思ってるんだろう。
0114デフォルトの名無しさん
2016/08/31(水) 08:18:41.23ID:j/FYmeM2すまんな。俺が最初に>>106で要らんちょっかい書けたのが悪かった。
もう事実に関係なく意味のない、相手の意見をどうにか覆すためだけの
単なる言葉の掛け合い合戦になってるのは分かるだろう?
ここらで終わりにしようや。
0115デフォルトの名無しさん
2016/08/31(水) 09:31:50.57ID:mxX4GOArこれが初期のJavaScript1.1という仕様書
http://www.planetpdf.com/codecuts/pdfs/tutorial/jsspec.pdf
この段階からDOMはJavaScriptという言語の中に入ってなかったんだよ。
それは今も変わらずで、DOMはJavaScriptの仕様の範囲に入ってないから
ブラウザがDOMを作成して、それをJavaScriptの環境から参照できるようにしている。
これがブラウザでない場合はDOMはではなく、別のものになる。
◆SEdFBOkLSwはどうも曲解してこれを認めないから聞くだけ無駄だが、
この話が違うって言いたい人いる?
0116デフォルトの名無しさん
2016/08/31(水) 12:36:42.81ID:05Cg2vNV親クラスのプロパティを子クラスと共有する方法は何か無いでしょうか
0117デフォルトの名無しさん
2016/08/31(水) 17:46:15.73ID:j/FYmeM2普通に考えて継承関係にあるなら共有されてるじゃん。
0118デフォルトの名無しさん
2016/09/01(木) 01:28:37.64ID:G09cpOvFcomic loスレより転載
パス:sage
ttp://www1.axfc.net/u/3712796
0119デフォルトの名無しさん
2016/09/01(木) 01:31:37.14ID:qZMo0Rlk具体的なコードを書いてくれないと意味がわからない。
例えばこれはMDNから持ってきたサンプルだが、
親クラス(Animal)のプロパティ(name)を子クラスと共有している。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(this.name + ' makes a noise.');
}
}
class Dog extends Animal {
speak() {
console.log(this.name + ' barks.');
}
}
なんでこう、曲解に曲解を重ねたり、
俺が納得するしないにこだわんのかね。
間違ってる部分が1ミリでもあるうちは、納得しないに決まってんじゃんねえ。
納得させたいのか、勝ちたいのか、認めさせたいのか、
自分の知識が不安なのかはっきりしろよ。
0121デフォルトの名無しさん
2016/09/01(木) 08:56:57.32ID:+FVjZRJvお前に聞いてねーよw
ほれ見ろ、誰ひとりとして俺が言ってることが
間違ってるとは言ってないじゃないかw
0122デフォルトの名無しさん
2016/09/01(木) 09:30:51.00ID:+FVjZRJv適切なJavaScript(≒ECMAScript)コードであるが、
babelを使って古いIEなどで動かすことができる。
重要なのはこれをbabelで変換するからと言って
babel専用の構文ではない。
0123デフォルトの名無しさん
2016/09/01(木) 09:32:58.55ID:+FVjZRJvおそらく、babel専用の共通の文法から
新しいブラウザ向けにclassに変換 or 古いブラウザ向けにfunctionに
変換するんだと思っているんだろうね。
AltJSはたしかにそれに近いが、babelは
新しいブラウザ向けの構文を変換するので
babel専用の文法なんてものは存在しない。
0124デフォルトの名無しさん
2016/09/01(木) 09:51:14.48ID:5kBL1onlわかってるって(笑)
専用の文法とも、専用の言語とも言ってないだろ。
ただ、babelで使うために書いたのであれば、
FireFoxで使うために書いたコードがFireFox向けに書いたコードであるのと同様に
babelで使うために書いたコードは、babel向けに書いたコードであって、ネイティブなFireFoxの為に書いたコードとは意味合いが違うって言ってんじゃん。
webpackも同じ。
専用では無いよ、babelの為に書いたコードだってば。
そういう意味で、ほかのaltJS用のコンパイラに対して書いた言語と「立ち位置」が同じなの。
0126デフォルトの名無しさん
2016/09/01(木) 19:58:52.56ID:+FVjZRJvだから、そんなのが存在しない。
babelの存在は忘れろ。
ES6で書いてるだけだ。
知ってるか?ブラウザ内部でES6は
ネイティブコードに変換されてるんだぞ?
0127デフォルトの名無しさん
2016/09/01(木) 20:00:45.39ID:+FVjZRJvもしかしてクロスブラウザの開発をやってないの?
まさか、Firefox向けのコード、IE向けのコード
Chrome向けのコードって、完全にファイルが違うのか?
0128デフォルトの名無しさん
2016/09/01(木) 20:01:38.52ID:+FVjZRJv> babelで使うために書いたコードは、babel向けに書いたコードであって
この理屈だと、FirefoxもaltJSと立ち位置が同じってことになるが?
0129デフォルトの名無しさん
2016/09/01(木) 20:04:32.89ID:6CqO2Avnpromiseのチェーンをn個動的につなげたいときはどうしたらいいの?
a().then(b).then(c).then(d);
これをこう書き
function run(a){
return a[0]().then(a[1]).then(a[2]).then(a[3]);
}
a[] を4個固定じゃなくてn個にしたい
0130デフォルトの名無しさん
2016/09/01(木) 20:11:11.58ID:np9Y5BfBネットでググるとreduceを使った例がよく出てくるけど、
forを使った例の方がわかりやすいと思う。
// 初期値として解決済みのpromiseを入れておく、
// これはthenメソッドを使えるようにするため。
var p = Promise.resolve();
for (var i = 0; i < 10; i++) {
p = p.then(function() {
return a[i]();
});
}
// ES6版
for (let i = 0; i < 10; i++) {
p = p.then(() => a[i]());
}
ようするにp変数に入っているpromiseに対してthenを実行して作った
新たなpromiseにどんどん入れ替えていけばいい。
reduceを使ったコードはこれを単に書き換えただけ。
0131デフォルトの名無しさん
2016/09/01(木) 20:14:21.32ID:Wbd9Msfr> FireFoxで使うために書いたコードがFireFox向けに書いたコードであるのと同様に
> babelで使うために書いたコードは、babel向けに書いたコードであって
babelというブラウザがあるわけじゃないんだけど?
Firefoxで使うために書いた(babelで変換する)Firefox向けのコードならあるよ。
でもbabelで使うために書いたコードなんてものはない。
babelは変換しかしないわけで、そのコードを使うのはFirefoxやChromeやIE。
そこをあんたは勘違いしてるんじゃない?
0132デフォルトの名無しさん
2016/09/01(木) 20:24:24.66ID:gqH8EeeU◆SEdFBOkLSw は babelというブラウザの上で
実行するって勘違いしてるんだw
もしくはbabelとnodeを勘違いしてるとかだな。
0133デフォルトの名無しさん
2016/09/01(木) 20:34:43.59ID:scPPFiSF> babelで使うために書いたコードは、babel向けに書いたコードであって、ネイティブなFireFoxの為に書いたコードとは意味合いが違うって言ってんじゃん。
これがbabelで使うために書いたコード
let func = () => console.log('hello');
これがネイティブなFirefoxのために書いたコード
let func = () => console.log('hello');
何が違うのか教えてほしい。
0134デフォルトの名無しさん
2016/09/01(木) 21:48:08.46ID:scPPFiSFどう違うかは何も言ってない。
アホか。
>>127
完全には違わんよ。
多少は足周りは違うな。
>>128
頭おかしいのか?
>>132
違うわ。お前が理解なさすぎ。
>>133
処理系が違う、だな。
babelで処理したJSが実際に動かすのは、下記コードで、ES6ではない。
'use strict';
var func = function func() {
return console.log('hello');
};
匿名関数で無くなってるよね。
0136デフォルトの名無しさん
2016/09/01(木) 22:05:27.31ID:scPPFiSFこれがbabelで変換して出力されたコード
'use strict';
var func = function func() {
return console.log('hello');
};
これがネイティブなFirefoxのために書いたコード
'use strict';
var func = function func() {
return console.log('hello');
};
何が違うのか?
0137デフォルトの名無しさん
2016/09/01(木) 22:12:28.00ID:scPPFiSFよりシンプルに書き直して、以前と全く同じように動くコードなのに、
元のコードとは記述が違うから、そういう修正はするなって言うタイプの人なの?
それES6じゃないじゃん。正確にはES6でもあり、お前が否定していた古いJavaScriptじゃんww
$msg='hello world';
echo $msg;
が、perlなのかphpなのかは、どっちに食わすかによって決まるんじゃねえの?
何か違うか?見た目も動作も同じだけど、別物だよね。
>>137
手弁当で全部終わらせるんならいいんじゃねーの?
予算使うなら、余計なことすんなって言うけど。
0139デフォルトの名無しさん
2016/09/01(木) 22:19:19.19ID:scPPFiSF古いJavaScriptだからなの?
babelで変換した結果とFirefoxがネイティブで動かすコードは
全く一緒なのに何が問題なの?って聞いてる。
重要なのは同じように動くこと(仕様を満たしていること)であって
中身の実装なんてどうでもいいでしょw
0140デフォルトの名無しさん
2016/09/01(木) 22:20:42.89ID:scPPFiSF> が、perlなのかphpなのかは、どっちに食わすかによって決まるんじゃねえの?
> 何か違うか?見た目も動作も同じだけど、別物だよね。
どちらもFirefoxに食わせていますよw
babelで動かすんじゃなくて
babelで変換したコードをFirefoxで動かすか、
babelで変換しないコードをFirefoxで動かすかって
話をしてるんだから。
0141デフォルトの名無しさん
2016/09/01(木) 22:27:03.04ID:scPPFiSFお前が何を不安がっているのかわかったわw
前提条件: どちらも同じブラウザFirefoxで動かします。
1. ES6のコードをそのままFirefoxで動かす
(※ES6のコードのテストの結果は当然問題ない)
2. ES6のコードをbabelで変換してESにしたコードをFirefoxで動かす
(※ES5のコードのテストの結果は当然問題ない)
どちらもテストでOKとでてるのに、もしかしたら
バグがあるんじゃないか?って思ってるだろw
0142デフォルトの名無しさん
2016/09/01(木) 22:40:53.56ID:UGSC1Nbq男なら黙ってprototype
不便に堪えて手書きでNative JavaScript
という冗談はともかく、納品するスクリプトはクライアントが使うんだから変な書き方も最新の玩具も使わずにネイティブのみで分かりやすくコメント添えながら書くのが普通じゃないのか?
0143デフォルトの名無しさん
2016/09/01(木) 22:40:55.87ID:Yfa1ihkiブラウザみたいな巨大なブラックボックスと区別する意味がよく分からん
0144デフォルトの名無しさん
2016/09/01(木) 22:46:12.95ID:scPPFiSFネイティブかどうかは重要じゃない。
正しく動くことが重要。
そのためにテストをするんだよ。
0145デフォルトの名無しさん
2016/09/01(木) 22:50:05.31ID:scPPFiSFだよね。例えば内部でES6をES5に変換してから
実行するブラウザがあったっておかしくない。
そもそもJavaScriptなんてコンパイルして
バイナリにてから動かしているわけで、
そのバイナリなんてブラウザが違ったら違うだろうし、
同じブラウザでもバージョンアップしたら違う可能性もある。
どういう変換が行われて実行されるかは大した問題じゃない。
仕様通りに動いているかが重要。
全然わかってねえじゃん。
0147デフォルトの名無しさん
2016/09/01(木) 23:15:55.41ID:scPPFiSFん?ってことは、
ES6をbabelで変換してFirefoxで動かすのと
ES6をそのままFirefoxで動かすのは
全く同じだってことでいいかい?
はい か いいえ で答えてくれ。
0148デフォルトの名無しさん
2016/09/01(木) 23:21:14.21ID:uGmloWI1細かい話だけど、extendsは古いブラウザでは完全にエミュレートされないよ。
extendsはprototypeだけでなくstaticなメソッドも継承する。
つまり、任意のプロトタイプを持つコンストラクタを作れないと行けないのだけど、
これはES2015以前ではブラウザの独自実装の__proto__を使わないと実現できない。
0149デフォルトの名無しさん
2016/09/01(木) 23:25:45.46ID:scPPFiSF完全にエミュレートできないことでバグになることはなく、
エミュレートできない機能を使っていればバグになる。
でも、それを含めてテストするわけだからね。
動かないならテストで分かる。
ブラウザ間の互換性がない問題と同じよ。
互換性がない部分があっても、テストで動けば問題ない。
0150デフォルトの名無しさん
2016/09/02(金) 00:00:38.90ID:OcKaQeg4客「IE8で動かないんだけど?」
0151デフォルトの名無しさん
2016/09/02(金) 00:01:45.81ID:gFIXdWf6IE8でテストしろよw
■ このスレッドは過去ログ倉庫に格納されています