トップページ⇒tech
1002コメント464KB

+ JavaScript(ECMAScript)質問用スレッド vol.122 + [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2016/08/29(月) 01:23:24.09ID:MUTWRWKo
プログラマ板の趣旨にあわせてブラウザ限定ではなくサーバーサイドJavaScriptや
トランスパイラなどの関連技術の話題も取り扱うように変わりました。

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/
0091デフォルトの名無しさん2016/08/29(月) 23:51:15.79ID:BFY9f7LW
>>90
コアタイム9-18時
1時間前に出社して社屋の清掃
その1時間前に余裕を持って出社する
0092デフォルトの名無しさん2016/08/29(月) 23:54:05.50ID:BFY9f7LW
君たちにはアジャイル力が圧倒的に足りない
細かい言葉の違いなんかしょうもないことを気にせずテストは気楽に
ドキュメントは書いてはいけない
0093デフォルトの名無しさん2016/08/29(月) 23:56:37.04ID:BFY9f7LW
俺の貴重な夜が糞バカどもとの糞バカみたいなレスの欧州で終わった
損害賠償もんですわ
0094 ◆SEdFBOkLSw 2016/08/29(月) 23:59:07.49ID:v+VBJ2wi
>>93
楽しかったよ。
でもお前酔ってるだろw
0095デフォルトの名無しさん2016/08/29(月) 23:59:13.57ID:BFY9f7LW
aaaaaaaaaaaa今日がおわるうううううううううううううuuuuuuuuuu
0096 ◆SEdFBOkLSw 2016/08/30(火) 00:00:49.86ID:aQC/u3Rc
瑕疵の範囲かと思って、よく見たら跋扈の範囲だったのが面白かったわ。
反復横飛びじゃねえよ。
0097デフォルトの名無しさん2016/08/30(火) 00:08:00.53ID:vxcmsfn4
世界広と言えども、jsでここまでしょーもない話題で盛り上がれるスレはここしかないと思う
0098デフォルトの名無しさん2016/08/30(火) 00:44:53.70ID:h5DGk6QO
本スレから分かれたのは何故?
明らかに主題と離れているから?
それとも、ワッチョイがコワいから?
0099 ◆SEdFBOkLSw 2016/08/30(火) 01:11:41.90ID:aQC/u3Rc
>>98
俺が立てたから気に食わんのだろう。
雑談スレにすれば?
ブラウザとは全く関係のない、そして、古いJavaScriptではなく本人曰く、唯一無二の最新のJavaScriptの質問が来るまで。
0100デフォルトの名無しさん2016/08/30(火) 09:36:39.00ID:JoG6iYvQ
>>98
プログラマ板の趣旨からは外れているからですね。

掲示板にこのように書かれています。
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スレのように仕様周りの話も期待させてもらうぞ。

どのみち、このスレはあまり業務向けではないな。
0102 ◆SEdFBOkLSw 2016/08/30(火) 11:56:39.50ID:7P5106vD
>>100
ビルド周りがわからんなぁ。
ES5で書いてても、node動いてるならム板でいいんじゃねえの?逆に。
ビルドするか、せずに使うかは好き好きだし。

ビルドするならブラウザの話もしても良いみたいな論調に聞こえるなぁ。

「純粋に言語の話」と「普通のコンパイラ言語」がビルドで別れてるわけでもあるまいて。
ビルドする処理系も、しない処理系も、しないけどJITな処理系もあるんだし。言語自体も、コンパイラとは全く関係ないじゃん。

「バベる話は含みます」と言いたい事言えばいいのに。
0103デフォルトの名無しさん2016/08/30(火) 18:30:50.76ID:rnePWv6a
別に明確な線引は必要ない。
整理しなきゃならないほどレス多くないんだから。
あくまで目安よ。目安。
0104デフォルトの名無しさん2016/08/30(火) 21:24:04.22ID:vxcmsfn4
>>102
でもおまえbabelアンチじゃん?
0105デフォルトの名無しさん2016/08/30(火) 21:55:39.79ID:JoG6iYvQ
>>102
> 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っていうくくりが適切かは分からんけどな。
昔はDOMだったPromiseみたいにWebと関係ない独立したAPIも多いしね。
ブラウザだってWebサイトを回覧するためのものだけではなくなってて
Web自体がプラットフォーム化してる今APIで区切っても仕方ない。
0107デフォルトの名無しさん2016/08/30(火) 22:49:09.04ID:JoG6iYvQ
> 昔はDOMだったPromiseみたいに
昔からPromiseはDOMじゃないよ。
0108デフォルトの名無しさん2016/08/30(火) 22:56:53.51ID:JoG6iYvQ
そんな話聞いたこと無いので、昔のPromiseがどれのことを
指しているか知らんけど、

PromiseがJavaScriptの世界に提唱された初期の文書は
これなんだがURLからもわかるとおりCommonJSから生まれた
http://wiki.commonjs.org/wiki/Promises

CommonJSっていうのはサーバーサイドJavaScript
0109デフォルトの名無しさん2016/08/30(火) 23:29:26.97ID:rnePWv6a
DOM Promiseも歴史も知らんのか。
勉強しなおしてきなさい。
0110 ◆SEdFBOkLSw 2016/08/31(水) 00:33:00.02ID:hBi44Zvn
>>104
アンチでもないよ。
あれは処理系として数えたいだけ。
ただのAltJS。

>>105
専用の命令でもあるし、汎用の命令でもあるよ。
解釈のされ方の問題だってば。

問題ないと思うが、と思うなら変な応酬も復讐まがいのこともせんと、受け入れれば良いんじゃねえの?
勝ち負けにこだわる人だこと。

>>109
こいつその辺の話知らんよ。
そもそも大体殆どのものが借用語みたいな言語だって事も理解してない。
JavaScriptとは関数が一級市民で、って話も、いつぞやドヤ顔でしてたけど、
原始再帰関数もリストも知らん、lispもerlangも見たことないカスだから。
0111デフォルトの名無しさん2016/08/31(水) 01:42:04.32ID:mbRHTL3V
>>109
それは標準化されてない
0112デフォルトの名無しさん2016/08/31(水) 01:44:35.04ID:mbRHTL3V
しかもFutureという名前

http://www.html5rocks.com/ja/tutorials/es6/promises/
> JavaScript Promise は、最初 "Future" という名前で DOM の一部として実装されていたのが、
> 後に "Promise" と改名されて、最終的に JavaScript の一部として実装されました。
0113 ◆SEdFBOkLSw 2016/08/31(水) 02:01:42.67ID:hBi44Zvn
>>112
最初、と、最終的に、の間に何があったと思ってるんだろう。
0114デフォルトの名無しさん2016/08/31(水) 08:18:41.23ID:j/FYmeM2
>>112
すまんな。俺が最初に>>106で要らんちょっかい書けたのが悪かった。
もう事実に関係なく意味のない、相手の意見をどうにか覆すためだけの
単なる言葉の掛け合い合戦になってるのは分かるだろう?
ここらで終わりにしようや。
0115デフォルトの名無しさん2016/08/31(水) 09:31:50.57ID:mxX4GOAr
どもまだ◆SEdFBOkLSwが納得してないようだが、

これが初期の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:G09cpOvF
すごい、こんな実用的なjavascriptの使い方を始めて見た

comic loスレより転載

パス:sage
ttp://www1.axfc.net/u/3712796
0119デフォルトの名無しさん2016/09/01(木) 01:31:37.14ID:qZMo0Rlk
>>116
具体的なコードを書いてくれないと意味がわからない。

例えばこれは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.');
 }
}
0120 ◆SEdFBOkLSw 2016/09/01(木) 07:33:51.65ID:yxBt3oxw
>>115
なんでこう、曲解に曲解を重ねたり、
俺が納得するしないにこだわんのかね。

間違ってる部分が1ミリでもあるうちは、納得しないに決まってんじゃんねえ。
納得させたいのか、勝ちたいのか、認めさせたいのか、

自分の知識が不安なのかはっきりしろよ。
0121デフォルトの名無しさん2016/09/01(木) 08:56:57.32ID:+FVjZRJv
>>120
お前に聞いてねーよw

ほれ見ろ、誰ひとりとして俺が言ってることが
間違ってるとは言ってないじゃないかw
0122デフォルトの名無しさん2016/09/01(木) 09:30:51.00ID:+FVjZRJv
ちなみに>>119はChromeやFirefoxやEdgeで動く
適切なJavaScript(≒ECMAScript)コードであるが、
babelを使って古いIEなどで動かすことができる。

重要なのはこれをbabelで変換するからと言って
babel専用の構文ではない。
0123デフォルトの名無しさん2016/09/01(木) 09:32:58.55ID:+FVjZRJv
◆SEはそれを分かってないんだと思う。

おそらく、babel専用の共通の文法から
新しいブラウザ向けにclassに変換 or 古いブラウザ向けにfunctionに
変換するんだと思っているんだろうね。

AltJSはたしかにそれに近いが、babelは
新しいブラウザ向けの構文を変換するので
babel専用の文法なんてものは存在しない。
0124デフォルトの名無しさん2016/09/01(木) 09:51:14.48ID:5kBL1onl
BabelHelperとかいうクソみたいな関数が自動生成されるのは俺の目の錯覚だったか
0125 ◆SEdFBOkLSw 2016/09/01(木) 11:24:18.20ID:4NaaelJA
>>123
わかってるって(笑)
専用の文法とも、専用の言語とも言ってないだろ。

ただ、babelで使うために書いたのであれば、
FireFoxで使うために書いたコードがFireFox向けに書いたコードであるのと同様に
babelで使うために書いたコードは、babel向けに書いたコードであって、ネイティブなFireFoxの為に書いたコードとは意味合いが違うって言ってんじゃん。
webpackも同じ。

専用では無いよ、babelの為に書いたコードだってば。
そういう意味で、ほかのaltJS用のコンパイラに対して書いた言語と「立ち位置」が同じなの。
0126デフォルトの名無しさん2016/09/01(木) 19:58:52.56ID:+FVjZRJv
> ただ、babelで使うために書いたのであれば、

だから、そんなのが存在しない。
babelの存在は忘れろ。

ES6で書いてるだけだ。


知ってるか?ブラウザ内部でES6は
ネイティブコードに変換されてるんだぞ?
0127デフォルトの名無しさん2016/09/01(木) 20:00:45.39ID:+FVjZRJv
>>125
もしかしてクロスブラウザの開発をやってないの?

まさか、Firefox向けのコード、IE向けのコード
Chrome向けのコードって、完全にファイルが違うのか?
0128デフォルトの名無しさん2016/09/01(木) 20:01:38.52ID:+FVjZRJv
> FireFoxで使うために書いたコードがFireFox向けに書いたコードであるのと同様に
> babelで使うために書いたコードは、babel向けに書いたコードであって

この理屈だと、FirefoxもaltJSと立ち位置が同じってことになるが?
0129デフォルトの名無しさん2016/09/01(木) 20:04:32.89ID:6CqO2Avn
誘導されてきました。

promiseのチェーンを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
>>129
ネットでググると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
>>125
> FireFoxで使うために書いたコードがFireFox向けに書いたコードであるのと同様に
> babelで使うために書いたコードは、babel向けに書いたコードであって

babelというブラウザがあるわけじゃないんだけど?

Firefoxで使うために書いた(babelで変換する)Firefox向けのコードならあるよ。
でもbabelで使うために書いたコードなんてものはない。
babelは変換しかしないわけで、そのコードを使うのはFirefoxやChromeやIE。

そこをあんたは勘違いしてるんじゃない?
0132デフォルトの名無しさん2016/09/01(木) 20:24:24.66ID:gqH8EeeU
あ、なるほどw

◆SEdFBOkLSw は babelというブラウザの上で
実行するって勘違いしてるんだw

もしくはbabelとnodeを勘違いしてるとかだな。
0133デフォルトの名無しさん2016/09/01(木) 20:34:43.59ID:scPPFiSF
>>125
> babelで使うために書いたコードは、babel向けに書いたコードであって、ネイティブなFireFoxの為に書いたコードとは意味合いが違うって言ってんじゃん。

これがbabelで使うために書いたコード

 let func = () => console.log('hello');

これがネイティブなFirefoxのために書いたコード

 let func = () => console.log('hello');

何が違うのか教えてほしい。
0134デフォルトの名無しさん2016/09/01(木) 21:48:08.46ID:scPPFiSF
意味合いが違うとは言ってるが
どう違うかは何も言ってない。
0135 ◆SEdFBOkLSw 2016/09/01(木) 22:01:56.97ID:x5Fi8ahc
>>126
アホか。

>>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
>>135

これが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
もしかしてさ、テストを書いてリファクタリングして
よりシンプルに書き直して、以前と全く同じように動くコードなのに、
元のコードとは記述が違うから、そういう修正はするなって言うタイプの人なの?
0138 ◆SEdFBOkLSw 2016/09/01(木) 22:16:55.85ID:x5Fi8ahc
>>136
それES6じゃないじゃん。正確にはES6でもあり、お前が否定していた古いJavaScriptじゃんww

$msg='hello world';
echo $msg;

が、perlなのかphpなのかは、どっちに食わすかによって決まるんじゃねえの?
何か違うか?見た目も動作も同じだけど、別物だよね。

>>137
手弁当で全部終わらせるんならいいんじゃねーの?
予算使うなら、余計なことすんなって言うけど。
0139デフォルトの名無しさん2016/09/01(木) 22:19:19.19ID:scPPFiSF
>>138
古いJavaScriptだからなの?

babelで変換した結果とFirefoxがネイティブで動かすコードは
全く一緒なのに何が問題なの?って聞いてる。


重要なのは同じように動くこと(仕様を満たしていること)であって
中身の実装なんてどうでもいいでしょw
0140デフォルトの名無しさん2016/09/01(木) 22:20:42.89ID:scPPFiSF
>>138
> が、perlなのかphpなのかは、どっちに食わすかによって決まるんじゃねえの?
> 何か違うか?見た目も動作も同じだけど、別物だよね。


どちらもFirefoxに食わせていますよw
babelで動かすんじゃなくて
babelで変換したコードをFirefoxで動かすか、
babelで変換しないコードをFirefoxで動かすかって
話をしてるんだから。
0141デフォルトの名無しさん2016/09/01(木) 22:27:03.04ID:scPPFiSF
>>138
お前が何を不安がっているのかわかったわ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
babelがたまたま実行結果が読めるというだけで
ブラウザみたいな巨大なブラックボックスと区別する意味がよく分からん
0144デフォルトの名無しさん2016/09/01(木) 22:46:12.95ID:scPPFiSF
>>142
ネイティブかどうかは重要じゃない。

正しく動くことが重要。
そのためにテストをするんだよ。
0145デフォルトの名無しさん2016/09/01(木) 22:50:05.31ID:scPPFiSF
>>143
だよね。例えば内部でES6をES5に変換してから
実行するブラウザがあったっておかしくない。

そもそもJavaScriptなんてコンパイルして
バイナリにてから動かしているわけで、
そのバイナリなんてブラウザが違ったら違うだろうし、
同じブラウザでもバージョンアップしたら違う可能性もある。

どういう変換が行われて実行されるかは大した問題じゃない。
仕様通りに動いているかが重要。
0146 ◆SEdFBOkLSw 2016/09/01(木) 23:09:24.58ID:x5Fi8ahc
>>141
全然わかってねえじゃん。
0147デフォルトの名無しさん2016/09/01(木) 23:15:55.41ID:scPPFiSF
>>146
ん?ってことは、

ES6をbabelで変換してFirefoxで動かすのと
ES6をそのままFirefoxで動かすのは
全く同じだってことでいいかい?

はい か いいえ で答えてくれ。
0148デフォルトの名無しさん2016/09/01(木) 23:21:14.21ID:uGmloWI1
>>122
細かい話だけど、extendsは古いブラウザでは完全にエミュレートされないよ。
extendsはprototypeだけでなくstaticなメソッドも継承する。
つまり、任意のプロトタイプを持つコンストラクタを作れないと行けないのだけど、
これはES2015以前ではブラウザの独自実装の__proto__を使わないと実現できない。
0149デフォルトの名無しさん2016/09/01(木) 23:25:45.46ID:scPPFiSF
>>148
完全にエミュレートできないことでバグになることはなく、
エミュレートできない機能を使っていればバグになる。
でも、それを含めてテストするわけだからね。
動かないならテストで分かる。

ブラウザ間の互換性がない問題と同じよ。
互換性がない部分があっても、テストで動けば問題ない。
0150デフォルトの名無しさん2016/09/02(金) 00:00:38.90ID:OcKaQeg4
>>149
客「IE8で動かないんだけど?」
0151デフォルトの名無しさん2016/09/02(金) 00:01:45.81ID:gFIXdWf6
>>150
IE8でテストしろよw
0152デフォルトの名無しさん2016/09/02(金) 00:04:27.07ID:gFIXdWf6
うーん、マジで分かってない気がするわ。

テストコードっていうのは、一つ書くだけで
それをどのブラウザでも実行可能にしておくものなんだよ。
もちろん同じテストを何度も短時間で実行できる。

いろんなブラウザが有って色んなバージョンがあって
バージョンアップが頻繁なウェブの世界ではそれができてないと
やってられないでしょ?

コードを修正するたびにサポートしてる全ブラウザ
(IE8をサポートするのならIE8以上)で全部テストしてる。
0153 ◆SEdFBOkLSw 2016/09/02(金) 00:28:38.18ID:nUqjDcPO
>>147
いいえ、だな。それは。
全く同じではない。挙動が同じでも。

>>149
エミュレートできないコードを使わない、って事は、
エミュレート前提で書いてて、やっぱ違うんじゃねえの?そういう意味でもないけど。立ち位置の話は。

>>152
テストコードが一つでいいわけ無いじゃん。。
単体ならいざ知らず。
0154デフォルトの名無しさん2016/09/02(金) 00:29:55.10ID:OcKaQeg4
IE8で開いたことあるならBabelが如何に実用性が低いかくらい察しとけよ……
0155 ◆SEdFBOkLSw 2016/09/02(金) 00:34:20.17ID:nUqjDcPO
>>154
babelでトランスパイルするために書いたJSと、webkitで動かす為のJSが、同じES6で記述するから意味論的にも同じスクリプトなんだってさw
コンパイラや実行環境の為のスクリプトじゃなくて、言語仕様で、それが同じものか決まるらしい。

意味としては前者はなんの意味もなく、立ち位置的にはAltJSの類と同じ意味のものだと思うんだけどね。
0156デフォルトの名無しさん2016/09/02(金) 00:35:15.71ID:gFIXdWf6
>>154
> 全く同じではない。挙動が同じでも。

なら挙動が同じ場合に何が問題になる?

そこだよね。挙動が同じななのに全く同じではないというだけで
問題点を今までなにも言ってない。

例えば、
var foo = function() { console.log(123) }
foo()
と
function foo() { console.log(123) }
foo()
は、全く同じではないと言うだろう。

そう、全く同じではないと言うだけで、
何が問題かを言わない。
0157デフォルトの名無しさん2016/09/02(金) 00:37:02.54ID:gFIXdWf6
>>153
> テストコードが一つでいいわけ無いじゃん。。

じゃあいくつ用意するんだよ?

なお普通のウェブサイトであり使うブラウザは
ユーザーが決めることなので、まったく制御できないものとする。

いくつ用意するんだよ?じゃなくて
いくつ用意してるんだよ?って聞いたほうが良いなw
0158デフォルトの名無しさん2016/09/02(金) 00:41:24.46ID:gFIXdWf6
>>155
> babelでトランスパイルするために書いたJSと、webkitで動かす為のJSが、同じES6で記述するから意味論的にも同じスクリプトなんだってさw

意味はどうでもいい。
重要なのは動作。

実行された結果が同じであれば、
それは正しく動くといって良い。

例えばJavaScriptは、ARM搭載したAndroidと
Intel CPUを搭載したWindowsで、
違う機械語で動くいているが、そんなこと関係ないだろ?
0159 ◆SEdFBOkLSw 2016/09/02(金) 00:45:42.23ID:nUqjDcPO
>>156
だから、問題だとかそうじゃないって。
その問題は、babelで変な地雷踏みたくないとかそういう問題であって(それは無いと言うなら、githubで何件openあるか数えてこい)

何より単純に、目的が違うって言ってんの。
トランスパイラに任せるためのソースコードと、それ自身がネイティブで動くためのスクリプトだって。

日本語が読めない外国人のために、社内の人への翻訳依頼のための書く文書と、社外の日本語がわかる外国人に出す文書は、
例え同じフォーマットで同じ内容が書いてあって、即ち同じ文書でも、目的も意味も違うでしょ。
社内の人への文書の方は、それ単体では全く意味をなさないの。
0160デフォルトの名無しさん2016/09/02(金) 00:46:44.70ID:gFIXdWf6
>>155
> 意味としては前者はなんの意味もなく、立ち位置的にはAltJSの類と同じ意味のものだと思うんだけどね。

AltJSのAltってどういう意味か知ってる?
Altnative(代案)って意味だよ

Altnative JavascriptっていうのはJavaScriptの代案。
そしてAltJSというのは具体的に言えば、
TypeScript、CoffeeScript、Dartなどの"プログラミング言語"

はぁ〜、いいから調べてきてごらん。
AltJSっていうのは言語のことだからさ。

babelは言語ではなくてトランスパイラ。
言語はFirefoxでも動くECMAScript。
AltJSのような別言語じゃないの。

全くジャンルが違うのだから「同じ意味」になるわけないだろ
0161 ◆SEdFBOkLSw 2016/09/02(金) 00:51:18.87ID:nUqjDcPO
>>158
どうでも良くないから言ってんじゃん。
お前が馬鹿だから同じだ、どうでもいい、なぜなら「多分同じ動きをしているから」だっていうならそうなんだろ。openの数は見えないみたいだけど。

>Androidとwindows
CPUは関係ないが、ブラウザは関係あるっしょ。
caniuseでも見てこいよ。
だからターゲット依存だって言ってんのに。
0162 ◆SEdFBOkLSw 2016/09/02(金) 00:53:33.61ID:nUqjDcPO
>>160
だから、立ち位置だって言ってるじゃん。
お前ホントに馬鹿だな。

AlternativeなJavaScriptでしょ、ES6以前のJavaScriptから見れば。

AltJSは別言語?
機械語になれば同じなんでは?ww

いや、別言語だとはわかってるけど。
ES6と、古いJavaScriptも、後方互換のある別言語だけどね。
0163デフォルトの名無しさん2016/09/02(金) 00:55:55.82ID:gFIXdWf6
>>159
> その問題は、babelで変な地雷踏みたくないとかそういう問題であって(それは無いと言うなら、githubで何件openあるか数えてこい)

Issueはないな。(設置されてない)PRは66件オープンだな。
新機能もあるから問題の数が66件ではない。

バグはすごく少ないようだね(笑)


バグの話をするならブラウザにだってバグが有る
Firefoxのバグがいくつあるか調べてごらん。
https://bugzilla.mozilla.org/describecomponents.cgi?product=Firefox

あんた他人のバグを言い訳にするんじゃないよ。何のためにテストしてる?
ブラウザやOSにバグが有ったって、その上で正しく動くアプリを
作れないと仕事にならんのだよ。
0164デフォルトの名無しさん2016/09/02(金) 01:01:16.42ID:gFIXdWf6
>>162
> だから、立ち位置だって言ってるじゃん。

「立ち位置」ってなんだよ?

全く違うものを並べて「立ち位置は同じ」ってお前が主張しているが
その立ち位置が同じである条件はなんだ?

その条件は世間一般に広く認められたものなのか?
お前が自分で作ったオレオレ条件だろ。


俺は言葉の定義通りの話をしている。
AltJSはJavaScriptではない言語のこと。
ES6はJavaScriptだし、babelは言語ですら無い。

> 162
> AltJSは別言語?
> 機械語になれば同じなんでは?ww

また話をすり替えようとしてるな。
俺がいつbabelが機械語になると言ったんだよ?

JavaScriptもAltJSは最終的に機械語になる。
だがbabelは言語ではないのだから機械語にならない。

俺はAltJSは言語であり、babelは言語ではないと言ってる。
0165 ◆SEdFBOkLSw 2016/09/02(金) 01:06:04.26ID:nUqjDcPO
>>163
Issue無かったわwこれは俺が悪い。勘違いしてた。
プルリクにfixesは結構あったけど。

ブラウザのバグを把握するために、LTS使うんだけど。
俺は別に言い訳にはせんよ。むしろ、請けが言い訳できない様にその辺は抑えてる。
そんな当たり前の事言われても困るわ。
だからブラウザごとに違うソースが一部でもあるんじゃん。さっき言ったけどさ。
0166 ◆SEdFBOkLSw 2016/09/02(金) 01:11:01.30ID:nUqjDcPO
>>164
何度も言ったけどさぁ。

全く違うのは、中身だろ。
意味は同じく、古いJavaScriptにトランスパイルするんじゃん。

立ち位置としては、JavaScriptのソースコードを出力するためのなんらかのコンパイラだよ。
C#のコンパイラもvb.netのコンパイラも、.netのコード吐くためのコンパイラ。

AltJSのソースコードと、babelの為に書いたソースコードが同じだとは言ってないでしょ。
babelは言語ですらない、ってそれそうだよ。ES6のトランスパイラだよ。
tscと同じようなもんだ、って言ってんの。
トランスパイラだから、そのためのソースコードであって、ネイティブのES6とは目的が違う同じ書式の、扱われ方の違う物だってばさぁ。
0167デフォルトの名無しさん2016/09/02(金) 01:13:32.36ID:gFIXdWf6
> ブラウザのバグを把握するために、LTS使うんだけど。
ChromeのLTSってどれだ?

エンドユーザーが使うブラウザは指定できない。
例えばAmazonやGoogleはどうしてる?
ブラウザ指定してるか?

> だからブラウザごとに違うソースが一部でもあるんじゃん。さっき言ったけどさ。

それは全体の何%ぐらいだ?
0168デフォルトの名無しさん2016/09/02(金) 01:16:19.67ID:gFIXdWf6
>>166
> 全く違うのは、中身だろ。
> 意味は同じく、古いJavaScriptにトランスパイルするんじゃん。

だから、中身が違っても
動作が同じなら問題ないだろって話をしてる。

なんで中身を拘るんだよ。
中身の話をすれば、babel以前に
IEとFirefoxとChromeでもぜんぜん違うだろ。

中身がぜんぜん違っても、同じ動作をするようにしないといけないんだよ。
その手めにテストコードが有って、そのテストコードにより
同じ動作をすることが保証されている。

テストコードで同じ動作をすることが保証されているんだから、
中身を変えることに何の問題も発生しない。

論理的な結論がこれ。

お前は、中身が違ってるだろ(どん!)で話が終わってる。
問題があるか無いかまで話を続けろよ。
0169 ◆SEdFBOkLSw 2016/09/02(金) 01:17:05.79ID:nUqjDcPO
>>167
chronium+自社パッチ。

Amazonとグーグル?
ポリフィルまみれな上にブラウザごとに違うソース吐いてなかったっけ?
逆アプローチであって、決して「同じソースでなんとかする」って発想じゃないよ。

なんで%聞かれんのかわからん。それで何が知りたいの?
どう計数してもイチャモンつけられるのが目に見えてるわ。コード量でもファイル数でもステップ数()でも。
0170 ◆SEdFBOkLSw 2016/09/02(金) 01:19:59.68ID:nUqjDcPO
>>168
えー。中身が違っても問題ないなら、ES6使用禁止で古いブラウザで、ブラウザごとにソース書いて、babel禁止でもいいって事なの?

中身にこだわってはないよ。お前の認識が間違ってる(と言うか、最初にbabelはAltJSと同じ立ち位置、に噛み付いてきた)だけであって、
問題があるかどうかは問題ですらないんだよ。

中身が違ってるというか、お前の理解力が足りなすぎる。
0171デフォルトの名無しさん2016/09/02(金) 01:20:00.88ID:gFIXdWf6
>>166
> AltJSのソースコードと、babelの為に書いたソースコードが同じだとは言ってないでしょ。
> babelは言語ですらない、ってそれそうだよ。ES6のトランスパイラだよ。
> tscと同じようなもんだ、って言ってんの。

AltJSは言語だ。
babelは言語ではない。「ES6のトランスパイラ」だ
tscは「TypeScriptという言語」のトランスパイラだ

AltJSとTypeScriptはどちらも言語なのだから同じようなものだが、
TypeScript(言語)とtsc(トランスパイラ)は同じようなものではない。
同じようにbabelはtscと同じようなものであって、TypeScriptと同じようなものではない。
0172デフォルトの名無しさん2016/09/02(金) 01:22:46.85ID:gFIXdWf6
>>170
> えー。中身が違っても問題ないなら、ES6使用禁止で古いブラウザで、ブラウザごとにソース書いて、babel禁止でもいいって事なの?

なんで中身が違っても問題ないって話をしているのに、
お前はまた中身の話をしているんだ?

古いブラウザであっても、テストが通って問題なく動くのであれば
中身が違っていても問題ないのは当たり前だろ。
なんで中身まで全く一緒にしようとしてるんだ?

そもそも全く同じコードじゃ動かないって話をお前はしただろ。
だから中身をブラウザごとに違うコードにしてまで、同じ動きをするようにするんだろ?

ならば中身がどんなに変わろうが、同じ動きをするのであれば
問題ないと言ってる俺の話も理解できるはずだが?
0173 ◆SEdFBOkLSw 2016/09/02(金) 01:23:30.53ID:nUqjDcPO
>>171
だから、
babelは言語ではない。「ES6のトランスパイラ」だ
tscは「TypeScriptという言語」のトランスパイラだ

「ES6のトランスパイラ」で処理されるためのJavaScriptソースがある、
「tscは「TypeScriptという言語」のトランスパイラ」で処理されるためのソースがある。

トランスパイラで処理されるためのソースがある。

それらのソースは、トランスパイラで処理されるためのものである。

おわかり?
0174デフォルトの名無しさん2016/09/02(金) 01:23:45.28ID:gFIXdWf6
> 最初にbabelはAltJSと同じ立ち位置、に噛み付いてきた)だけであって、
babelはトランスパイラ、AltJSは言語

全然立ち位置が違う。

tsc(トランスパイラ)とTypeScript(言語)が立ち位置が同じと言っているようなもん
0175デフォルトの名無しさん2016/09/02(金) 01:25:11.41ID:gFIXdWf6
>>173

> 「ES6のトランスパイラ」で処理されるためのJavaScriptソースがある、

それはどんなJavaScriptソースなんだ?
ここに具体的なコードを書いてみろ。
0176 ◆SEdFBOkLSw 2016/09/02(金) 01:25:31.37ID:nUqjDcPO
>>172
理解はしてるよ。
中身が同じにこだわるのは、
「一つの言語で云々、babelというのはなんに対しても最新のJavaScriptが使えるもの」ってお前の発言に則って話してるから、
それを否定するなら俺としてはありがたい話だ。
0177 ◆SEdFBOkLSw 2016/09/02(金) 01:27:24.62ID:nUqjDcPO
>>175
そりゃ、ES6だよ。
let func = () => console.log('hello');

ただ、目的としてはトランスパイラにかけるためのソースなだけで。
だから、目的論なの。
>>159の後半な。
0178デフォルトの名無しさん2016/09/02(金) 01:27:51.64ID:gFIXdWf6
170 返信: ◆SEdFBOkLSw [sage] 投稿日:2016/09/02(金) 01:19:59.68 ID:nUqjDcPO [9/11]
> 中身にこだわってはないよ。

176 名前: ◆SEdFBOkLSw [sage] 投稿日:2016/09/02(金) 01:25:31.37 ID:nUqjDcPO [11/11]
> 中身が同じにこだわるのは、


↑ こいつ頭大丈夫か?w

中身にこだわってないと言ったくせに
ほんの6レスで中身が同じにこだわってるwww
0179デフォルトの名無しさん2016/09/02(金) 01:28:54.56ID:gFIXdWf6
>>177

> let func = () => console.log('hello');

そのコードはどの部分が、

「ES6のトランスパイラで処理されるため」になってるんだ?
0180 ◆SEdFBOkLSw 2016/09/02(金) 01:29:42.84ID:nUqjDcPO
>>179
お前敢えて誤読してるか理解してないフリしてんの?
それともマジでバカなの?
0181 ◆SEdFBOkLSw 2016/09/02(金) 01:30:47.92ID:nUqjDcPO
あきれるわ。おやすみ。
0182デフォルトの名無しさん2016/09/02(金) 01:31:21.75ID:gFIXdWf6
>>179
俺は

「ES6のトランスパイラ」で処理される、ES6のコードと
「ES6のトランスパイラ」で処理されない、ES6のコードの

違いが何かってことを聞いてるんだよ。
0183デフォルトの名無しさん2016/09/02(金) 01:37:01.83ID:gFIXdWf6
ES6のコードはES6に対応してない古いブラウザに対応するときにだけbabelで変換する必要があるのであって、

ES6に対応しているブラウザではそのまま動かせるって分かってないのかな?
babelを通すか通さないかの違いは、それぞれのブラウザで動作するかどうかの
テストコードが有って、それで保証されるから何の問題もない。

中身が変わるだけで(中身にはこだわりません)
動きが変わってなければ(テストで保証する所)何も問題ない。

babelは言語ではなくトランスパイラであって
言語はES6。このES6はブラウザでネイティブに動く言語
その他のAltJSはブラウザでネイティブに動かない言語

だから、AltJSとES6は「同じ言語というカテゴリで比較すると「立ち位置が違う」と言えよう。
なおAltJS(言語)とbabel(トランスパイラ)はそもそもカテゴリが違う。
0184デフォルトの名無しさん2016/09/02(金) 03:38:22.58ID:kWkQROgW
漫画喫茶のダイス(DICE)を運営してるのはベルシティ(ザ シティ)というパチンコ店です。
ザ シティ・ベルシティ伊勢佐木町店(神奈川県)の周りにはソープランドがたくさんあります(ソープランド街です)。
このパチンコ店は韓国人か中国人が経営者の可能性があります(パチンコ店のほとんどは韓国人が経営してます)。
ザ シティ・ベルシティ伊勢佐木町店の周りには韓国料理店がたくさんあり、数キロ先には横浜中華街があります(韓国人、中国人がすごく多い地域です)。
普通はこんな場所に店を出さない気がします。

DICE系列 関東圏4
http://hayabusa6.2ch.net/test/read.cgi/netspot/1467360487/


ダイス(DICE)=まんがランド(漫画喫茶)=ちょっと気分転館(漫画喫茶)=ねっとラボ=ベルシティ(ザ シティ)というパチンコ店

↑
パチンコ店のほとんどは韓国人が経営してます
0185デフォルトの名無しさん2016/09/02(金) 12:34:18.86ID:n2lhI+0z
>>149
違う。普通はテストに引っかかる前でも後でも、
互換性のない部分で問題ないように書こうねということになる。
つまり使えるのはちょっとES2015に近いaltJSであって、
ES2015フルに使っていい状況で作るのとは大きく違う。
0186デフォルトの名無しさん2016/09/02(金) 22:23:40.28ID:gFIXdWf6
>>185
> 互換性のない部分で問題ないように書こうねということになる。

それはbabelを使わなくても、やってることだろ?

babelが対象とするのはECMAScriptの部分でDOM APIは対象外。
特定のブラウザでしか使えないAPIに比べれば
互換性がない部分は遥かに少ない。

その互換性がない部分っていうのはES6の部分なんだから・・
おまえ、普段ES6のコード書いてないだろ?

お前はES6のコードを書かないように気をつけている。
それに比べれば書かないように気をつけるコードはほんの僅かだよ。   
互換性がない所はES5で書けば良いんだしね。
0187デフォルトの名無しさん2016/09/02(金) 22:25:51.84ID:gFIXdWf6
ざっと見る限りbabelとES6で互換性がない点は全体の1%程度だよ。

知らずに書いてしまうことはほとんどありえない。
0188デフォルトの名無しさん2016/09/02(金) 22:34:24.02ID:gFIXdWf6
★SE 曰く、

中身が違うからポリフィルは使ってはいけない。
動作が同じになるように作られていたとしても
中身が違うからポリフィルは使ってはいけない。

また、MSが実装したPromiseも使ってはいけない。
PromiseはFirefoxが作ったものが唯一の本物であり、
中身が違えば動作が同じでも別物である。
0189デフォルトの名無しさん2016/09/03(土) 05:16:03.21ID:N47o0j5/
>>186
Proxyが非対応でSymbolやWM周りが非常に気をつける必要がある時点で1%じゃ済まないね。
>>それはbabelを使わなくても、やってることだろ?
やらないし。もうモダンブラウザはほぼ100%対応してるのだから。
実質8割のbabelとは全然全然違う。
おまえ、普段ES6のコード書いてないだろ?
0190デフォルトの名無しさん2016/09/03(土) 08:43:25.11ID:GDuT1yRG
レスバトル案の定自演だった
0191デフォルトの名無しさん2016/09/03(土) 10:02:38.69ID:1nvmVGqX
>>189
ならそれだけ使わなければいいだけだろ?w

babelを使わない場合に、Proxyが使えるのか?
■ このスレッドは過去ログ倉庫に格納されています