■ このスレッドは過去ログ倉庫に格納されています
+ JavaScript(ECMAScript)質問用スレッド vol.122 +
- 1 :デフォルトの名無しさん:2016/08/29(月) 01:23:24.09 ID:MUTWRWKo.net
- プログラマ板の趣旨にあわせてブラウザ限定ではなくサーバーサイド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/
- 2 :デフォルトの名無しさん:2016/08/29(月) 02:19:02.03 ID:LPmR1rz1.net
- サンプルコードを書く場合はES6+に対応している
以下のサイトがおすすめです。
https://jsfiddle.net/ babel対応
http://ideone.com/ SpiderMonkey、Node.js 対応
- 3 :デフォルトの名無しさん:2016/08/29(月) 02:22:18.61 ID:LPmR1rz1.net
- ECMAScript最新仕様
The TC39 Process
https://tc39.github.io/process-document/
Stage 1〜3 Proposals
https://github.com/tc39/proposals
Stage 0 Proposals
https://github.com/tc39/proposals/blob/master/stage-0-proposals.md
- 4 :デフォルトの名無しさん:2016/08/29(月) 02:22:35.50 ID:LPmR1rz1.net
- TC39 Process: Stage
https://azu.github.io/slide-what-is-ecmascript/slide/12.html
Stage 0: Strawman
アイデア
Stage 1: Proposal
プロポーザルの目的や解決方法を示す
Polyfillやデモ等を用いて解説する
Stage 2: Draft
いわゆるドラフト
ECMAScript標準と同じルールでAPIや構文、セマンティックについて説明していなければならない
Stage 3: Candidate
仕様は完成した状態
実装や外部のフィードバックを求める状態
レビュアはその仕様策定者以外ならだれでもなれるが専門的な知識を持っている必要がある
ECMAScriptのエディタがチェックする必要があり
Stage 4: Finished
2つの実装(not Polyfill)が必要
ECMAScriptへ取り込まれる準備が完了したことを示す状態
ECMAScriptのエディタがチェックする必要があり
- 5 :デフォルトの名無しさん:2016/08/29(月) 09:37:00.52 ID:V2I771t3.net
- こっちのスレの後継も兼ねています。
ECMAScript デス 5 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1449027632/
- 6 :デフォルトの名無しさん:2016/08/29(月) 09:37:26.07 ID:V2I771t3.net
- 《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 デス 4
http://peace.2ch.net/test/read.cgi/tech/1325448978/
■過去スレ
JavaScript デス
http://pc5.2ch.net/test/read.cgi/tech/1052273054/
ECMAScript デス 2
http://pc11.2ch.net/test/read.cgi/tech/1088298991/
- 7 :デフォルトの名無しさん:2016/08/29(月) 09:37:45.78 ID:V2I771t3.net
- ES2015 Specification
http://people.mozilla.org/~jorendorff/es6-draft.html
Current Specification
http://tc39.github.io/ecma262/
Current Proposals
https://github.com/tc39/ecma262
tc39-notes
https://github.com/rwaldron/tc39-notes
ES2015 Specificatoin
http://www.ecma-international.org/ecma-262/6.0/
- 8 :デフォルトの名無しさん:2016/08/29(月) 22:45:03.15 ID:/4QG0Ido.net
- ワロスワロスw
↓動作保証外ですというためにはテストしないといけないらしいよw
930 名前: ◆SEdFBOkLSw [sage] 投稿日:2016/08/29(月) 08:06:03.18 ID:FpDQPGJ0
>>929
だから、動作保証外です、って言うためには、ノーテストだから動作保証外はだめでしょ。
テストして動作保証外と表示される所まで見て動作保証外だよ。
- 9 :デフォルトの名無しさん:2016/08/29(月) 22:45:52.95 ID:BFY9f7LW.net
- あの、いつまでこの流れ続けるんすか
- 10 :デフォルトの名無しさん:2016/08/29(月) 22:46:28.65 ID:6Q0H184Q.net
- ◆SEって言ってることが妙にSE臭くって、
それは技術的におかしいよね。
意味ないよね。
間違ってるよね。
っていうのがたくさんある。
トリップが本質を示してるw
- 11 :デフォルトの名無しさん:2016/08/29(月) 22:53:05.30 ID:1MLmR57m.net
- まあ冗談抜きで今更古臭いコードで書く気にはなれんよな。
最低でもES2015もしくはTypeScriptじゃないと
書きたくない。
- 12 :デフォルトの名無しさん:2016/08/29(月) 22:53:43.85 ID:BFY9f7LW.net
- >>11
TypeScriptのバージョンがあがったらテストし直しですよ
正気ですか?
- 13 : ◆SEdFBOkLSw :2016/08/29(月) 22:54:50.80 ID:v+VBJ2wi.net
- そりゃ、ちゃんと動くか、もしくはちゃんと止まるか、がテストじゃん。
ちゃんと動くことだけテストしてどーすんだろ。
>>9
このスレこういうスレなんじゃねえの?1的に。
>>10
そりゃSIerのSEだからな。
- 14 :デフォルトの名無しさん:2016/08/29(月) 22:55:06.23 ID:1MLmR57m.net
- >>12
バージョンなんて何を使っても上がるだろ?w
- 15 :デフォルトの名無しさん:2016/08/29(月) 22:55:45.18 ID:BFY9f7LW.net
- >>13
システムインテグレーターヤーのシステムエンジニアの方ですか?
- 16 : ◆SEdFBOkLSw :2016/08/29(月) 22:55:57.31 ID:v+VBJ2wi.net
- 自転車派とか話逸してたけど、
ちゃんと走ってちゃんと止まるまともな車検受けた車に乗る派だよ。
エンジンかかったからよしこれで行こうみたいなバカじゃない。
- 17 :デフォルトの名無しさん:2016/08/29(月) 22:56:30.84 ID:BFY9f7LW.net
- >>14
はい工数オーバー、デスマ確定、精神病んで実家タウンにさよならバイバイ
- 18 :デフォルトの名無しさん:2016/08/29(月) 22:57:11.60 ID:BFY9f7LW.net
- >>16
おまえ車検のバージョン上がったらどうすんの?
ネジのバージョンに脆弱性が見つかったけどどうすんの?
- 19 :デフォルトの名無しさん:2016/08/29(月) 22:57:17.74 ID:1MLmR57m.net
- >>13
> そりゃ、ちゃんと動くか、もしくはちゃんと止まるか、がテストじゃん。
それはある条件のときに「ちゃんと止まる」という動きをしたってことでしょ?
それは「ちゃんと動く」の中に含まれてるんだよw
- 20 :デフォルトの名無しさん:2016/08/29(月) 22:57:51.01 ID:1MLmR57m.net
- >>17
> はい工数オーバー、デスマ確定、精神病んで実家タウンにさよならバイバイ
意味がわからん。
俺は何を使ってもバージョンは上がるって言っただけなんだが?
- 21 : ◆SEdFBOkLSw :2016/08/29(月) 22:58:15.58 ID:v+VBJ2wi.net
- >>14
全部内製したら良いじゃん。
割とマジで。
>>15
確かにヤーはどこから来てんだろうな。
System IntEgratoRなのかねえ。
- 22 :デフォルトの名無しさん:2016/08/29(月) 22:58:23.30 ID:BFY9f7LW.net
- Don\'t stop Don\'t stop the JavaScript♪
- 23 :デフォルトの名無しさん:2016/08/29(月) 22:59:08.99 ID:1MLmR57m.net
- もしかして、バージョンが上がったときに
デスマにならないようにする方法知らないのか?
Windows 10が出たときに、Windows 10対応を
無料でやるからお前はデスマになるんだよw
- 24 :デフォルトの名無しさん:2016/08/29(月) 22:59:26.85 ID:BFY9f7LW.net
- >>21
はい車輪の再発明、ギルティ。リーダブルコード読んで、どうぞ。
- 25 : ◆SEdFBOkLSw :2016/08/29(月) 22:59:51.60 ID:v+VBJ2wi.net
- >>18
そりゃ、リコールだよ。
>>19
またすり替える。
たまたま動いてる、のに、止まったとて、「たまたま止まってる」だけじゃん。
>>20
ちょっとわかるわ。
無理聞くからそうなる。
- 26 :デフォルトの名無しさん:2016/08/29(月) 23:00:04.35 ID:BFY9f7LW.net
- >>20
じゃあおまえバージョンあがったらどうすんの?誰が責任取るの?
- 27 :デフォルトの名無しさん:2016/08/29(月) 23:00:39.96 ID:1MLmR57m.net
- >>21
> 全部内製したら良いじゃん。
> 割とマジで。
内製したら、コードを修正するたびに
バージョンが上がるってことになるんですが?
まさか、中身が変わってるけど
バージョン番号が変わってないなら
同じバージョンだって言うんじゃあるまいな?w
それに比べりゃ、複数のコード修正を一括して適用して
バージョンアップするほうが、よっぽどバージョンアップの回数は少ないよw
- 28 :デフォルトの名無しさん:2016/08/29(月) 23:01:02.44 ID:BFY9f7LW.net
- >>25
1回目のブレーキは止まったけど2回目のブレーキは止まるの?100回目は?
テストした?
- 29 :デフォルトの名無しさん:2016/08/29(月) 23:01:19.88 ID:1MLmR57m.net
- >>26
今お前は誰が責任とってるんだよw
自分の胸に手を当てて考えてみろw
- 30 :デフォルトの名無しさん:2016/08/29(月) 23:02:04.20 ID:BFY9f7LW.net
- >>27
じゃあおまえ依存性の注入されたTypeScriptでバグ見つかったらどうすんの?
- 31 :デフォルトの名無しさん:2016/08/29(月) 23:02:25.88 ID:BFY9f7LW.net
- >>29
誰だろうね?
- 32 : ◆SEdFBOkLSw :2016/08/29(月) 23:02:54.84 ID:v+VBJ2wi.net
- >>24
なんぼでも再発明したらよろしいw
フレームはアルミで、何グラム以下で、タイヤの素材は○○で、何インチで、何キロに耐えられる車輪、
は、車輪の再発明には違いないが、その車輪としては初出だからな。
- 33 :デフォルトの名無しさん:2016/08/29(月) 23:05:29.41 ID:1MLmR57m.net
- >>30
バグが見つかったときの対応は最初の契約で決まってる
多くは納品してから○週間までは無料で対応
それ移行は別途見積もりが普通
ブラウザやOSなどのバージョンアップも同じ。対応している環境はどれこれと指定して
それ以外の新しいバージョンも古いバージョンも動作保証はしない。別途見積もり。(別途契約があれば別)
もちろん動作保証しないのだからテストもしない。そもそも納品後の新しいバージョンでテストなんかできるかw
- 34 :デフォルトの名無しさん:2016/08/29(月) 23:06:02.03 ID:BFY9f7LW.net
- >>32
おう、バグのないJavaScript発明しろよ
あくしろ
- 35 :デフォルトの名無しさん:2016/08/29(月) 23:06:27.44 ID:BFY9f7LW.net
- >>33
無責任
- 36 : ◆SEdFBOkLSw :2016/08/29(月) 23:08:37.69 ID:v+VBJ2wi.net
- >>27
そうだよ。
構成部品のどれがどう変わっても、ある製品には違いないよ。
ビルドナンバー違うけどね。
ビルドナンバーごとに構成管理してるっしょ。
一括適用は事故起きるよ。
こまめに何度もテストとVerUp。定期出荷するんだし。
>>28
ただテストしただけのバカにそれ言ったら泣いたことあるわ。
何故2回のテストで十分か、パターン教えて、単純に考えたら120c6じゃん。ここからどう絞ったの?納品として良いの?って。
- 37 :デフォルトの名無しさん:2016/08/29(月) 23:10:04.54 ID:BFY9f7LW.net
- >>36
なるほど、それで?
- 38 :デフォルトの名無しさん:2016/08/29(月) 23:10:47.12 ID:1MLmR57m.net
- > こまめに何度もテストとVerUp。定期出荷するんだし。
こまめに何度もテストができる状態にあれば
babel使っても、テストすりゃいいんだから
テストのコストは変わらんじゃんw
- 39 : ◆SEdFBOkLSw :2016/08/29(月) 23:11:02.95 ID:v+VBJ2wi.net
- >>37
お前は印欧語祖のankとang調べとけw
- 40 : ◆SEdFBOkLSw :2016/08/29(月) 23:13:38.96 ID:v+VBJ2wi.net
- >>38
だから、それじゃあbabelに依存するでしょ。
さっき言ってたけど、ブラウザのバージョン上げるけどbabel上げないとか、ポリフィル残るし無意味でしょ。
そうでなくても依存度下げてるのに意味ないじゃん。
babelが問題あったらそれこそ面倒だし、こないだもnpm自体あんなに無意味に揺れたじゃん。
何故babelにそんなにこだわんの?
- 41 :デフォルトの名無しさん:2016/08/29(月) 23:13:48.95 ID:BFY9f7LW.net
- >>39
僕は今怒ってるんだよ?君の不誠実な態度に。
ちゃんと説明して。胸に手を当ててよく考えて。
- 42 :デフォルトの名無しさん:2016/08/29(月) 23:13:50.26 ID:1MLmR57m.net
- >>40
アホかw
babel導入前と導入後で同じテストを流すんだよw
後々はコードを変えるかもしれんが
導入した直後はまったく一緒だ。
- 43 :デフォルトの名無しさん:2016/08/29(月) 23:16:10.90 ID:1MLmR57m.net
- >>40
> 何故babelにそんなにこだわんの?
babelを使わずに、
ES6に対応したブラウザを使って
ES6で書いてアプリコードをテストを、
古いブラウザでそのまま動かせるから。
新しいブラウザでbabelを使わずにテストをして動いているのだから
アプリのコードとテストのコードに問題がないことは証明済み。
それをbabelを使っても正しくテストが通るのだから
これに問題がないことも証明済み。
- 44 : ◆SEdFBOkLSw :2016/08/29(月) 23:16:46.66 ID:v+VBJ2wi.net
- こまめに改修のテストするのと、
こまめにやらなくても良いテストをやる羽目になるんじゃ、それこそコストかかるじゃん。
その会社が請けの金額内で勝手にやって確実なもの納品するなら良いけど、
何かあったらそれこそ入札させんよ。ライブラリに不備があり、なんて言い訳。
俺自身ずっとパッチ見てるし、そういうのも割と見つけるけどな。
- 45 :デフォルトの名無しさん:2016/08/29(月) 23:17:09.64 ID:1MLmR57m.net
- もしこれがbabelじゃなかったとしたら、
例えば、CoffeeScriptだったとしたら、
それはブラウザでそのまま動かすことが出来ない。
だけどbabelであれば、babelを使わずに
新しいブラウザで動かすこともできる。
- 46 :デフォルトの名無しさん:2016/08/29(月) 23:17:37.75 ID:BFY9f7LW.net
- お茶ペットでときめきポポロンのドラム打ってたら破裂した・・・
- 47 :デフォルトの名無しさん:2016/08/29(月) 23:17:45.45 ID:1MLmR57m.net
- >>44
> こまめにやらなくても良いテストをやる羽目になるんじゃ、それこそコストかかるじゃん。
意味がわからん。
アプリを修正するだろ?
テストを実行するだろ?
同じじゃんか。
- 48 : ◆SEdFBOkLSw :2016/08/29(月) 23:18:22.83 ID:v+VBJ2wi.net
- >>42
同じテストを流すから何なの?
同じテストなら金掛からんの?
全く動作変わらないの?
じゃあ、何故VerUpする必要があるの?
>>43
未証明。
こないだもスコープ抜けあったでしょ。
- 49 :デフォルトの名無しさん:2016/08/29(月) 23:19:14.09 ID:1MLmR57m.net
- >>44
> 何かあったらそれこそ入札させんよ。ライブラリに不備があり、なんて言い訳。
ライブラリに不備があろうがなかろうが、
テストコードが通ればOKだしテストコードが通らなければNG
テストコードが通ってもバグが有るのなら、
それはライブラリの問題じゃなくて
テストコードを書いた開発会社の問題。
ライブラリの問題じゃない。
っていうか、ライブラリにバグがあれば
テストコードは失敗するってわかってる?
- 50 :デフォルトの名無しさん:2016/08/29(月) 23:19:40.65 ID:BFY9f7LW.net
- おまいらのノリに合わせて基地害演じるの疲れるんだけど
君たち素なの?お酒飲んでる?
- 51 : ◆SEdFBOkLSw :2016/08/29(月) 23:19:43.79 ID:v+VBJ2wi.net
- >>47
誰が、どう、テスト結果を検収して、どうリリースノート書いて、どうリリースして、どう立ち会って、どう研修印貰うの?
動くはずだからどーぞ使ってくださいの世界じゃねえぞ。
- 52 :デフォルトの名無しさん:2016/08/29(月) 23:20:28.64 ID:1MLmR57m.net
- >>48
> 同じテストなら金掛からんの?
> 全く動作変わらないの?
お前何のためにテスト書いてるんだよw
中身が変わっても(改修を行っても)正しく動くことを
証明するためにテスト書いてるんだろw
- 53 : ◆SEdFBOkLSw :2016/08/29(月) 23:20:35.83 ID:v+VBJ2wi.net
- >>49
違うわw
- 54 : ◆SEdFBOkLSw :2016/08/29(月) 23:21:40.95 ID:v+VBJ2wi.net
- >>52
改修しても、正しく動く事を目的にテストしとんのだ。
誰のなんのどの金使うんだよそれに。
- 55 :デフォルトの名無しさん:2016/08/29(月) 23:22:14.47 ID:1MLmR57m.net
- >>51
お前IE使ってるんだよな?
IEのソースコード見れないよな?
それでテストしてるんだろ?
中身が見れなくてもテストしてるんだろ?
それと同じなんだが。テストって言うのは中身の実装に対してやるもんじゃないんだよ。
中身がどうであれテストの内容は同じものになる。
だから、お前がいう
誰がどうテスト結果を研修して〜の内容も
babelを使ったときと使わないときで何も変わらない。
- 56 :デフォルトの名無しさん:2016/08/29(月) 23:22:46.60 ID:BFY9f7LW.net
- でもTypeScript便利だよね
- 57 :デフォルトの名無しさん:2016/08/29(月) 23:23:18.10 ID:1MLmR57m.net
- >>54
> 改修しても、正しく動く事を目的にテストしとんのだ。
改修しても正しく動くことを目的とした
テストが自動化されてるんだろ?
じゃあ、中身をどう変えたところで
テスト内容は何も変わらんだろ。
- 58 :デフォルトの名無しさん:2016/08/29(月) 23:25:37.41 ID:BFY9f7LW.net
- テストって何?
あの誰も読まないテスト項目書に丸付けたあと適当にモンキーテストするやつ?
それともたまにしか通らないバグコードを増やすだけのUnitTest?
- 59 :デフォルトの名無しさん:2016/08/29(月) 23:28:55.81 ID:1MLmR57m.net
- >>58
ユニット(単体)テスト+結合テスト+統合テスト
困ったことにこれらの用語と意味する内容は
会社ごとに微妙に違う。
これらすべてが自動化されていることが理想。
特にウェブアプリは、一般的にブラウザもOSも
バージョンが頻繁に上がるから、自動化されてないとやっていけない。
ここまではbabel導入とは関係ない話な。
で、自動化されてるならば、babel導入しても
テストは変わらないんだからコストも変わらんという話をしてうr。
- 60 : ◆SEdFBOkLSw :2016/08/29(月) 23:29:05.16 ID:v+VBJ2wi.net
- >>55
だから、
babelのバージョン上げる、babelでどうの、が全部要らなくなるよな。使わなければ。
使わないときと使ったときでは明らかに違うじゃん。
babelのバージョン上がったからテスト、が一切無いんだし。
babelのバージョン上げねばならん、も一切無い。
文化オリエントに依存して死んでった会社みたい。
>>57
「改修しても」な。要望出した客か、不具合出した会社の「改修」が金出すわな。保守費からの間接か、スポット契約ならなおさら。
babelのテスト〜納品、検収。
これ誰の持ちだし?
- 61 :デフォルトの名無しさん:2016/08/29(月) 23:30:14.67 ID:1MLmR57m.net
- >>60
> 使わないときと使ったときでは明らかに違うじゃん。
babelを使ったときと使わないときでテストの内容は変わらん。
何を言ってるんだ?
お前はどんなテストを書いてるんだ?
それがどう変わるのか言ってみろよ。
- 62 : ◆SEdFBOkLSw :2016/08/29(月) 23:30:21.50 ID:v+VBJ2wi.net
- >>55
ちなみに、IEがどうのというが、契約次第だよ。
- 63 : ◆SEdFBOkLSw :2016/08/29(月) 23:31:01.12 ID:v+VBJ2wi.net
- >>61
テストの内容じゃなくて、テストの意味と金。
- 64 :デフォルトの名無しさん:2016/08/29(月) 23:31:23.80 ID:1MLmR57m.net
- > babelのバージョン上がったからテスト、が一切無いんだし。
意味が全くわからん。
その理屈だとブラウザのバージョンが上がったらからテストだって一切ないよな?
- 65 : ◆SEdFBOkLSw :2016/08/29(月) 23:31:59.18 ID:v+VBJ2wi.net
- >>61
続き書いてんのに、自分が理解できない事が出てきたら読めなくなる病気にでもかかってんのかな。
- 66 : ◆SEdFBOkLSw :2016/08/29(月) 23:32:52.90 ID:v+VBJ2wi.net
- >>64
は?
babelのバージョン上がったからテスト、がなんで無いと思う?
使ってないからだよ。
- 67 :デフォルトの名無しさん:2016/08/29(月) 23:33:10.79 ID:1MLmR57m.net
- >>63
お前が言ってるテストって何のテストをしてるんだ?
普通は単体テストであれば、
関数に引数を与えて答えがちゃんと帰ってくるかなんだが、
そこに関数の中身がどうなってようが関係ないだろ。
単体テストじゃないならばもっと関数は関係ない。
アプリの動作が全く同じならば、中身が何で作られてようが
全く関係ない。
- 68 :デフォルトの名無しさん:2016/08/29(月) 23:33:38.78 ID:BFY9f7LW.net
- >>66
JavaScriptのバージョンが上がったらどうすんの?
- 69 : ◆SEdFBOkLSw :2016/08/29(月) 23:34:21.31 ID:v+VBJ2wi.net
- >>67
総合テスト。
関係あるから言ってんじゃん。
- 70 :デフォルトの名無しさん:2016/08/29(月) 23:34:21.71 ID:BFY9f7LW.net
- >>67
でもbabelで作ってたらbabelのためにbabelのテストしないとだよね?
- 71 :デフォルトの名無しさん:2016/08/29(月) 23:34:37.44 ID:1MLmR57m.net
- >>66
お前が言ってる内容は
お前にしか通じんわw
だから他の人に聞く
> babelのバージョン上がったからテスト、がなんで無いと思う?
これの意味を説明してくれ(もし理解できる人がいるならばだ)
どうせ誰も説明できないさw
それこそ意味不明である証拠だからね。
- 72 : ◆SEdFBOkLSw :2016/08/29(月) 23:34:55.86 ID:v+VBJ2wi.net
- >>68
上げない。
上げるときは、予算とってやるよ。
- 73 :デフォルトの名無しさん:2016/08/29(月) 23:35:11.30 ID:1MLmR57m.net
- >>70
> でもbabelで作ってたらbabelのためにbabelのテストしないとだよね?
いらない。というかそのテストの一例を書いてみてくれ。
- 74 :デフォルトの名無しさん:2016/08/29(月) 23:35:45.37 ID:BFY9f7LW.net
- >>59
そのテスト自動化されてる環境が、
今の日本にどれだけあると思ってるの?
- 75 :デフォルトの名無しさん:2016/08/29(月) 23:36:18.74 ID:1MLmR57m.net
- >>72
予算取るのかよ(爆笑)
- 76 :デフォルトの名無しさん:2016/08/29(月) 23:36:37.95 ID:BFY9f7LW.net
- >>71
じゃあおまえPHP使ってないだろうけど今すぐPHPのテストしてこいよ
- 77 :デフォルトの名無しさん:2016/08/29(月) 23:36:49.46 ID:1MLmR57m.net
- >>74
自動化されてないならば、
どうやってブラウザがバージョンアップしたときの
テストをしているのか教えてくれ。
- 78 :デフォルトの名無しさん:2016/08/29(月) 23:36:58.58 ID:BFY9f7LW.net
- >>72
銭ゲバSE
泥棒
- 79 : ◆SEdFBOkLSw :2016/08/29(月) 23:37:57.57 ID:v+VBJ2wi.net
- >>71
次の行に書いてんのになぁ。
あるネジのあるロットに不備があるから、そのネジ使ってる製品全部リコール、
の、リコール対象って、ネジ使ってる製品だけじゃん。
- 80 :デフォルトの名無しさん:2016/08/29(月) 23:38:08.25 ID:BFY9f7LW.net
- >>77
みんなで手と手を取り合って愛と根性でテストするんだよ
日本の伝統文化だよ、ゲイシャフジヤマニンゲツ
- 81 :デフォルトの名無しさん:2016/08/29(月) 23:38:36.70 ID:BFY9f7LW.net
- >>75
誰の金で飯食えてると思ってるんだ、クソニートが
- 82 :デフォルトの名無しさん:2016/08/29(月) 23:38:38.48 ID:1MLmR57m.net
- >>79 >>80
なら、そのぽちぽちとやる人海戦術のテストの前に
babelを導入すれば、テストは一回ですみますよねw
- 83 :デフォルトの名無しさん:2016/08/29(月) 23:39:55.78 ID:BFY9f7LW.net
- >>82
バベルのバージョンが上がったらどうすんの?
- 84 : ◆SEdFBOkLSw :2016/08/29(月) 23:40:18.43 ID:v+VBJ2wi.net
- >>75
取るわwだれがタダで働くかww
>>78
なんとでも言えwその代わり出した金の分はきっちり二次請けがどう泣こうが品質保証する。盲判でリリースしてないから安心して金出してくれ。
- 85 :デフォルトの名無しさん:2016/08/29(月) 23:41:35.61 ID:BFY9f7LW.net
- >>84
跋扈の範囲内なのに・・・
- 86 :デフォルトの名無しさん:2016/08/29(月) 23:42:40.99 ID:BFY9f7LW.net
- >>73
No 内容 期待値
1 テストデータを用意する。 正常に購入完了できること。
はいどうぞ
- 87 : ◆SEdFBOkLSw :2016/08/29(月) 23:47:14.95 ID:v+VBJ2wi.net
- >>86
最悪のテスト。
テストに「正常」と言う言葉を使って、「正常となる」とテストすんなバカ。
何がどう正常かを定義してその通りだと確認すんのがテストだよ。
- 88 :デフォルトの名無しさん:2016/08/29(月) 23:47:42.65 ID:BFY9f7LW.net
- 糞社畜ども
そろそろ寝る時間だよ
明日は交通機関が止まる可能性があるんだから1h前に家を出るんだよ
台風程度で遅刻する社会不適合者のゴミ屑は上司のウンコ喰って死ぬのが
この国の伝統文化だからね
- 89 :デフォルトの名無しさん:2016/08/29(月) 23:49:15.00 ID:BFY9f7LW.net
- >>87
自分で考えろ、ガキじゃないんだから
適切なデータを用意して、正常に動作することを保証するんだよ
行間を嫁って小学校の国語の授業で習わなかったのか?
そんなの上司に質問したら張り手もんだぞ
- 90 : ◆SEdFBOkLSw :2016/08/29(月) 23:49:20.25 ID:v+VBJ2wi.net
- >>88
さすがに1hくらい時差出勤しなよ…
コアタイムには間に合うだろ。
- 91 :デフォルトの名無しさん:2016/08/29(月) 23:51:15.79 ID:BFY9f7LW.net
- >>90
コアタイム9-18時
1時間前に出社して社屋の清掃
その1時間前に余裕を持って出社する
- 92 :デフォルトの名無しさん:2016/08/29(月) 23:54:05.50 ID:BFY9f7LW.net
- 君たちにはアジャイル力が圧倒的に足りない
細かい言葉の違いなんかしょうもないことを気にせずテストは気楽に
ドキュメントは書いてはいけない
- 93 :デフォルトの名無しさん:2016/08/29(月) 23:56:37.04 ID:BFY9f7LW.net
- 俺の貴重な夜が糞バカどもとの糞バカみたいなレスの欧州で終わった
損害賠償もんですわ
- 94 : ◆SEdFBOkLSw :2016/08/29(月) 23:59:07.49 ID:v+VBJ2wi.net
- >>93
楽しかったよ。
でもお前酔ってるだろw
- 95 :デフォルトの名無しさん:2016/08/29(月) 23:59:13.57 ID:BFY9f7LW.net
- aaaaaaaaaaaa今日がおわるうううううううううううううuuuuuuuuuu
- 96 : ◆SEdFBOkLSw :2016/08/30(火) 00:00:49.86 ID:aQC/u3Rc.net
- 瑕疵の範囲かと思って、よく見たら跋扈の範囲だったのが面白かったわ。
反復横飛びじゃねえよ。
- 97 :デフォルトの名無しさん:2016/08/30(火) 00:08:00.53 ID:vxcmsfn4.net
- 世界広と言えども、jsでここまでしょーもない話題で盛り上がれるスレはここしかないと思う
- 98 :デフォルトの名無しさん:2016/08/30(火) 00:44:53.70 ID:h5DGk6QO.net
- 本スレから分かれたのは何故?
明らかに主題と離れているから?
それとも、ワッチョイがコワいから?
- 99 : ◆SEdFBOkLSw :2016/08/30(火) 01:11:41.90 ID:aQC/u3Rc.net
- >>98
俺が立てたから気に食わんのだろう。
雑談スレにすれば?
ブラウザとは全く関係のない、そして、古いJavaScriptではなく本人曰く、唯一無二の最新のJavaScriptの質問が来るまで。
- 100 :デフォルトの名無しさん:2016/08/30(火) 09:36:39.00 ID:JoG6iYvQ.net
- >>98
プログラマ板の趣旨からは外れているからですね。
掲示板にこのように書かれています。
http://echo.2ch.net/tech/
> プログラム・ソフトの使い方はパソコン初心者板やソフトウェア板へ。
> ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
> Javascript はweb制作管理板、CGI はWEBプログラミング板へ。
> 業界談義、愚痴はプログラマー板へどうぞ。
JavaScriptは本来Web制作管理板なんですよ。
だからブラウザ専用の話がしたいならそっちでやるべき。
だけど、これが書かれたのはJavaScriptがブラウザでしか動かなかった時代の話で、
サーバーサイドJavaScriptがWeb制作管理板とは思えない。
なのでこちらは純粋に言語の話と普通のコンパイラ言語のように
ビルド周りの話に切り分けるべきでしょう。
その話をWeb制作管理板でやるのは荷が重すぎますからね。
あちらはウェブデザイナーに毛が生えたようなレベルですから。
- 101 :デフォルトの名無しさん:2016/08/30(火) 10:31:44.92 ID:rnePWv6a.net
- ビルド周りの話?
まあそれもいいかもしれんがECMAScriptとスレタイにつけた限りは
過去のESスレのように仕様周りの話も期待させてもらうぞ。
どのみち、このスレはあまり業務向けではないな。
- 102 : ◆SEdFBOkLSw :2016/08/30(火) 11:56:39.50 ID:7P5106vD.net
- >>100
ビルド周りがわからんなぁ。
ES5で書いてても、node動いてるならム板でいいんじゃねえの?逆に。
ビルドするか、せずに使うかは好き好きだし。
ビルドするならブラウザの話もしても良いみたいな論調に聞こえるなぁ。
「純粋に言語の話」と「普通のコンパイラ言語」がビルドで別れてるわけでもあるまいて。
ビルドする処理系も、しない処理系も、しないけどJITな処理系もあるんだし。言語自体も、コンパイラとは全く関係ないじゃん。
「バベる話は含みます」と言いたい事言えばいいのに。
- 103 :デフォルトの名無しさん:2016/08/30(火) 18:30:50.76 ID:rnePWv6a.net
- 別に明確な線引は必要ない。
整理しなきゃならないほどレス多くないんだから。
あくまで目安よ。目安。
- 104 :デフォルトの名無しさん:2016/08/30(火) 21:24:04.22 ID:vxcmsfn4.net
- >>102
でもおまえbabelアンチじゃん?
- 105 :デフォルトの名無しさん:2016/08/30(火) 21:55:39.79 ID:JoG6iYvQ.net
- >>102
> ES5で書いてても、node動いてるならム板でいいんじゃねえの?逆に。
> ビルドするか、せずに使うかは好き好きだし。
そう書いたつもりですけど?
> 「バベる話は含みます」と言いたい事言えばいいのに。
babel語なんてものは存在しない。っていうかもしかして知らないの?
babelでトランスパイルするように書いたコードにbabel専用の特別な命令なんかない。
最新のブラウザであればそのまま動くコード。
> 言語自体も、コンパイラとは全く関係ないじゃん。
あんたが言ったとおり。言語自体はトランスパイラ(babel)とは全く関係ない。
JavaScrpt(=ECMAScript)の部分はブラウザでもnodeでも同じように動く。
nodeで動かないのはDOMの部分だけ。DOMの部分というのは
windowホストオブジェクト経由で参照するもの。
そもそもJavaScriptはプログラム言語なのだから、この板対応だと思うが、
なぜかム板のルールでWeb制作版に追いやられてる。
(昔はウェブ専用の簡易スクリプトでしかなかったからだと思うが)
俺としてはJavaScriptの話をム板でやるのは問題ないと思うが、
Web制作版にもJavaScriptスレは必要というのなら、
DOM関連の話をWeb制作版に持っていこうという話。
- 106 :デフォルトの名無しさん:2016/08/30(火) 22:46:30.57 ID:rnePWv6a.net
- DOMっていうくくりが適切かは分からんけどな。
昔はDOMだったPromiseみたいにWebと関係ない独立したAPIも多いしね。
ブラウザだってWebサイトを回覧するためのものだけではなくなってて
Web自体がプラットフォーム化してる今APIで区切っても仕方ない。
- 107 :デフォルトの名無しさん:2016/08/30(火) 22:49:09.04 ID:JoG6iYvQ.net
- > 昔はDOMだったPromiseみたいに
昔からPromiseはDOMじゃないよ。
- 108 :デフォルトの名無しさん:2016/08/30(火) 22:56:53.51 ID:JoG6iYvQ.net
- そんな話聞いたこと無いので、昔のPromiseがどれのことを
指しているか知らんけど、
PromiseがJavaScriptの世界に提唱された初期の文書は
これなんだがURLからもわかるとおりCommonJSから生まれた
http://wiki.commonjs.org/wiki/Promises
CommonJSっていうのはサーバーサイドJavaScript
- 109 :デフォルトの名無しさん:2016/08/30(火) 23:29:26.97 ID:rnePWv6a.net
- DOM Promiseも歴史も知らんのか。
勉強しなおしてきなさい。
- 110 : ◆SEdFBOkLSw :2016/08/31(水) 00:33:00.02 ID:hBi44Zvn.net
- >>104
アンチでもないよ。
あれは処理系として数えたいだけ。
ただのAltJS。
>>105
専用の命令でもあるし、汎用の命令でもあるよ。
解釈のされ方の問題だってば。
問題ないと思うが、と思うなら変な応酬も復讐まがいのこともせんと、受け入れれば良いんじゃねえの?
勝ち負けにこだわる人だこと。
>>109
こいつその辺の話知らんよ。
そもそも大体殆どのものが借用語みたいな言語だって事も理解してない。
JavaScriptとは関数が一級市民で、って話も、いつぞやドヤ顔でしてたけど、
原始再帰関数もリストも知らん、lispもerlangも見たことないカスだから。
- 111 :デフォルトの名無しさん:2016/08/31(水) 01:42:04.32 ID:mbRHTL3V.net
- >>109
それは標準化されてない
- 112 :デフォルトの名無しさん:2016/08/31(水) 01:44:35.04 ID:mbRHTL3V.net
- しかもFutureという名前
http://www.html5rocks.com/ja/tutorials/es6/promises/
> JavaScript Promise は、最初 "Future" という名前で DOM の一部として実装されていたのが、
> 後に "Promise" と改名されて、最終的に JavaScript の一部として実装されました。
- 113 : ◆SEdFBOkLSw :2016/08/31(水) 02:01:42.67 ID:hBi44Zvn.net
- >>112
最初、と、最終的に、の間に何があったと思ってるんだろう。
- 114 :デフォルトの名無しさん:2016/08/31(水) 08:18:41.23 ID:j/FYmeM2.net
- >>112
すまんな。俺が最初に>>106で要らんちょっかい書けたのが悪かった。
もう事実に関係なく意味のない、相手の意見をどうにか覆すためだけの
単なる言葉の掛け合い合戦になってるのは分かるだろう?
ここらで終わりにしようや。
- 115 :デフォルトの名無しさん:2016/08/31(水) 09:31:50.57 ID:mxX4GOAr.net
- どもまだ◆SEdFBOkLSwが納得してないようだが、
これが初期のJavaScript1.1という仕様書
http://www.planetpdf.com/codecuts/pdfs/tutorial/jsspec.pdf
この段階からDOMはJavaScriptという言語の中に入ってなかったんだよ。
それは今も変わらずで、DOMはJavaScriptの仕様の範囲に入ってないから
ブラウザがDOMを作成して、それをJavaScriptの環境から参照できるようにしている。
これがブラウザでない場合はDOMはではなく、別のものになる。
◆SEdFBOkLSwはどうも曲解してこれを認めないから聞くだけ無駄だが、
この話が違うって言いたい人いる?
- 116 :デフォルトの名無しさん:2016/08/31(水) 12:36:42.81 ID:05Cg2vNV.net
- すみません
親クラスのプロパティを子クラスと共有する方法は何か無いでしょうか
- 117 :デフォルトの名無しさん:2016/08/31(水) 17:46:15.73 ID:j/FYmeM2.net
- 具体的にどうぞ。
普通に考えて継承関係にあるなら共有されてるじゃん。
- 118 :デフォルトの名無しさん:2016/09/01(木) 01:28:37.64 ID:G09cpOvF.net
- すごい、こんな実用的なjavascriptの使い方を始めて見た
comic loスレより転載
パス:sage
ttp://www1.axfc.net/u/3712796
- 119 :デフォルトの名無しさん:2016/09/01(木) 01:31:37.14 ID:qZMo0Rlk.net
- >>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.');
}
}
- 120 : ◆SEdFBOkLSw :2016/09/01(木) 07:33:51.65 ID:yxBt3oxw.net
- >>115
なんでこう、曲解に曲解を重ねたり、
俺が納得するしないにこだわんのかね。
間違ってる部分が1ミリでもあるうちは、納得しないに決まってんじゃんねえ。
納得させたいのか、勝ちたいのか、認めさせたいのか、
自分の知識が不安なのかはっきりしろよ。
- 121 :デフォルトの名無しさん:2016/09/01(木) 08:56:57.32 ID:+FVjZRJv.net
- >>120
お前に聞いてねーよw
ほれ見ろ、誰ひとりとして俺が言ってることが
間違ってるとは言ってないじゃないかw
- 122 :デフォルトの名無しさん:2016/09/01(木) 09:30:51.00 ID:+FVjZRJv.net
- ちなみに>>119はChromeやFirefoxやEdgeで動く
適切なJavaScript(≒ECMAScript)コードであるが、
babelを使って古いIEなどで動かすことができる。
重要なのはこれをbabelで変換するからと言って
babel専用の構文ではない。
- 123 :デフォルトの名無しさん:2016/09/01(木) 09:32:58.55 ID:+FVjZRJv.net
- ◆SEはそれを分かってないんだと思う。
おそらく、babel専用の共通の文法から
新しいブラウザ向けにclassに変換 or 古いブラウザ向けにfunctionに
変換するんだと思っているんだろうね。
AltJSはたしかにそれに近いが、babelは
新しいブラウザ向けの構文を変換するので
babel専用の文法なんてものは存在しない。
- 124 :デフォルトの名無しさん:2016/09/01(木) 09:51:14.48 ID:5kBL1onl.net
- BabelHelperとかいうクソみたいな関数が自動生成されるのは俺の目の錯覚だったか
- 125 : ◆SEdFBOkLSw :2016/09/01(木) 11:24:18.20 ID:4NaaelJA.net
- >>123
わかってるって(笑)
専用の文法とも、専用の言語とも言ってないだろ。
ただ、babelで使うために書いたのであれば、
FireFoxで使うために書いたコードがFireFox向けに書いたコードであるのと同様に
babelで使うために書いたコードは、babel向けに書いたコードであって、ネイティブなFireFoxの為に書いたコードとは意味合いが違うって言ってんじゃん。
webpackも同じ。
専用では無いよ、babelの為に書いたコードだってば。
そういう意味で、ほかのaltJS用のコンパイラに対して書いた言語と「立ち位置」が同じなの。
- 126 :デフォルトの名無しさん:2016/09/01(木) 19:58:52.56 ID:+FVjZRJv.net
- > ただ、babelで使うために書いたのであれば、
だから、そんなのが存在しない。
babelの存在は忘れろ。
ES6で書いてるだけだ。
知ってるか?ブラウザ内部でES6は
ネイティブコードに変換されてるんだぞ?
- 127 :デフォルトの名無しさん:2016/09/01(木) 20:00:45.39 ID:+FVjZRJv.net
- >>125
もしかしてクロスブラウザの開発をやってないの?
まさか、Firefox向けのコード、IE向けのコード
Chrome向けのコードって、完全にファイルが違うのか?
- 128 :デフォルトの名無しさん:2016/09/01(木) 20:01:38.52 ID:+FVjZRJv.net
- > FireFoxで使うために書いたコードがFireFox向けに書いたコードであるのと同様に
> babelで使うために書いたコードは、babel向けに書いたコードであって
この理屈だと、FirefoxもaltJSと立ち位置が同じってことになるが?
- 129 :デフォルトの名無しさん:2016/09/01(木) 20:04:32.89 ID:6CqO2Avn.net
- 誘導されてきました。
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個にしたい
- 130 :デフォルトの名無しさん:2016/09/01(木) 20:11:11.58 ID:np9Y5BfB.net
- >>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を使ったコードはこれを単に書き換えただけ。
- 131 :デフォルトの名無しさん:2016/09/01(木) 20:14:21.32 ID:Wbd9Msfr.net
- >>125
> FireFoxで使うために書いたコードがFireFox向けに書いたコードであるのと同様に
> babelで使うために書いたコードは、babel向けに書いたコードであって
babelというブラウザがあるわけじゃないんだけど?
Firefoxで使うために書いた(babelで変換する)Firefox向けのコードならあるよ。
でもbabelで使うために書いたコードなんてものはない。
babelは変換しかしないわけで、そのコードを使うのはFirefoxやChromeやIE。
そこをあんたは勘違いしてるんじゃない?
- 132 :デフォルトの名無しさん:2016/09/01(木) 20:24:24.66 ID:gqH8EeeU.net
- あ、なるほどw
◆SEdFBOkLSw は babelというブラウザの上で
実行するって勘違いしてるんだw
もしくはbabelとnodeを勘違いしてるとかだな。
- 133 :デフォルトの名無しさん:2016/09/01(木) 20:34:43.59 ID:scPPFiSF.net
- >>125
> babelで使うために書いたコードは、babel向けに書いたコードであって、ネイティブなFireFoxの為に書いたコードとは意味合いが違うって言ってんじゃん。
これがbabelで使うために書いたコード
let func = () => console.log('hello');
これがネイティブなFirefoxのために書いたコード
let func = () => console.log('hello');
何が違うのか教えてほしい。
- 134 :デフォルトの名無しさん:2016/09/01(木) 21:48:08.46 ID:scPPFiSF.net
- 意味合いが違うとは言ってるが
どう違うかは何も言ってない。
- 135 : ◆SEdFBOkLSw :2016/09/01(木) 22:01:56.97 ID:x5Fi8ahc.net
- >>126
アホか。
>>127
完全には違わんよ。
多少は足周りは違うな。
>>128
頭おかしいのか?
>>132
違うわ。お前が理解なさすぎ。
>>133
処理系が違う、だな。
babelで処理したJSが実際に動かすのは、下記コードで、ES6ではない。
'use strict';
var func = function func() {
return console.log('hello');
};
匿名関数で無くなってるよね。
- 136 :デフォルトの名無しさん:2016/09/01(木) 22:05:27.31 ID:scPPFiSF.net
- >>135
これがbabelで変換して出力されたコード
'use strict';
var func = function func() {
return console.log('hello');
};
これがネイティブなFirefoxのために書いたコード
'use strict';
var func = function func() {
return console.log('hello');
};
何が違うのか?
- 137 :デフォルトの名無しさん:2016/09/01(木) 22:12:28.00 ID:scPPFiSF.net
- もしかしてさ、テストを書いてリファクタリングして
よりシンプルに書き直して、以前と全く同じように動くコードなのに、
元のコードとは記述が違うから、そういう修正はするなって言うタイプの人なの?
- 138 : ◆SEdFBOkLSw :2016/09/01(木) 22:16:55.85 ID:x5Fi8ahc.net
- >>136
それES6じゃないじゃん。正確にはES6でもあり、お前が否定していた古いJavaScriptじゃんww
$msg='hello world';
echo $msg;
が、perlなのかphpなのかは、どっちに食わすかによって決まるんじゃねえの?
何か違うか?見た目も動作も同じだけど、別物だよね。
>>137
手弁当で全部終わらせるんならいいんじゃねーの?
予算使うなら、余計なことすんなって言うけど。
- 139 :デフォルトの名無しさん:2016/09/01(木) 22:19:19.19 ID:scPPFiSF.net
- >>138
古いJavaScriptだからなの?
babelで変換した結果とFirefoxがネイティブで動かすコードは
全く一緒なのに何が問題なの?って聞いてる。
重要なのは同じように動くこと(仕様を満たしていること)であって
中身の実装なんてどうでもいいでしょw
- 140 :デフォルトの名無しさん:2016/09/01(木) 22:20:42.89 ID:scPPFiSF.net
- >>138
> が、perlなのかphpなのかは、どっちに食わすかによって決まるんじゃねえの?
> 何か違うか?見た目も動作も同じだけど、別物だよね。
どちらもFirefoxに食わせていますよw
babelで動かすんじゃなくて
babelで変換したコードをFirefoxで動かすか、
babelで変換しないコードをFirefoxで動かすかって
話をしてるんだから。
- 141 :デフォルトの名無しさん:2016/09/01(木) 22:27:03.04 ID:scPPFiSF.net
- >>138
お前が何を不安がっているのかわかったわw
前提条件: どちらも同じブラウザFirefoxで動かします。
1. ES6のコードをそのままFirefoxで動かす
(※ES6のコードのテストの結果は当然問題ない)
2. ES6のコードをbabelで変換してESにしたコードをFirefoxで動かす
(※ES5のコードのテストの結果は当然問題ない)
どちらもテストでOKとでてるのに、もしかしたら
バグがあるんじゃないか?って思ってるだろw
- 142 :デフォルトの名無しさん:2016/09/01(木) 22:40:53.56 ID:UGSC1Nbq.net
- 美しいソースを志すプログラマからしたら自動生成には美学をまるで感じない
男なら黙ってprototype
不便に堪えて手書きでNative JavaScript
という冗談はともかく、納品するスクリプトはクライアントが使うんだから変な書き方も最新の玩具も使わずにネイティブのみで分かりやすくコメント添えながら書くのが普通じゃないのか?
- 143 :デフォルトの名無しさん:2016/09/01(木) 22:40:55.87 ID:Yfa1ihki.net
- babelがたまたま実行結果が読めるというだけで
ブラウザみたいな巨大なブラックボックスと区別する意味がよく分からん
- 144 :デフォルトの名無しさん:2016/09/01(木) 22:46:12.95 ID:scPPFiSF.net
- >>142
ネイティブかどうかは重要じゃない。
正しく動くことが重要。
そのためにテストをするんだよ。
- 145 :デフォルトの名無しさん:2016/09/01(木) 22:50:05.31 ID:scPPFiSF.net
- >>143
だよね。例えば内部でES6をES5に変換してから
実行するブラウザがあったっておかしくない。
そもそもJavaScriptなんてコンパイルして
バイナリにてから動かしているわけで、
そのバイナリなんてブラウザが違ったら違うだろうし、
同じブラウザでもバージョンアップしたら違う可能性もある。
どういう変換が行われて実行されるかは大した問題じゃない。
仕様通りに動いているかが重要。
- 146 : ◆SEdFBOkLSw :2016/09/01(木) 23:09:24.58 ID:x5Fi8ahc.net
- >>141
全然わかってねえじゃん。
- 147 :デフォルトの名無しさん:2016/09/01(木) 23:15:55.41 ID:scPPFiSF.net
- >>146
ん?ってことは、
ES6をbabelで変換してFirefoxで動かすのと
ES6をそのままFirefoxで動かすのは
全く同じだってことでいいかい?
はい か いいえ で答えてくれ。
- 148 :デフォルトの名無しさん:2016/09/01(木) 23:21:14.21 ID:uGmloWI1.net
- >>122
細かい話だけど、extendsは古いブラウザでは完全にエミュレートされないよ。
extendsはprototypeだけでなくstaticなメソッドも継承する。
つまり、任意のプロトタイプを持つコンストラクタを作れないと行けないのだけど、
これはES2015以前ではブラウザの独自実装の__proto__を使わないと実現できない。
- 149 :デフォルトの名無しさん:2016/09/01(木) 23:25:45.46 ID:scPPFiSF.net
- >>148
完全にエミュレートできないことでバグになることはなく、
エミュレートできない機能を使っていればバグになる。
でも、それを含めてテストするわけだからね。
動かないならテストで分かる。
ブラウザ間の互換性がない問題と同じよ。
互換性がない部分があっても、テストで動けば問題ない。
- 150 :デフォルトの名無しさん:2016/09/02(金) 00:00:38.90 ID:OcKaQeg4.net
- >>149
客「IE8で動かないんだけど?」
- 151 :デフォルトの名無しさん:2016/09/02(金) 00:01:45.81 ID:gFIXdWf6.net
- >>150
IE8でテストしろよw
- 152 :デフォルトの名無しさん:2016/09/02(金) 00:04:27.07 ID:gFIXdWf6.net
- うーん、マジで分かってない気がするわ。
テストコードっていうのは、一つ書くだけで
それをどのブラウザでも実行可能にしておくものなんだよ。
もちろん同じテストを何度も短時間で実行できる。
いろんなブラウザが有って色んなバージョンがあって
バージョンアップが頻繁なウェブの世界ではそれができてないと
やってられないでしょ?
コードを修正するたびにサポートしてる全ブラウザ
(IE8をサポートするのならIE8以上)で全部テストしてる。
- 153 : ◆SEdFBOkLSw :2016/09/02(金) 00:28:38.18 ID:nUqjDcPO.net
- >>147
いいえ、だな。それは。
全く同じではない。挙動が同じでも。
>>149
エミュレートできないコードを使わない、って事は、
エミュレート前提で書いてて、やっぱ違うんじゃねえの?そういう意味でもないけど。立ち位置の話は。
>>152
テストコードが一つでいいわけ無いじゃん。。
単体ならいざ知らず。
- 154 :デフォルトの名無しさん:2016/09/02(金) 00:29:55.10 ID:OcKaQeg4.net
- IE8で開いたことあるならBabelが如何に実用性が低いかくらい察しとけよ……
- 155 : ◆SEdFBOkLSw :2016/09/02(金) 00:34:20.17 ID:nUqjDcPO.net
- >>154
babelでトランスパイルするために書いたJSと、webkitで動かす為のJSが、同じES6で記述するから意味論的にも同じスクリプトなんだってさw
コンパイラや実行環境の為のスクリプトじゃなくて、言語仕様で、それが同じものか決まるらしい。
意味としては前者はなんの意味もなく、立ち位置的にはAltJSの類と同じ意味のものだと思うんだけどね。
- 156 :デフォルトの名無しさん:2016/09/02(金) 00:35:15.71 ID:gFIXdWf6.net
- >>154
> 全く同じではない。挙動が同じでも。
なら挙動が同じ場合に何が問題になる?
そこだよね。挙動が同じななのに全く同じではないというだけで
問題点を今までなにも言ってない。
例えば、
var foo = function() { console.log(123) }
foo()
と
function foo() { console.log(123) }
foo()
は、全く同じではないと言うだろう。
そう、全く同じではないと言うだけで、
何が問題かを言わない。
- 157 :デフォルトの名無しさん:2016/09/02(金) 00:37:02.54 ID:gFIXdWf6.net
- >>153
> テストコードが一つでいいわけ無いじゃん。。
じゃあいくつ用意するんだよ?
なお普通のウェブサイトであり使うブラウザは
ユーザーが決めることなので、まったく制御できないものとする。
いくつ用意するんだよ?じゃなくて
いくつ用意してるんだよ?って聞いたほうが良いなw
- 158 :デフォルトの名無しさん:2016/09/02(金) 00:41:24.46 ID:gFIXdWf6.net
- >>155
> babelでトランスパイルするために書いたJSと、webkitで動かす為のJSが、同じES6で記述するから意味論的にも同じスクリプトなんだってさw
意味はどうでもいい。
重要なのは動作。
実行された結果が同じであれば、
それは正しく動くといって良い。
例えばJavaScriptは、ARM搭載したAndroidと
Intel CPUを搭載したWindowsで、
違う機械語で動くいているが、そんなこと関係ないだろ?
- 159 : ◆SEdFBOkLSw :2016/09/02(金) 00:45:42.23 ID:nUqjDcPO.net
- >>156
だから、問題だとかそうじゃないって。
その問題は、babelで変な地雷踏みたくないとかそういう問題であって(それは無いと言うなら、githubで何件openあるか数えてこい)
何より単純に、目的が違うって言ってんの。
トランスパイラに任せるためのソースコードと、それ自身がネイティブで動くためのスクリプトだって。
日本語が読めない外国人のために、社内の人への翻訳依頼のための書く文書と、社外の日本語がわかる外国人に出す文書は、
例え同じフォーマットで同じ内容が書いてあって、即ち同じ文書でも、目的も意味も違うでしょ。
社内の人への文書の方は、それ単体では全く意味をなさないの。
- 160 :デフォルトの名無しさん:2016/09/02(金) 00:46:44.70 ID:gFIXdWf6.net
- >>155
> 意味としては前者はなんの意味もなく、立ち位置的にはAltJSの類と同じ意味のものだと思うんだけどね。
AltJSのAltってどういう意味か知ってる?
Altnative(代案)って意味だよ
Altnative JavascriptっていうのはJavaScriptの代案。
そしてAltJSというのは具体的に言えば、
TypeScript、CoffeeScript、Dartなどの"プログラミング言語"
はぁ〜、いいから調べてきてごらん。
AltJSっていうのは言語のことだからさ。
babelは言語ではなくてトランスパイラ。
言語はFirefoxでも動くECMAScript。
AltJSのような別言語じゃないの。
全くジャンルが違うのだから「同じ意味」になるわけないだろ
- 161 : ◆SEdFBOkLSw :2016/09/02(金) 00:51:18.87 ID:nUqjDcPO.net
- >>158
どうでも良くないから言ってんじゃん。
お前が馬鹿だから同じだ、どうでもいい、なぜなら「多分同じ動きをしているから」だっていうならそうなんだろ。openの数は見えないみたいだけど。
>Androidとwindows
CPUは関係ないが、ブラウザは関係あるっしょ。
caniuseでも見てこいよ。
だからターゲット依存だって言ってんのに。
- 162 : ◆SEdFBOkLSw :2016/09/02(金) 00:53:33.61 ID:nUqjDcPO.net
- >>160
だから、立ち位置だって言ってるじゃん。
お前ホントに馬鹿だな。
AlternativeなJavaScriptでしょ、ES6以前のJavaScriptから見れば。
AltJSは別言語?
機械語になれば同じなんでは?ww
いや、別言語だとはわかってるけど。
ES6と、古いJavaScriptも、後方互換のある別言語だけどね。
- 163 :デフォルトの名無しさん:2016/09/02(金) 00:55:55.82 ID:gFIXdWf6.net
- >>159
> その問題は、babelで変な地雷踏みたくないとかそういう問題であって(それは無いと言うなら、githubで何件openあるか数えてこい)
Issueはないな。(設置されてない)PRは66件オープンだな。
新機能もあるから問題の数が66件ではない。
バグはすごく少ないようだね(笑)
バグの話をするならブラウザにだってバグが有る
Firefoxのバグがいくつあるか調べてごらん。
https://bugzilla.mozilla.org/describecomponents.cgi?product=Firefox
あんた他人のバグを言い訳にするんじゃないよ。何のためにテストしてる?
ブラウザやOSにバグが有ったって、その上で正しく動くアプリを
作れないと仕事にならんのだよ。
- 164 :デフォルトの名無しさん:2016/09/02(金) 01:01:16.42 ID:gFIXdWf6.net
- >>162
> だから、立ち位置だって言ってるじゃん。
「立ち位置」ってなんだよ?
全く違うものを並べて「立ち位置は同じ」ってお前が主張しているが
その立ち位置が同じである条件はなんだ?
その条件は世間一般に広く認められたものなのか?
お前が自分で作ったオレオレ条件だろ。
俺は言葉の定義通りの話をしている。
AltJSはJavaScriptではない言語のこと。
ES6はJavaScriptだし、babelは言語ですら無い。
> 162
> AltJSは別言語?
> 機械語になれば同じなんでは?ww
また話をすり替えようとしてるな。
俺がいつbabelが機械語になると言ったんだよ?
JavaScriptもAltJSは最終的に機械語になる。
だがbabelは言語ではないのだから機械語にならない。
俺はAltJSは言語であり、babelは言語ではないと言ってる。
- 165 : ◆SEdFBOkLSw :2016/09/02(金) 01:06:04.26 ID:nUqjDcPO.net
- >>163
Issue無かったわwこれは俺が悪い。勘違いしてた。
プルリクにfixesは結構あったけど。
ブラウザのバグを把握するために、LTS使うんだけど。
俺は別に言い訳にはせんよ。むしろ、請けが言い訳できない様にその辺は抑えてる。
そんな当たり前の事言われても困るわ。
だからブラウザごとに違うソースが一部でもあるんじゃん。さっき言ったけどさ。
- 166 : ◆SEdFBOkLSw :2016/09/02(金) 01:11:01.30 ID:nUqjDcPO.net
- >>164
何度も言ったけどさぁ。
全く違うのは、中身だろ。
意味は同じく、古いJavaScriptにトランスパイルするんじゃん。
立ち位置としては、JavaScriptのソースコードを出力するためのなんらかのコンパイラだよ。
C#のコンパイラもvb.netのコンパイラも、.netのコード吐くためのコンパイラ。
AltJSのソースコードと、babelの為に書いたソースコードが同じだとは言ってないでしょ。
babelは言語ですらない、ってそれそうだよ。ES6のトランスパイラだよ。
tscと同じようなもんだ、って言ってんの。
トランスパイラだから、そのためのソースコードであって、ネイティブのES6とは目的が違う同じ書式の、扱われ方の違う物だってばさぁ。
- 167 :デフォルトの名無しさん:2016/09/02(金) 01:13:32.36 ID:gFIXdWf6.net
- > ブラウザのバグを把握するために、LTS使うんだけど。
ChromeのLTSってどれだ?
エンドユーザーが使うブラウザは指定できない。
例えばAmazonやGoogleはどうしてる?
ブラウザ指定してるか?
> だからブラウザごとに違うソースが一部でもあるんじゃん。さっき言ったけどさ。
それは全体の何%ぐらいだ?
- 168 :デフォルトの名無しさん:2016/09/02(金) 01:16:19.67 ID:gFIXdWf6.net
- >>166
> 全く違うのは、中身だろ。
> 意味は同じく、古いJavaScriptにトランスパイルするんじゃん。
だから、中身が違っても
動作が同じなら問題ないだろって話をしてる。
なんで中身を拘るんだよ。
中身の話をすれば、babel以前に
IEとFirefoxとChromeでもぜんぜん違うだろ。
中身がぜんぜん違っても、同じ動作をするようにしないといけないんだよ。
その手めにテストコードが有って、そのテストコードにより
同じ動作をすることが保証されている。
テストコードで同じ動作をすることが保証されているんだから、
中身を変えることに何の問題も発生しない。
論理的な結論がこれ。
お前は、中身が違ってるだろ(どん!)で話が終わってる。
問題があるか無いかまで話を続けろよ。
- 169 : ◆SEdFBOkLSw :2016/09/02(金) 01:17:05.79 ID:nUqjDcPO.net
- >>167
chronium+自社パッチ。
Amazonとグーグル?
ポリフィルまみれな上にブラウザごとに違うソース吐いてなかったっけ?
逆アプローチであって、決して「同じソースでなんとかする」って発想じゃないよ。
なんで%聞かれんのかわからん。それで何が知りたいの?
どう計数してもイチャモンつけられるのが目に見えてるわ。コード量でもファイル数でもステップ数()でも。
- 170 : ◆SEdFBOkLSw :2016/09/02(金) 01:19:59.68 ID:nUqjDcPO.net
- >>168
えー。中身が違っても問題ないなら、ES6使用禁止で古いブラウザで、ブラウザごとにソース書いて、babel禁止でもいいって事なの?
中身にこだわってはないよ。お前の認識が間違ってる(と言うか、最初にbabelはAltJSと同じ立ち位置、に噛み付いてきた)だけであって、
問題があるかどうかは問題ですらないんだよ。
中身が違ってるというか、お前の理解力が足りなすぎる。
- 171 :デフォルトの名無しさん:2016/09/02(金) 01:20:00.88 ID:gFIXdWf6.net
- >>166
> AltJSのソースコードと、babelの為に書いたソースコードが同じだとは言ってないでしょ。
> babelは言語ですらない、ってそれそうだよ。ES6のトランスパイラだよ。
> tscと同じようなもんだ、って言ってんの。
AltJSは言語だ。
babelは言語ではない。「ES6のトランスパイラ」だ
tscは「TypeScriptという言語」のトランスパイラだ
AltJSとTypeScriptはどちらも言語なのだから同じようなものだが、
TypeScript(言語)とtsc(トランスパイラ)は同じようなものではない。
同じようにbabelはtscと同じようなものであって、TypeScriptと同じようなものではない。
- 172 :デフォルトの名無しさん:2016/09/02(金) 01:22:46.85 ID:gFIXdWf6.net
- >>170
> えー。中身が違っても問題ないなら、ES6使用禁止で古いブラウザで、ブラウザごとにソース書いて、babel禁止でもいいって事なの?
なんで中身が違っても問題ないって話をしているのに、
お前はまた中身の話をしているんだ?
古いブラウザであっても、テストが通って問題なく動くのであれば
中身が違っていても問題ないのは当たり前だろ。
なんで中身まで全く一緒にしようとしてるんだ?
そもそも全く同じコードじゃ動かないって話をお前はしただろ。
だから中身をブラウザごとに違うコードにしてまで、同じ動きをするようにするんだろ?
ならば中身がどんなに変わろうが、同じ動きをするのであれば
問題ないと言ってる俺の話も理解できるはずだが?
- 173 : ◆SEdFBOkLSw :2016/09/02(金) 01:23:30.53 ID:nUqjDcPO.net
- >>171
だから、
babelは言語ではない。「ES6のトランスパイラ」だ
tscは「TypeScriptという言語」のトランスパイラだ
「ES6のトランスパイラ」で処理されるためのJavaScriptソースがある、
「tscは「TypeScriptという言語」のトランスパイラ」で処理されるためのソースがある。
トランスパイラで処理されるためのソースがある。
それらのソースは、トランスパイラで処理されるためのものである。
おわかり?
- 174 :デフォルトの名無しさん:2016/09/02(金) 01:23:45.28 ID:gFIXdWf6.net
- > 最初にbabelはAltJSと同じ立ち位置、に噛み付いてきた)だけであって、
babelはトランスパイラ、AltJSは言語
全然立ち位置が違う。
tsc(トランスパイラ)とTypeScript(言語)が立ち位置が同じと言っているようなもん
- 175 :デフォルトの名無しさん:2016/09/02(金) 01:25:11.41 ID:gFIXdWf6.net
- >>173
> 「ES6のトランスパイラ」で処理されるためのJavaScriptソースがある、
それはどんなJavaScriptソースなんだ?
ここに具体的なコードを書いてみろ。
- 176 : ◆SEdFBOkLSw :2016/09/02(金) 01:25:31.37 ID:nUqjDcPO.net
- >>172
理解はしてるよ。
中身が同じにこだわるのは、
「一つの言語で云々、babelというのはなんに対しても最新のJavaScriptが使えるもの」ってお前の発言に則って話してるから、
それを否定するなら俺としてはありがたい話だ。
- 177 : ◆SEdFBOkLSw :2016/09/02(金) 01:27:24.62 ID:nUqjDcPO.net
- >>175
そりゃ、ES6だよ。
let func = () => console.log('hello');
ただ、目的としてはトランスパイラにかけるためのソースなだけで。
だから、目的論なの。
>>159の後半な。
- 178 :デフォルトの名無しさん:2016/09/02(金) 01:27:51.64 ID:gFIXdWf6.net
- 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
- 179 :デフォルトの名無しさん:2016/09/02(金) 01:28:54.56 ID:gFIXdWf6.net
- >>177
> let func = () => console.log('hello');
そのコードはどの部分が、
「ES6のトランスパイラで処理されるため」になってるんだ?
- 180 : ◆SEdFBOkLSw :2016/09/02(金) 01:29:42.84 ID:nUqjDcPO.net
- >>179
お前敢えて誤読してるか理解してないフリしてんの?
それともマジでバカなの?
- 181 : ◆SEdFBOkLSw :2016/09/02(金) 01:30:47.92 ID:nUqjDcPO.net
- あきれるわ。おやすみ。
- 182 :デフォルトの名無しさん:2016/09/02(金) 01:31:21.75 ID:gFIXdWf6.net
- >>179
俺は
「ES6のトランスパイラ」で処理される、ES6のコードと
「ES6のトランスパイラ」で処理されない、ES6のコードの
違いが何かってことを聞いてるんだよ。
- 183 :デフォルトの名無しさん:2016/09/02(金) 01:37:01.83 ID:gFIXdWf6.net
- ES6のコードはES6に対応してない古いブラウザに対応するときにだけbabelで変換する必要があるのであって、
ES6に対応しているブラウザではそのまま動かせるって分かってないのかな?
babelを通すか通さないかの違いは、それぞれのブラウザで動作するかどうかの
テストコードが有って、それで保証されるから何の問題もない。
中身が変わるだけで(中身にはこだわりません)
動きが変わってなければ(テストで保証する所)何も問題ない。
babelは言語ではなくトランスパイラであって
言語はES6。このES6はブラウザでネイティブに動く言語
その他のAltJSはブラウザでネイティブに動かない言語
だから、AltJSとES6は「同じ言語というカテゴリで比較すると「立ち位置が違う」と言えよう。
なおAltJS(言語)とbabel(トランスパイラ)はそもそもカテゴリが違う。
- 184 :デフォルトの名無しさん:2016/09/02(金) 03:38:22.58 ID:kWkQROgW.net
- 漫画喫茶のダイス(DICE)を運営してるのはベルシティ(ザ シティ)というパチンコ店です。
ザ シティ・ベルシティ伊勢佐木町店(神奈川県)の周りにはソープランドがたくさんあります(ソープランド街です)。
このパチンコ店は韓国人か中国人が経営者の可能性があります(パチンコ店のほとんどは韓国人が経営してます)。
ザ シティ・ベルシティ伊勢佐木町店の周りには韓国料理店がたくさんあり、数キロ先には横浜中華街があります(韓国人、中国人がすごく多い地域です)。
普通はこんな場所に店を出さない気がします。
DICE系列 関東圏4
http://hayabusa6.2ch.net/test/read.cgi/netspot/1467360487/
ダイス(DICE)=まんがランド(漫画喫茶)=ちょっと気分転館(漫画喫茶)=ねっとラボ=ベルシティ(ザ シティ)というパチンコ店
↑
パチンコ店のほとんどは韓国人が経営してます
- 185 :デフォルトの名無しさん:2016/09/02(金) 12:34:18.86 ID:n2lhI+0z.net
- >>149
違う。普通はテストに引っかかる前でも後でも、
互換性のない部分で問題ないように書こうねということになる。
つまり使えるのはちょっとES2015に近いaltJSであって、
ES2015フルに使っていい状況で作るのとは大きく違う。
- 186 :デフォルトの名無しさん:2016/09/02(金) 22:23:40.28 ID:gFIXdWf6.net
- >>185
> 互換性のない部分で問題ないように書こうねということになる。
それはbabelを使わなくても、やってることだろ?
babelが対象とするのはECMAScriptの部分でDOM APIは対象外。
特定のブラウザでしか使えないAPIに比べれば
互換性がない部分は遥かに少ない。
その互換性がない部分っていうのはES6の部分なんだから・・
おまえ、普段ES6のコード書いてないだろ?
お前はES6のコードを書かないように気をつけている。
それに比べれば書かないように気をつけるコードはほんの僅かだよ。
互換性がない所はES5で書けば良いんだしね。
- 187 :デフォルトの名無しさん:2016/09/02(金) 22:25:51.84 ID:gFIXdWf6.net
- ざっと見る限りbabelとES6で互換性がない点は全体の1%程度だよ。
知らずに書いてしまうことはほとんどありえない。
- 188 :デフォルトの名無しさん:2016/09/02(金) 22:34:24.02 ID:gFIXdWf6.net
- ★SE 曰く、
中身が違うからポリフィルは使ってはいけない。
動作が同じになるように作られていたとしても
中身が違うからポリフィルは使ってはいけない。
また、MSが実装したPromiseも使ってはいけない。
PromiseはFirefoxが作ったものが唯一の本物であり、
中身が違えば動作が同じでも別物である。
- 189 :デフォルトの名無しさん:2016/09/03(土) 05:16:03.21 ID:N47o0j5/.net
- >>186
Proxyが非対応でSymbolやWM周りが非常に気をつける必要がある時点で1%じゃ済まないね。
>>それはbabelを使わなくても、やってることだろ?
やらないし。もうモダンブラウザはほぼ100%対応してるのだから。
実質8割のbabelとは全然全然違う。
おまえ、普段ES6のコード書いてないだろ?
- 190 :デフォルトの名無しさん:2016/09/03(土) 08:43:25.11 ID:GDuT1yRG.net
- レスバトル案の定自演だった
- 191 :デフォルトの名無しさん:2016/09/03(土) 10:02:38.69 ID:1nvmVGqX.net
- >>189
ならそれだけ使わなければいいだけだろ?w
babelを使わない場合に、Proxyが使えるのか?
- 192 :デフォルトの名無しさん:2016/09/03(土) 10:08:49.40 ID:EZVA2rF2.net
- > Promiseで実行指定した処理群内部では
> タイマー関連を使えないのでしょうか?
使える。
> これが使えないならば、WebWorkerでも極力使わない方が良い様に思います。
タイマー関連が使えるかどうかが、WebWorkerとどう関係があるのか
さっぱりわからん。
まず前提として以下のような制限がある。
https://developer.mozilla.org/ja/docs/Web/API/Web_Workers_API/Using_web_workers
> 例えば、Worker 内から直接 DOM を操作することはできません。また window
> オブジェクトのデフォルトのメソッドやプロパティで、使用できないものがあります。
そして以下にはsetTimeoutはWorkerの中で使えると書いてある。
https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Functions_and_classes_available_to_workers
- 193 :+ JavaScript の質問用スレッド vol.122 +の73:2016/09/03(土) 10:41:23.55 ID:e3VOV86p.net
- 此方に来ましたか。 お返事ありがとうございます。
Promiseは非同期処理群の処理と認識しています。
WebWorkerは単発の非同期処理と思っています。
WebWorkerはタイマーの稼働・停止の一連の処理を処理内部でまとめているのに対して
Promiseは非同期処理群の処理中ならば
タイマーの稼働・停止を別の処理で対応出来るかと思っていました。
Promiseの指定した処理群の個々でタイマーの稼働・停止が必要ならば
WebWorkerと同じ感じで作れば良いのかな。
Promiseは未使用なので、VS2015の実装状況を確認してから試してみます。
- 194 :デフォルトの名無しさん:2016/09/03(土) 10:53:57.66 ID:EZVA2rF2.net
- > Promiseは非同期処理群の処理と認識しています。
それ自体は間違ってはいない。
だけど重要なのはJavaScript自体はシングルスレッドということ
まずJavaScript(≒ECMAScript)自体にスレッドを扱う機能はない。
setTimeoutやXMLHttpRequest とかはブラウザが提供する機能であり、
その内部ではスレッドが使えるし、使っている。
そしてこれらの機能からイベントと言う形で処理の状況を知ることができる。
イベントは通常コールバックを使うことで知ることができるが、
Promiseっていうのはコールバックの一部である「処理が終了したというイベント」を
容易に扱えるようにしたもの。
終了したと言うイベントというのは「setTimeoutで指定した時間が過ぎた」とか
XMLHttpRequestであれば「HTTPリクエストが完了した」とかいうイベント。
なので、HTTPリクエストが10%完了、20%完了という進捗状況をPromiseで知ることは出来ない。
- 195 :デフォルトの名無しさん:2016/09/03(土) 10:58:35.97 ID:EZVA2rF2.net
- WebWorkerというのはブラウザが提供する機能で
JavaScriptでスレッドを使うものとざっくり言われているが、
正確に言えば、JavaScriptではスレッドが使えないのは変わらずで、
ブラウザが新たなスレッドを作って、そのスレッドの環境内で
新たなJavaScriptを実行するというのが正しい。
WebWorkerの作り方なんてこんなんだしねw
> var myWorker = new Worker("worker.js");
他の言語のスレッドの作り方を知ってると、
JavaScriptファイルを指定するとか、なんじゃこりゃ?って思うよw
そして、メインのJavaScriptと、Workerで作ったスレッドとは
postMessageを使って通信することができる。
メッセージの内容は自由だから、どんなやり取りでもできる。
- 196 :デフォルトの名無しさん:2016/09/03(土) 11:03:08.37 ID:EZVA2rF2.net
- >>193
> Promiseは未使用なので、VS2015の実装状況を確認してから試してみます。
Promiseは別にVS2015で実装されてるかどうかを考える必要はないよ。
動かすブラウザがPromiseの機能を持っているかどうかだから。
そしてPromiseは純粋なJavaScriptの範囲で実装できるのでJavaScriptライブラリが存在する。
jQueryライブラリ導入のようにPromiseライブラリ導入すればよい。
そももブラウザが持ってるPromiseの機能は最低限のものなので
それを拡張して便利なメソッドを追加したbluebirdが使われることも多い。
http://bluebirdjs.com/docs/getting-started.html
- 197 :デフォルトの名無しさん:2016/09/03(土) 11:04:45.06 ID:EZVA2rF2.net
- >>193
で、ここまで説明したんだが、
> WebWorkerはタイマーの稼働・停止の一連の処理を処理内部でまとめているのに対して
> Promiseは非同期処理群の処理中ならば
> タイマーの稼働・停止を別の処理で対応出来るかと思っていました。
それはこれが意味不明だからなんだわw
そもそもの前提知識がずれてるよって話。
- 198 :デフォルトの名無しさん:2016/09/03(土) 11:16:01.65 ID:EZVA2rF2.net
- 違う方面から説明をすると、
ある処理をする関数があったとして「その処理をWebWorkerを使って実行する。」
というのは文章として成り立ってる。
だけど「その処理をPromiseを使って実行する。っていうのは文章としておかしい。
Promiseっていうのは単に終了イベントを知るためのものだから。
ある処理をする関数があったとして、その関数はPromiseオブジェクトを返す。
その処理の終了はPromiseの仕組みで知ることができる。
というのであれば文章として問題ない。
従来は処理の終了をコールバックを使って判断していた。
- 199 :193:2016/09/03(土) 11:20:58.37 ID:e3VOV86p.net
- >>194-195
説明ありがとうございます。
WebWorkerは自分で書いてみた事が有ります。 入門書片手ですが。
入門書でメッセージの構成が明確でなかったので、苦労しました。
Promiseの動作確認は、現在有るWebWorkerの処理の塗り替えでやってみます。
ありがとうございました。
- 200 :デフォルトの名無しさん:2016/09/03(土) 11:35:38.80 ID:EZVA2rF2.net
- > Promiseの動作確認は、現在有るWebWorkerの処理の塗り替えでやってみます。
そこがなんかずれてるんだよねw
PromiseかWebWorkerか じゃないんだよw
スレッドを使う方法としては、2通りの方法があって、
WebWorkerを使うか、WebWorkerを使わないか。
WebWorkerを使わないでスレッドを使うっていうのは、
WebWorker以外のブラウザの機能、つまりsetTimeoutやXMLHttpRequestが
内部で使ってるスレッドを使うって意味ね。
で、これらとPromiseは全く別の概念。Promiseは処理の終了処理を
コールバックよりも容易に判定したいだけ。
だから、XMLHttpRequest + Promise (Fetch APIがまさにこれ)や
WebWorker + Promiseという組み合わせで使うんだよ。
WebWorkerからは通常postMessageを使って処理をやり取りするんだけど、
その部分(new Worker部分まで含めて)を関数やクラスでラッピングしてPromiseを返すことで
「内部で別スレッドを使って非同期で処理してその結果をPromiseで知ることができる」
と言うものを作ることができる。
- 201 : ◆SEdFBOkLSw :2016/09/03(土) 12:00:04.87 ID:o5roFWxE.net
- 俺は、どれが悪でどれが善って話はしてないんだよなぁ。
>>188
Promiseがどうの、誰かどうの、じゃ無くて。
中身が違えば動作が同じでも別物である、の着眼点の違いがわかったわ。
ブラックボックスを許さないし、違うのであれば、その違う部分が同じ動きをする保証が必要である、それは、「ほぼ同じ」では無意味で「完璧に全く同じ」と保証されないといけない、
故に完璧に同じだと保証する工数が無駄なので、ポリフィルは使わない。ポリフィルのバージョンアップに追従する価値は余計にない、
だな。
要はその程度の開発だってことだろ、Webってのは(笑)
- 202 : ◆SEdFBOkLSw :2016/09/03(土) 12:01:39.62 ID:o5roFWxE.net
- >>200
イベントドリブンに最初からしておけば、Promiseなんか要らんのだけどな。
何を発火させて何をリッスンするかの違いに落ち着くんだけど。
- 203 :デフォルトの名無しさん:2016/09/03(土) 12:18:31.50 ID:EZVA2rF2.net
- >>202
> イベントドリブンに最初からしておけば、Promiseなんか要らんのだけどな。
実現できるか? 実現できないか?
だけで判断するのは未熟な証拠。
Promiseはコールバックでもできることを別の形で実現したもの。
必須か必須でないかの話をするならば、最初から必須ではない。
Promiseは可読性とメンテナンス性を上げるための道具なんだから。
だからお前がしたり顔で「要らんのだけどな」って言ったところで
俺は最初からそれは知ってるとしか言いようがない。
無くてもできると言うのを踏まえた上でみんな話をしてるのに、
あんたはその話をする最低ラインに到達していない。
- 204 :デフォルトの名無しさん:2016/09/03(土) 12:20:20.05 ID:EZVA2rF2.net
- >>201
> ブラックボックスを許さないし、違うのであれば、その違う部分が同じ動きをする保証が必要である、それは、「ほぼ同じ」では無意味で「完璧に全く同じ」と保証されないといけない、
じゃあ、お前、IEとChromeとFirefoxは
ブラックボックスで、同じ動きをするという保証もないけど、
どうすんの?
OSの違いもあるし、今はAndroidで機種ごとに
微妙に動き違うんだけど?
お前、そんなんで仕事できるの?
「俺はIEでしか仕事できません!」じゃ
仕事にならなんからねw
- 205 :デフォルトの名無しさん:2016/09/03(土) 12:22:20.80 ID:EZVA2rF2.net
- Webはその程度って言うけど、
Webは多くのブラウザやOSに対応するのが絶対条件なんだが、
何を持って「Webはその程度」って言ってるの?
顧客の条件が、多くのブラウザやOSといった
ブラックボックスの環境に対応することなんだけど?
お前は「その程度」のことも出来ないの?
- 206 : ◆SEdFBOkLSw :2016/09/03(土) 13:38:12.23 ID:WfmCkwdk.net
- 何を反射的に噛み付いてるかわからん。
俺も知ってるから使わんのだよ。
それが読み取れない時点でお前がついてこれてなくない?
IEもFireFoxもChromeも全然ブラックボックスじゃないじゃんw
お前がなんのソースも読んだことなければ、MSと保守契約結んだこともなさすぎて笑えるわ。
iOSのバージョンやAndroidごとに動き違うね。だから、社用には決まった機種を使うんだよ。
そんなんで仕事できるよ。
>>205
お前のレベルをもって、その程度、って言ってるんだよ。
- 207 : ◆SEdFBOkLSw :2016/09/03(土) 13:44:41.92 ID:WfmCkwdk.net
- 一回、このアホがどれくらいの規模の物を商品として作ったのか聞いてみたいわ。
- 208 : ◆SEdFBOkLSw :2016/09/03(土) 13:48:52.73 ID:WfmCkwdk.net
- まぁいいや。
こいつの言うのが何であれ、なんの意味も成さんな。
実務ゼロっぽいし。
- 209 :デフォルトの名無しさん:2016/09/03(土) 13:57:18.18 ID:EZVA2rF2.net
- >>26
へ? IEのソースコード公開されてないよ?
保守契約結んでもIEのソースは公開されない。
つーかソースコード開示する契約があるとしたら
それは保守契約じゃないしwww
> iOSのバージョンやAndroidごとに動き違うね。だから、社用には決まった機種を使うんだよ。
それはお前が決められることじゃない。
客が決めること。
客が世の中で使われているスマホの9割に対応するって言ったら
それに対応しないといけないんだよ。
で、どうするの? お前は出来ないの?w
- 210 :デフォルトの名無しさん:2016/09/03(土) 13:57:46.31 ID:EZVA2rF2.net
- わかると思うけど、>>26じゃなくて>>206あてね。
- 211 :デフォルトの名無しさん:2016/09/03(土) 13:59:56.35 ID:EZVA2rF2.net
- それから、babelで変換したとしても変換したコードは見れるし、
babel自体もオープンソースなので、全然ブラックボックスではありませんね
ブラックボックスってどこから出てきたのでしょうか?w
- 212 : ◆SEdFBOkLSw :2016/09/03(土) 14:02:05.07 ID:WfmCkwdk.net
- >>209
結んでから言ってねw
後半。
違うよ。要件定義ってそうじゃない。
対応してほしいなら、どの機種のどれに対応して欲しいか明確じゃないと。
保証できない事を約束できないっしょ。
お前、マとしての実務以前に、要件定義すらしたことないの?
9割って、一体何だ?w
- 213 : ◆SEdFBOkLSw :2016/09/03(土) 14:03:10.48 ID:WfmCkwdk.net
- >>211
お前は本当に馬鹿だな。
それはブラックボックスとは関係なく、中間層の話だろ。
議題が変わると混乱するタイプの話かな。
- 214 :デフォルトの名無しさん:2016/09/03(土) 14:13:08.29 ID:EZVA2rF2.net
- >>212
> 対応してほしいなら、どの機種のどれに対応して欲しいか明確じゃないと。
普通は、IE9以上、Edge、Chrome、Firefoxとかだな。
Edge、Chrome、Firefoxに関しては短期間でバージョンアップするので
固定するようなことはしないし、できない。
一例をあげるとこれぐらいの頻度で更新されてる。1ヶ月に1回だな。
https://ja.wikipedia.org/wiki/Google_Chrome
48.0.2564 2016-01-20
49.0.2623 2016-03-02
50.0.2661 2016-04-13
51.0.2704 2016-05-25
52.0.2743 2016-06-02
53.0 2016-06-02
> 保証できない事を約束できないっしょ。
> お前、マとしての実務以前に、要件定義すらしたことないの?
保証できないことは約束しない。当たり前のことなんだが?
お前開発したときよりも1ヶ月あとにリリースされるバージョンで動作するかどうやって保証するんだ?
なんでもかんでも保証するなよ。保証しませんの一言でおしまいだろ。
> 9割って、一体何だ?w
は? 世の中に存在するスマホの機種の9割に対応するってことだけど?
OSで言えば、iOS8以上 + Android 4.0以上とか。
これ実際に仕事で大手企業から言われた条件な。
お前、スマホ対応とかの仕事できないだろw
- 215 :デフォルトの名無しさん:2016/09/03(土) 14:14:40.62 ID:EZVA2rF2.net
- >>213
> それはブラックボックスとは関係なく、中間層の話だろ。
ブラックボックスって言い出したのはお前だろ?w
お前の言うブラックボックスはどこなんだって話。
babelはブラックボックスではないと確定しました。
はい、で?お前は何がブラックボックスだって?
- 216 :デフォルトの名無しさん:2016/09/03(土) 14:24:14.31 ID:EZVA2rF2.net
- そういやソースコード見るために、MSと保守契約(笑)の話もあったな。
こっちは恥ずかしくてスルーするんだろうなw
- 217 : ◆SEdFBOkLSw :2016/09/03(土) 14:26:12.90 ID:WfmCkwdk.net
- >>214
普通とか別に要らないよw
Edgeに関しては撒くKBでコントロールできる、
FireFoxはLTS
ChromeはChronium
で固定できるし、してるよ。
その後の保証が要るなら保守契約結んでもらうだけじゃん?
こっちが保証するのは、要件定義どおりに決めた結果でしかないし、検収印もらったらそれで良い話。
世の中に存在するスマホを全部列挙してもらわないと、その9割なんか定義できんだろ。
iOS8以上、なら俺も発注出すな。
>>215
うん、得体のしれないポリフィル、に対して言ってた。
読めば良いだけ、なら、そんな工数無駄なので、作れば良いだけ。
お前はなんのソースも読まずに、これで大丈夫だ!なぜならこれが最新のもので、オープンソースのグループによって更新されてるから、って態度なんだけど。
- 218 :デフォルトの名無しさん:2016/09/03(土) 14:26:14.91 ID:bZbzbaoD.net
- 面白いのが居るね。
制御系をやらせてみたいなwww
- 219 : ◆SEdFBOkLSw :2016/09/03(土) 14:28:46.36 ID:WfmCkwdk.net
- >>216
ソースコード見ると言うよりも、
動かん、スペックシート送れって言ってみ?
無駄の多いMSDNみたいなクソみたいなの送ってくるから。
それでもおかしいとなると、人間よこせ、確認しろって言って、
確認後KB作ってくれるよ。
.net 2.0になりたての頃よく呼んだ。
いずれにせよ、ソースを見ずに、中身は理解できるし、おかしければ治る。
まぁ、そんなことした事ないんだろうけど(笑)
- 220 :デフォルトの名無しさん:2016/09/03(土) 14:36:29.05 ID:EZVA2rF2.net
- > Edgeに関しては撒くKBでコントロールできる、
俺をどうやってKBでコントロールする気だ?w
ウェブの世界っていうのは世界中の人間を相手にしてる。
コントールするのは不可能という大前提がある。
この大前提は、お前の一存で決めることは不可能な絶対条件。
お前にはこの世界の仕事は無理だよw
> その後の保証が要るなら保守契約結んでもらうだけじゃん?
> こっちが保証するのは、要件定義どおりに決めた結果でしかないし、検収印もらったらそれで良い話。
だからbabel使って変換したソースコードが、こっちが保証しているブラウザで
動けばそれでおしまいってだけなんだが?お前が言っていることの範囲内だろ。
当たり前だがbabelはソースコードを変換するだけで納品物は変換されたソースコードだ。
だからbabelが勝手にバージョンアップすることはない。babelが原因で動かなくなることはない。
> 世の中に存在するスマホを全部列挙してもらわないと、その9割なんか定義できんだろ。
Andorid 4.0以上のスマホという条件があれば、全部列挙することはできるだろw
その作業をどちらがやるかは客と相談して決めること。
> うん、得体のしれないポリフィル、に対して言ってた。
ポリフィルはすべてソースコード公開されてるから
ブラックボックスじゃないなwwww
で、ブラックボックスって何の話?w
- 221 :デフォルトの名無しさん:2016/09/03(土) 14:37:53.45 ID:EZVA2rF2.net
- >>218
> 面白いのが居るね。
> 制御系をやらせてみたいなwww
制御系は特許の塊だから、ブラックボックスのまま
使う必要があるだろうね。
ブラックボックスだから保証できません!
だからブラックボックスの環境では仕事できません!
じゃだめなんだよね。
ブラックボックスがあるという前提で
どこまで保証できるか?できないかを
はっきりさせるのが仕事。
- 222 : ◆SEdFBOkLSw :2016/09/03(土) 14:38:54.38 ID:WfmCkwdk.net
- >>218
死屍累々だぞこの調子だと。
でも未だに業界的に変なの動いてるからな。
俺もCバスはそろそろ捨ててほしいと思うが、思うだけであって実際問題は金かかるからな。リプレイス待ち案件。
そういうのを見た上で、それでも、彼は最新のコードを使えば大丈夫だと思っているに違いないよ。
>>220
うん、だから、イントラの話しであって、Webの話じゃないじゃん。
で、その上で、お前の開発への考え方聞いて、Webってそんなもんなんだな()って言ってんの。理解できる?
ブラックボックスじゃない、は読んだあとわかるんだよね。それまでは依然としてブラックボックスだよ。
読む工数は誰かくれんの?
- 223 :デフォルトの名無しさん:2016/09/03(土) 14:39:52.29 ID:EZVA2rF2.net
- >>219
> 確認後KB作ってくれるよ。
いや、KB作って終わりじゃないだろ・・・・
ウェブの世界では多くの人と環境を相手してる。
という変えられない絶対条件があるんだよ。
その条件で仕事しないといけないの。
KBあればばっちりだ!じゃない。それを世界中の人に使わせないことには
お前のやり方じゃ仕事できんだろ。つまりそのやり方は破綻してるんだよ。
- 224 :デフォルトの名無しさん:2016/09/03(土) 14:42:29.94 ID:EZVA2rF2.net
- >>222
> うん、だから、イントラの話しであって、Webの話じゃないじゃん。
だからお前は「ウェブ程度」のことができないって結論なの。
一度世界中の人と環境を相手に仕事してごらん?w
> ブラックボックスじゃない、は読んだあとわかるんだよね。それまでは依然としてブラックボックスだよ。
> 読む工数は誰かくれんの?
何を読む工数?
ChromeやFirefoxはブラックボックじゃなくて
お前はそれを読んでるんだろ?
その工数を誰かがくれたんだろ?
マッチポンプかw
ブラックボックスは駄目だ!ソースコード読まなきゃ!
→ ソースコード読む工数は誰がくれるんだ!
じゃあブラックボックスでやれよw
- 225 : ◆SEdFBOkLSw :2016/09/03(土) 14:42:49.83 ID:WfmCkwdk.net
- 客と相談して決める事なら、決めた結果が要件定義に反映する内容であって、
9割、が要件じゃないような。
納品はバベったコード、で、改修させてえらい工数見積もられたことあるな。
即切ったわ。
>>221
NDAさんはどこ行くんだよ。
- 226 : ◆SEdFBOkLSw :2016/09/03(土) 14:45:38.93 ID:WfmCkwdk.net
- >>224
Web程度、って言うほどの事でもないような。
Web屋には一目置いてるけど、結局こういう精神性なのか、と残念に思ってる所だけど。
世界中の人は相手にしてるよ。割と。
FireFoxとchromeは読んでるよ。いわば環境じゃん。
- 227 :デフォルトの名無しさん:2016/09/03(土) 14:46:43.87 ID:EZVA2rF2.net
- >>225
> 客と相談して決める事なら、決めた結果が要件定義に反映する内容であって、
はぁ。いっつもこいつそうだよ。
俺が以下の文脈で「相談」って言ったら、
> Andorid 4.0以上のスマホという条件があれば、全部列挙することはできるだろw
> その作業をどちらがやるかは客と相談して決めること。
その「相談」だけを抜き出して、別の意味で使うんだよ。
卑怯だよねw
> 客と相談して決める事なら、決めた結果が要件定義に反映する内容であって、
> 9割、が要件じゃないような。
9割は客が決めた要件。相談して決めていない。俺が言って「相談」とはAndoroid4.0以上のスマホの列挙作業を誰がやるかだ。
- 228 :デフォルトの名無しさん:2016/09/03(土) 14:48:21.76 ID:EZVA2rF2.net
- >>226
> FireFoxとchromeは読んでるよ
その工数は誰が出してると思ってるんだ?
じゃあ、FirefoxでPromiseを定義している
ソースコードはどれだい?みたいな質問に
答えられるはずだよな。
一応証拠として聞いておこうか?
- 229 :デフォルトの名無しさん:2016/09/03(土) 14:48:57.81 ID:EZVA2rF2.net
- 言っとくが読むっていうのはファイルを探すことじゃないぞ
その中身まで理解していなければ読んだことにはならない。
- 230 : ◆SEdFBOkLSw :2016/09/03(土) 14:49:16.41 ID:WfmCkwdk.net
- 知財かどうかなんて、APIが知財かどうかすら関係するんだから、弁理士弁護士案件だろ。
ブラックボックスのまま、ってどういう事かわからん。
エラッタかどうか挙動を確かめる行為すら、既に解析行為だろ。
- 231 :デフォルトの名無しさん:2016/09/03(土) 14:50:05.16 ID:EZVA2rF2.net
- >>225
> 納品はバベったコード、で、改修させてえらい工数見積もられたことあるな。
なんでだ? babelは単なるES6なんだが?
そのES6のコードをbabelで変換せずに
納品すればいいだけじゃねーかw
- 232 : ◆SEdFBOkLSw :2016/09/03(土) 14:50:24.49 ID:WfmCkwdk.net
- >>228
何の噛みつき方かわからんよ。
そりゃ業務知識だからほいほい言うわけないじゃん。
- 233 :デフォルトの名無しさん:2016/09/03(土) 14:50:48.72 ID:EZVA2rF2.net
- >>230
> 知財かどうかなんて、APIが知財かどうかすら関係するんだから、弁理士弁護士案件だろ。
> ブラックボックスのまま、ってどういう事かわからん。
そもそもお前が、ブラックボックスって話を始めたよな?
マッチポンプかwwww
- 234 :デフォルトの名無しさん:2016/09/03(土) 14:51:38.25 ID:EZVA2rF2.net
- >>232
> そりゃ業務知識だからほいほい言うわけないじゃん。
Promiseのソースコードがどれかって質問しただけで、
業務知識(?)なんか聞いてませんよw
- 235 : ◆SEdFBOkLSw :2016/09/03(土) 14:51:58.07 ID:WfmCkwdk.net
- >>231
請け先に言えw
babel変換元を納品してないが故に、うち用にも使ってる社内ライブラリがうんぬん、その当時のうんぬん、で結果そうなったんだよ。
バイナリ書かせてる時代にはよくあった話だけど、またこれかと。
- 236 : ◆SEdFBOkLSw :2016/09/03(土) 14:52:14.35 ID:WfmCkwdk.net
- >>233
お前頭おかしいだろ。
- 237 : ◆SEdFBOkLSw :2016/09/03(土) 14:52:38.97 ID:WfmCkwdk.net
- >>234
仕事で調べたことは、会社の資産な。
- 238 :デフォルトの名無しさん:2016/09/03(土) 14:53:23.42 ID:aPmwwe34.net
- >>222
> Cバス
脱線するが、君はそっち系なのか?酷く懐かしすぎる名前だが。
新商品なんて出てるのか?母艦が手に入らないと思うが。
- 239 :デフォルトの名無しさん:2016/09/03(土) 14:53:30.60 ID:EZVA2rF2.net
- >>235
> babel変換元を納品してないが故に、うち用にも使ってる社内ライブラリがうんぬん、その当時のうんぬん、で結果そうなったんだよ。
はぁ? それって実行ファイルのバイナリ(exeファイル)だけを納品して
ソースコードを納品してないという、ちゃんとした仕事をしてない所に
ありがちな話ってだけじゃねーか。
それは明らかにbabelの問題じゃねーよw
- 240 :デフォルトの名無しさん:2016/09/03(土) 14:57:15.99 ID:EZVA2rF2.net
- >>237
> 仕事で調べたことは、会社の資産な。
それは違うぞw
データベースの著作権の話でもぐぐれ。
内容が非公開情報であるとか特殊な条件が揃わない限り、
それは会社の資産にはならない。
(当然オープンソースのChromeのソースコードは非公開ではない)
- 241 : ◆SEdFBOkLSw :2016/09/03(土) 14:57:18.23 ID:YIu9WVDu.net
- >>238
80年生まれのくせにそのへん触れるか故にオッサン扱いされてるけど、
機械から人体から得体のしれない設備まで手広く通信周りやってるよ。
手に入らんから困るんよ。もう共食いも良いところだよ。
捨てないで!ってアナウンスするレベル。
- 242 :デフォルトの名無しさん:2016/09/03(土) 14:59:04.36 ID:EZVA2rF2.net
- まあなんてていうか、
◆SE って変化させる能力が
極端に劣ってるみたいねw
- 243 : ◆SEdFBOkLSw :2016/09/03(土) 15:00:35.21 ID:YIu9WVDu.net
- >>239
babelのせいじゃない?うん、まぁ、その会社がbabelをつかったせい、であってbabelに罪はないのは確かだよ。
だから、ネイティブでES6で書くか、古いJavaScript書くかどっちかにして、って話なんだけど。
>>240
それは著作権というか、それこそ知財の問題であって、
そうじゃなくて俺なり社内のだれなりが工数使って調べたことは、資産なの。
お前働いた事無いの?
- 244 :デフォルトの名無しさん:2016/09/03(土) 15:01:00.03 ID:EZVA2rF2.net
- >>241
え? Cバスの中身、ブラックボックスじゃなくて
全部知り尽くしてるんでしょ?
自分で作れば良いんじゃないですかねぇw
- 245 : ◆SEdFBOkLSw :2016/09/03(土) 15:01:30.94 ID:YIu9WVDu.net
- >>242
そりゃ、敢えて変化させないからな。
それで良いと思ってるよ。
- 246 : ◆SEdFBOkLSw :2016/09/03(土) 15:01:54.37 ID:YIu9WVDu.net
- >>244
誰がどの金で?
お前バカなの?
- 247 :デフォルトの名無しさん:2016/09/03(土) 15:02:36.24 ID:EZVA2rF2.net
- >>243
> だから、ネイティブでES6で書くか、古いJavaScript書くかどっちかにして、って話なんだけど。
ネイティブでES6を書くという結論でいいだろw
そして納品してから1ヶ月後にな、やっぱり古いブラウザでも動かしたいって
客に言われたらな、そんときにbabel使って変換してやれば良いんやで?
- 248 :デフォルトの名無しさん:2016/09/03(土) 15:02:47.73 ID:aPmwwe34.net
- >>241
ちなみにCバスにこだわる理由は?
まあ色々便利だとは聞いているが、保守部品なら仕方ないとして、新規商品で使う必要はない。
今時ならarduinoなりラズパイみたいな奴にに仕込んでイーサで通信する方が楽なはずだが。
- 249 :デフォルトの名無しさん:2016/09/03(土) 15:03:41.91 ID:EZVA2rF2.net
- >>246
馬鹿はお前だ。
ブラックボックスが嫌なら金がかかる。
金がかからないならばブラックボックスのままでやる
ブラックボックスのままテストをしっかりやれば
それで十分だって話をしてるんだよ。
- 250 :デフォルトの名無しさん:2016/09/03(土) 15:05:42.57 ID:EZVA2rF2.net
- 俺は、ブラックボックスを許さないと言ったお前の>>201の発言を
否定しているだけ。
つまりお前は金がかかるからブラックボックスのままでやるんだろ?
- 251 :デフォルトの名無しさん:2016/09/03(土) 15:07:52.79 ID:EZVA2rF2.net
- つーか組み込み系でもCバスを使った製品の中身が
変わることだってあるんだが。
同じ製品であっても、中身を変えることがある。
中身にこだわるな。中身が違っていたとしても、
テストに合格すればそれは問題ない。
- 252 : ◆SEdFBOkLSw :2016/09/03(土) 15:09:41.97 ID:YIu9WVDu.net
- >>247
え?うん、ネイティブで動くものに対してES6で書くことは全く否定してないけど、どしたの?
やっぱり古いブラウザで動かしたい、は多分断るな。
余程言われても、babelは使わずに直すと思うよ。
>>248
新商品で積極的には使わないよ。
リプレイスするなら新しい組込の仕様品あるからそっちで構築するんだけど、
2台壊れたから!とかそう言うの多い。
法改正で制度上この数値が残らないと困るからこれだけDBに残して!とか。
上的にはSIになったから単位だけ、で改修受けたのがマズったなって思ってるとのこと。
Cバスにこだわると言うより、何故か他社製旋盤に相乗りしてる、とか、いにしえの何かがあるらしいよ。自分が幼児の頃の歴史を紐解いて良いもの出てきた事無いから積極的には聞かん。
- 253 : ◆SEdFBOkLSw :2016/09/03(土) 15:12:09.68 ID:YIu9WVDu.net
- >>249
しっかりやれば、が定義できないじゃん。
見た目上、データ上正しければそれは正しいデータだ、って言う根拠。
>>250
逆。
金がかかるから、ブラックボックスを使わんのだよ。
- 254 : ◆SEdFBOkLSw :2016/09/03(土) 15:12:51.42 ID:YIu9WVDu.net
- >>251
何を言うてるかわからん。
ソリューション売りしてんだよ。
- 255 :デフォルトの名無しさん:2016/09/03(土) 15:18:04.76 ID:EZVA2rF2.net
- >>252
> やっぱり古いブラウザで動かしたい、は多分断るな。
> 余程言われても、babelは使わずに直すと思うよ。
そのコスト誰がだすん?w
babel使ったら簡単に対応できる。
テストコードがあるからそのテストを通せば良い。
babelはブラックボックスではないがブラックボックスと考え
中身がどうなっても、テストが動けば良い。そうだろう?
いざとなったら中身を確認することもできる。
どうせ古いIEへの対応でIEはブラックボックス
IEとFirefoxとChromeで動きも違う。バージョンごとで動きも違う。
ホワイトボックスとして扱うことはコストの点から実質不可能。
問題はコストだよ。最新のES6を使ってコストを減らせ
babelを使えば古いブラウザに対応するコストも減らせる。
- 256 :デフォルトの名無しさん:2016/09/03(土) 15:18:46.25 ID:EZVA2rF2.net
- >>254
> 何を言うてるかわからん。
他の人に聞きたい。
> ソリューション売りしてんだよ。
↑これ何を言うてるか分かる人おる?w
- 257 :デフォルトの名無しさん:2016/09/03(土) 15:19:58.56 ID:EZVA2rF2.net
- >>253
> 金がかかるから、ブラックボックスを使わんのだよ。
じゃあ、ブラックボックスがあったら、
それに相当するものを自分で作るわけですよね?
その金誰が出すの?w
はぁ、ブラックボックスがあるという
絶対変えられない世界に生きてるって分かってないのかな?
IEやWindowsのソースコードは保守契約結んでも見れません(笑)
- 258 :デフォルトの名無しさん:2016/09/03(土) 15:20:23.76 ID:EZVA2rF2.net
- > やっぱり古いブラウザで動かしたい、は多分断るな。
能力がないから
- 259 :デフォルトの名無しさん:2016/09/03(土) 15:23:04.80 ID:aPmwwe34.net
- >>252
なるほど何となく状況は想像がついた。回答ありがとう。
- 260 :デフォルトの名無しさん:2016/09/03(土) 15:23:16.22 ID:EZVA2rF2.net
- 古いブラウザ古いブラウザっていうけど、
最新のSafari 9でもArrow functionsに対応していない。
http://caniuse.com/#feat=arrow-functions
書いてあるSafari 10はまだリリースされてません
- 261 :デフォルトの名無しさん:2016/09/03(土) 15:25:34.19 ID:EZVA2rF2.net
- 最新のブラウザだけを相手にする場合でも
このブラウザはこのES6の機能に対応している?していない?
って考えて特定のブラウザのために使うのをやめるよりも
babel使ってES6の機能はどのブラウザでも使える。
ただし一部完璧じゃないものがある。
って考える方がはるかにコストが低いんだわ。
Android 4.0以上という要件だと、それらの
ブラウザを全部集めないとテストできないからね。
- 262 : ◆SEdFBOkLSw :2016/09/03(土) 15:50:53.07 ID:YIu9WVDu.net
- 「簡単に対応が出来る」
ようわからんな。
対応はできてもテストの金がかかる事は否定しないとか。
メンツの勝負になってない?
そういうメンツの勝負であれば、お前の勝ちで良いけど。
ホワイトボックスとして扱う事はコスト上不可能、ってそれくらいのコストしかかけない製品作んないから良いんだよ。
変な言い方で、敢えて語弊のある言い方すると、
高いほう、全て内製が良いとすら言われる製品だからお前がいってる製品とは多分だいぶ違うので、その辺の予算とは乖離あると思うわ。
ただその金の根拠は必要だけど。
内製良いよ。ライブラリに左右されんから。
コンパイラと処理系自体すら昔は作ってたしな。
そろそろまた元号でテキトーにやってる会社は死に目見るだろうし。
- 263 :デフォルトの名無しさん:2016/09/03(土) 15:53:21.77 ID:EZVA2rF2.net
- >>262
> 対応はできてもテストの金がかかる事は否定しないとか。
そこはbabelと関係ないからだよ。
babelを使っても使わなくてもテストはしないといけないだろ。
テスト内容自体は同じ。
- 264 :デフォルトの名無しさん:2016/09/03(土) 15:53:47.63 ID:EZVA2rF2.net
- >>262
> 内製良いよ。ライブラリに左右されんから。
そのコストは誰が出すと思ってるんだ?w
- 265 : ◆SEdFBOkLSw :2016/09/03(土) 15:57:26.09 ID:YIu9WVDu.net
- >>263
え?うん。
なら、最初から使わずに書けばいいんでは?って話だけど。
>>264
客。
あのさあ、何が言いたいの?
babelは完璧なES6で、AltJSとは一線を画す物だ、とエヴァンジェリスト気取りたいなら、それでいいよ。
もうその話題には触れん。
何が自分の苛立ちの原点なの?否定されたところ?正しいと思ってるところが理解されないところ?
- 266 :デフォルトの名無しさん:2016/09/03(土) 15:58:34.24 ID:EZVA2rF2.net
- >>265
> なら、最初から使わずに書けばいいんでは?って話だけど。
図式化しないと理解できんのかな?w
[ 開発 ] + [ テスト ]
テストは同じ。開発はbabelを使ったほうが簡単になる。
- 267 :デフォルトの名無しさん:2016/09/03(土) 15:59:48.40 ID:EZVA2rF2.net
- >>265
> babelは完璧なES6で、AltJSとは一線を画す物だ、とエヴァンジェリスト気取りたいなら、それでいいよ。
だからbabelはトランスパイラ。言語はES6(JavaScript)
AltJSとはJavaScriptではない言語のことなんだから
その言葉自体が間違ってんの。
- 268 :デフォルトの名無しさん:2016/09/03(土) 16:00:56.87 ID:EZVA2rF2.net
- >>265
なに? コストは客が払うだって!
ならbabel使ってもコストは客に払わせばいいじゃないかw
もっともbable使ったほうがコストは下がるけどな。
- 269 :デフォルトの名無しさん:2016/09/03(土) 16:04:48.79 ID:EZVA2rF2.net
- どうせbabelはES6に完全対応してないと言ってくるだろうから
先に反論しておくと、最新版Safariも完全対応してないw
ブラウザごとにコードを変えるっていうのはコストがかかる。
どうせ客がコストを払うから知ったことじゃないっていうんだろうけどさw
ブラウザがバージョンも含めればたくさんあって
ウェブの世界では特定のブラウザとバージョンを指定できないのだから
使用されているほぼ全てに対応しないといけない。
それごとにコードを変えるなんてやってられないので、
babelを使う。babelを使うとそれぞれのブラウザの差が減る。
そのため単一のコードで多くのブラウザに対応できるのでコストも減る。
どうせコストは客が払うから、いくらかかっても
知ったことじゃないって考えの人にはわからないかw
- 270 :デフォルトの名無しさん:2016/09/03(土) 16:16:36.11 ID:EZVA2rF2.net
- ◆SE に言っておくけど、
お前、頭の固いおっさんに育ってしまったな
リアルで誰も言ってくれないだろうから俺が言ってあげるよ。
お前は子供の頃誰もが、ああはなりたくないと思ってる
頭の固いただのおっさん。
変化することをやめ、挑戦することをやめ、
現状維持。これ以上何もしたくない。
そういう、頭の固いおっさん。
- 271 : ◆SEdFBOkLSw :2016/09/03(土) 16:30:32.32 ID:P8EZ6WkE.net
- 研究開発は、研究開発費でしてるけどね。
変化させない事と、変化させる事、ひいては、運用する事、改善する事は全部ひとつながりだけど、全部それぞれが違うよ。
何かを変化させない事が別の何かを変化させることだったり、何かを変化させて何かを変化させない事もあるし、
そんな革新、革新!と騒いでも、何が革新か自体よくわからなくなるよ、そのうち。
今まであった物に、新しい名前をつけると割としっくりくるようなもんと同じ。今俺が何ヤジってるかはわかると思うけど。
- 272 :デフォルトの名無しさん:2016/09/03(土) 16:35:14.63 ID:EZVA2rF2.net
- ◆SE が今度は研究開発とか
また関係ない話をしだしたぞw
お前と話をしてると話がまとまらないって
よく言われるだろwww
- 273 :デフォルトの名無しさん:2016/09/03(土) 16:36:40.92 ID:EZVA2rF2.net
- 俺が言ってるのは、◆SE 自身に
変える能力がないってこと。
個人の能力だよ。
あ、だから変えるのは研究所とかがやってくれることで
俺には関係ないって発想につながってるのかwww
- 274 : ◆SEdFBOkLSw :2016/09/03(土) 16:40:21.73 ID:P8EZ6WkE.net
- そもそも、立ち位置の問題であって、
それは処理系作ってた人間が一番わかってんだけどなぁ。
同じ正しいCのソースでも何でコンパイルするかで割と意味が違ったり、そのチューニング、このコンパイラだと無意味だからオプティマイザにまかせましょ、みたいな話に近い。
そのうち、C++が出来て、でもまだCへのトランスパイラで、そのうち、STLだ、いや、これは標準になったんだ、って無駄なやりとりがあった時代を知らんのだろうな。俺もリアルタイムじゃないけど。
- 275 : ◆SEdFBOkLSw :2016/09/03(土) 16:41:21.34 ID:P8EZ6WkE.net
- >>273
知らんがな。。どんな仕事をしてるんだ、と言うから仕事の話をできる範囲で話したんじゃん。
個人的には色々しとるよ。
- 276 : ◆SEdFBOkLSw :2016/09/03(土) 16:43:51.70 ID:P8EZ6WkE.net
- その上で、最初の方のレスに戻るけど、
そういう先端()の人間が殲滅すべきものはbabelであって、babel無けりゃ古いブラウザも死んでいくんじゃねえの?本来死んでる物を活かすからそうなるんじゃねえの?みたいな話してたんじゃん。
だからネイティブで書くことには何の問題も無いって言ってるんだけど。
- 277 : ◆SEdFBOkLSw :2016/09/03(土) 16:44:46.76 ID:P8EZ6WkE.net
- なんかプライド傷つけたんならすまんな。
そんじゃ。
- 278 :デフォルトの名無しさん:2016/09/03(土) 16:46:08.31 ID:EZVA2rF2.net
- >>274
> 同じ正しいCのソースでも何でコンパイルするかで割と意味が違ったり、
やっぱり、同じソースでC言語の仕様の範囲なのに、
コンパイルされた結果が違うから動作まで違うんですよね?w
でもbabelはES6で書いたコードをES5に変換するだけです。
だから動作は同じです。
- 279 :デフォルトの名無しさん:2016/09/03(土) 16:46:40.99 ID:EZVA2rF2.net
- >>277
プライド? 傷ついたのはお前じゃね?
お前、俺が傷つくようなこと言ってないじゃんw
- 280 :デフォルトの名無しさん:2016/09/03(土) 16:52:59.71 ID:EZVA2rF2.net
- >>276
お前はネイティブで書きたいから、古いブラウザに対応するために
ES5でコードを書くって言ったばかりじゃんw
じゃあ今まさにそのES5のコードは増えていってるわけで、ES6へ変化できないってことになる。
えとさ、コードをES6用に書き換えるのにもコストは掛かるんだよ。
どうせ金は客が出すからって考えなんだろうけど。
babelを使っていれば、今すぐES6ネイティブでコードを書ける。
ES5の対応を切るのはbabelでES6からES5への変換プリセットをOFFにするだけでいい。
babelを使っていれば、ES6をブラウザでネイティブに動かす対応は一瞬で終わる。(当然だがテストは常に行われている)
それがAltJSとは全然立場が違うって話に繋がる。
AltJSで書けば、AltJSの設定をOFFにしても動かずコード書き換えが必要だからね。
重要なのは今ES5のコードを減らすこと。
対応ブラウザをどうするかは顧客の要求できまることだから
こっちがあれこれ言えることではない。
- 281 :デフォルトの名無しさん:2016/09/03(土) 17:16:40.84 ID:AuZUWRpv.net
- 少なくともブラウザのソースを見ないと!っていうのは愚の骨頂だな
- 282 :デフォルトの名無しさん:2016/09/03(土) 17:32:29.46 ID:EZVA2rF2.net
- その言い方だとまたトンチンカンなレスしてきそうだがw
- 283 :デフォルトの名無しさん:2016/09/03(土) 17:48:47.28 ID:N47o0j5/.net
- >>191
使わなければいいという返しが来るとは思わなかった。
君はアレだね。できればES6で書きたいな、でも古いブラウザのしがらみから抜けられないな、
全く使えないよりも使える方がマシ、だから悪くなりようがないという考えなのだろう。
もちろんそれもあるよ。でもね、状況は動いてるのよ。
2016年になるまでなら、対応途中のモダンブラウザも含めて、できるだけ対応させるという
1つのより良くするための解でしか無かったけれど、
今ES6対応ブラウザが出揃ってきた状態でその中で対応を広げる役目としてのbabelを考えると、
億劫な点が出てくるというのは分かるだろう?
勘違いしてほしくないけれど、babalが悪いと言ってるんじゃないよ。
babelで生成されるコードのレベルが、ES6の時代なので書きま〜すっていう意気込みとは合わないってこと。
それでここからが大事な点になるのだけど、
babelのES6からの乖離は部分部分で見ると確かに小さい。SymbolやProxyを除いたとして、
それらを寄せ集めるともしかしたら1%と言えるくらいしかないのかもしれない。
でもね、各ブラウザstable版に機能が実装されていく時は、基本的には安定した機能が丸ごと有効になるわけで、
機能があるかないか程度にしか気にしなくていいのよ。
でもね、babelのように細かな非互換が多いと、
それは開発版ブラウザに機能が実装されてる最中で、フラグで有効化してES6の振る舞いを実験していた
1年前の状態さながらなのよ。
- 284 :デフォルトの名無しさん:2016/09/03(土) 17:49:36.57 ID:N47o0j5/.net
- >>191
1年前でもフラグを全て有効にすれば、世にあるES6対応度テストでは9割以上取れていた。
でもね、じゃあ今年に入ってから俺がES5以前気にしないで書いたコードが1年前のそのブラウザで動くかというと、
精々8割くらいしか動かないと思う。そういう意味で、babelのコードは8割といったのよ。
babalを使っていれば常に最新を追えるような感覚もするかもしれない。
それは、確かに今ES2017以上の機能をES2016対応実装向けのコードとして書きだした場合は正しい。
でもね、今ES2015のしっかりした実装がある中、ES5向けにコードを書き出す場合と言うのは、
何時までたってもハッカーが時期早々と揶揄されながら開発版ブラウザでフラグを有効にして、
不安定で未完成なES6で遊んでいた2016年より前のもやもやしていた状況のままだということ。
つまり時代遅れなのに時期早々感を負わないといけないという欠点があるわけ。
もちろんbabelが悪いわけではないし、対応を広げたいという前提のもとでなら、babelを使うという結論しかない。ES6はオマケなわけだ。
でも、モダンで良いコードを書きたいという気持ちが強いなら、古く取り残された環境を切り捨てる勇気も必要だと思う。
切り捨てるのはまだ早いと思うかも知れないが、意外とそうでもない。
IE8以前をJS OFFと同じとみなして、もう2段階くらい設定してプログレッシブ・エンハンスメントをするということがあるが、
ES5対応環境もピンからキリまで広くなりすぎたし、ここらで思い切ってJS OFF側にまとめて、
ES6対応以降のモダンなブラウザとの二極にするというのはある案だと思っているし、俺のところは今年度からそうしてる。
- 285 :デフォルトの名無しさん:2016/09/03(土) 18:08:14.44 ID:EZVA2rF2.net
- >>283
あんたは重要な点を見落としているね。
あんたが言っているのはすべてbabelを使わなうても当てはまることなんだよ。
ブラウザ間の互換性は完璧ではない。
あるブラウザには搭載されていて、あるブラウザには搭載されていない。
そういう機能がある。
babelはその機能の差を減らすものでしか無い。
話は単純。
1. ブラウザの間での違いはあるしなくならない。(もちろんbabelを使わない場合の話)
2. babelを使わないならばブラウザ間での違いが大きい。
3. babelを使うとブラウザ間の違いが減る。
これを前提の話をしよう。
- 286 :デフォルトの名無しさん:2016/09/03(土) 18:13:17.33 ID:EZVA2rF2.net
- babelを使うとブラウザ間の違いが減る。
という前提で話をすると、
ES6を完全に搭載していないブラウザが多く使われている今は
babelによって、その機能の差が大きく減る。
そしてその次はES2016、ES2017と話は進んでいく。
当然今のブラウザはES2016、ES2017の対応は少ないだろう。
ある時それらに対応したブラウザが一つだけでた。
となるとやっぱりブラウザの間の違いがでてくる。
そしてまた新しい仕様がでてきて、それに対応しているのはどれ?
という状況がずっと続く。
ブラウザの数は多い。バージョンアップの頻度も高い。
だからブラウザ任せでは機能の差を埋めることは難しい。
そこでbabelがでてくる。babelを使うことで機能の差は減る。
- 287 :デフォルトの名無しさん:2016/09/03(土) 18:16:26.40 ID:EZVA2rF2.net
- >>284
> でも、モダンで良いコードを書きたいという気持ちが強いなら、古く取り残された環境を切り捨てる勇気も必要だと思う。
モダンで書くよりも重要なのは、今あるブラウザで動かすこと。
そしてその次が開発コストを下げること。
多種多様なブラウザを相手にしていたら開発コストは下がらない。
だからbabelを使ってブラウザ間の違いを減らして
コストを下げることが重要になる。
その次だよモダンで書くことでコストを下げるという理由がくるのは。
優先順位は低い。だからbabelで対応していないものは使わないと言う
選択肢が当然成り立つ。
そして「babelで対応していない機能」は「babelを使わなくてもブラウザが対応した時」に使えばよかろう?
ES6の機能をすべて使うことが目的じゃないんだからさ。
- 288 :デフォルトの名無しさん:2016/09/03(土) 18:18:01.40 ID:EZVA2rF2.net
- >>284
> ES6対応以降のモダンなブラウザとの二極にするというのはある案だと思っているし、俺のところは今年度からそうしてる。
Safari最新版はアロー関数に対応していないんだが?
- 289 :デフォルトの名無しさん:2016/09/03(土) 19:21:50.91 ID:N47o0j5/.net
- >>288
Safariはモダンブラウザに含めていない。
ウチではずっとChrome第一Firefox第二、近頃はEdge第三。
他は眼中にない。
- 290 :デフォルトの名無しさん:2016/09/03(土) 19:27:20.93 ID:EZVA2rF2.net
- >>289
じゃあスマホは?
例えばAndroid 4系はアロー関数に対応していない。
http://caniuse.com/#feat=arrow-functions
- 291 :デフォルトの名無しさん:2016/09/03(土) 19:32:55.57 ID:EZVA2rF2.net
- Chrome、Firefox、Edgeということは
https://www.netmarketshare.com/browser-market-share.aspx?qprid=0&qpcustomd=0
ブラウザの66.82%にしか対応していません。
モバイルの場合は
https://www.netmarketshare.com/browser-market-share.aspx?qprid=0&qpcustomd=1
Chrome、Firefox、Edgeの53.65%にしか対応していませんってことだよね。
(Android Browserを入れても62.22%)
- 292 :デフォルトの名無しさん:2016/09/03(土) 19:35:23.00 ID:N47o0j5/.net
- >>290
いや、逆だよ。超逆。
Androidの古いブラウザを切り捨てられる時期というのが強い。
Android 4系と言っても、実は後半くらいか徐々に、終盤は大体、
ベンダーがChrome載せててデフォルトにしてるから、実は問題ないんだよ。
一番問題あるのはSafariくらいで、それももうすぐだろう。
誤解無いように書くが、
上でも言ったようにプログレッシブ・エンハンスメントだし、
当然全てのコードを書き換えたわけではない。
今年度から新しく初めて長くメンテしていくサービスでのコードは原則そういうポリシーになっただけ。
なので問題は無い。
- 293 :デフォルトの名無しさん:2016/09/03(土) 19:40:30.57 ID:EZVA2rF2.net
- >>292
意味がわからん。
重要なのは切り捨てるタイミングと
コードを新しくするタイミングの問題。
babelを使うと古いブラウザを切り捨てるタイミングを
自由にコントロールできる。
そして古いブラウザを切り捨てるよりも前にコードを新しくできる。
つまり古いブラウザを切り捨てたときにはすでにコードは新しくなってる。
あんた、今、古いブラウザを切り捨てたのに、
古いコードを抱えてるじゃん。
> Android 4系と言っても、実は後半くらいか徐々に、終盤は大体、
> ベンダーがChrome載せててデフォルトにしてるから、実は問題ないんだよ。
だからシェアのリストだしただろ? ChromeとAndroid Browserを
入れたとしても62.22%にしかならない。
- 294 : ◆SEdFBOkLSw :2016/09/03(土) 20:12:11.53 ID:YIu9WVDu.net
- 俺以外とも噛み合ってねえじゃんw
>>284は説明上手いな。
- 295 :デフォルトの名無しさん:2016/09/03(土) 20:15:24.73 ID:EZVA2rF2.net
- おい、馬鹿(◆SE)がまた来たぞw
- 296 :デフォルトの名無しさん:2016/09/03(土) 20:18:55.72 ID:EZVA2rF2.net
- 重要なのは、ES6対応度テストで合格する割合じゃないんだよね。
どれだけ多くの世間で使われているブラウザに対応できるか。
俺が一番重要視してるのは、より実用的なのはどれかだよ。
ES6対応度テストで9割合格していても、
それが今使われてるブラウザの6割じゃ役に立たない。
ES6対応度テストで8割でもそれを使うことで
ブラウザの9割で動かせるほうが重要。
- 297 :デフォルトの名無しさん:2016/09/03(土) 20:22:54.41 ID:N47o0j5/.net
- >>293
>>babelを使うと古いブラウザを切り捨てるタイミングを
>>自由にコントロールできる。
いやー一年前まではそう思ってましたよ。
上でも書いたけれど、君の発言を見てると一年前二年前の若い自分を思い出す。
でもそうじゃなかったから使ってないの。まだ分からない?
理由は大体書いたよ。
babelただ使うだけで使わないよりも『より良くなる』時代ってのはもう終わったの。
あんまり踏み込んで欲しくないので書かなかったことを少しだけ言うと、
ウチではES6基本というのは実は嘘。今はもうES2016基本にしかけてる。
で、そのために、『より良くする』ためにbabelではないがトランスパイラ+ポリフィル使ってる。
が、これもES2016の重箱の角はつつけていないので、本当は使わないで済むなら使いたくないのよ。
モダンなコードを書くメリットと、重箱の角を心の隅で気にしないといけないコストと、若干の好奇心のつり合いを見て今はこういう形になっている。
だから本当に100%ES2016で開放された気分で書けてるのかというとそうではない。
あれだけ変更の少ない2016->2015でもそうなんだよ?
babelのES5変換なんて満足できていたのは最初だけ、ブラウザの対応が未熟だった頃だけだよ。
当初君と同じ夢を見ていたウチのメンバーは一年くらいかけて
実は古いブラウザというしがらみから逃れるために、babelというしがらみに縋ってただけだって気がついたの。
今はbabel使って後から外すなんて夢物語だよ。黒歴史。
実はそういった試みで始めたものいくつかあったんだが、まともに活用しきれない。
多くは実らず捨てることになって、一部は泣きながらリファクタリングしてる最中。
- 298 :デフォルトの名無しさん:2016/09/03(土) 20:24:00.35 ID:N47o0j5/.net
- >>293
でもまあ、ふと思ったけど、俺も今のbabelは触ってないからな。精々半年前の感覚のままだ。
今はもしかしたら殆ど完璧になってて、憂いが減ってんのかな?
そこはちょっと反省。
どうしてbabelで旧ブラウザの対応するのを見限ったかって言うとね、
そもそも、babelのバグや細かい非互換のせいで大きいコードがしばしばまともに通らなかったからだよ。
だから、笑えるけどbabelで通るように書き換えてたの。当然歪になってるから使い回せない、使い回したくないの。
でも今babelの対応状況改めて見てみたらやっぱり無理だ。
マイナーかもしれないけれど、毎度一箇所は使うだろう点が残ってる。
やっぱり痛いのはプロトタイプの設定や、サブクラス化かなぁ。
めっちゃ使うということは無いが、ここらを我慢するのはやっぱりES6使ってるとは俺は思えないわ。
- 299 :デフォルトの名無しさん:2016/09/03(土) 20:26:29.35 ID:EZVA2rF2.net
- >>297
あんた自分で言ったセリフ思い出してね。
> Safariはモダンブラウザに含めていない。
> ウチではずっとChrome第一Firefox第二、近頃はEdge第三。
Safariに対応できてない、IEに対応できてない。
対応できるブラウザは6割。
それがお前が今できることの限界だよ。
- 300 : ◆SEdFBOkLSw :2016/09/03(土) 20:27:46.15 ID:YIu9WVDu.net
- >>295
無意味な中傷せんと、皆の意見を真摯に聞いとけ。
だいたい同じ事言ってる。
あとな、動作が同じって、それは違うからな。
いくら時間がかかっても良いから同じ結果を出します、ってのは、結果同じでも動作違うからな。
万回以上呼ばれだしたら体感で速度変わるし。
>>278に対してだけど。
- 301 :デフォルトの名無しさん:2016/09/03(土) 20:28:02.67 ID:EZVA2rF2.net
- >>298
> そもそも、babelのバグや細かい非互換のせいで大きいコードがしばしばまともに通らなかったからだよ。
> だから、笑えるけどbabelで通るように書き換えてたの。当然歪になってるから使い回せない、使い回したくないの。
だったらbabelで通るように書き換えないで、
その機能を使わなければいいだけでは?
だってそもそもbabelを使わないならば
その機能は使えないんだからさ。
その機能を使わないと言う選択肢をとることはできるはずだ。
- 302 :デフォルトの名無しさん:2016/09/03(土) 20:28:44.55 ID:EZVA2rF2.net
- >>300
今はお前と話はしてない。
お前のみんなの扱いはすでに決まってるんだよ。
おバカさんw
- 303 : ◆SEdFBOkLSw :2016/09/03(土) 20:30:06.63 ID:YIu9WVDu.net
- >>298
そう。だから、結局同じ構文で書いた、ただのbabelって処理系用の言語なんよね。
>>301
それは、babel用のコードを書くに、他ならなくないか?
babel無視したら、そんな回避コード書かんで良いんだから。
俺が仕事でES5書いてるのとレベル全く変わらんじゃないか。
- 304 :デフォルトの名無しさん:2016/09/03(土) 20:30:30.26 ID:EZVA2rF2.net
- >>297
言ってることが抽象的すぎて
具体例が一つもないよね。
問題があるという前提で話をしているが、
そもそも、お前が言う問題は本当にあるのか?って話。
まず、具体的な問題があることが前提だから
どういうときに問題があるのかを言ってくれないか?
- 305 :デフォルトの名無しさん:2016/09/03(土) 20:31:13.84 ID:EZVA2rF2.net
- >>303
> それは、babel用のコードを書くに、他ならなくないか?
ぜんぜん違う。その言語はES6でそのまま動く
ES6用とbabel用に違いはない。
- 306 : ◆SEdFBOkLSw :2016/09/03(土) 20:31:17.36 ID:YIu9WVDu.net
- >>302
お前の中だろ。
問題を極端に矮小化したり拡大解釈したり、一般化したり特殊化すんのは良くないぞ。
- 307 :デフォルトの名無しさん:2016/09/03(土) 20:32:03.05 ID:EZVA2rF2.net
- > 俺が仕事でES5書いてるのとレベル全く変わらんじゃないか。
わざわざES6のコードを避けるほうが大変だろwww
どちらがどれだけ大変かの話をしてる。
babelを使えば、避ける必要性が大きく減る。
- 308 :デフォルトの名無しさん:2016/09/03(土) 20:32:49.45 ID:EZVA2rF2.net
- >>306
あっちのスレでもお前、馬鹿にされてるじゃんwww
自覚しとけ。
お前は俺に反論できないことはたくさんあったが
それはお前にほとんどレスしてるだろw
- 309 : ◆SEdFBOkLSw :2016/09/03(土) 20:33:04.45 ID:YIu9WVDu.net
- >>305
ES5もES6でそのまま動くよw
babel用に使えないものがあるから使わないのは、ES6のサブセットじゃん。
babel用に使えないものを避けて書いたのと、気にせず書いたES6は違うコードなんじゃねえの?
- 310 : ◆SEdFBOkLSw :2016/09/03(土) 20:33:43.02 ID:YIu9WVDu.net
- >>308
明後日のレスだけして、それで答えた気になってたらしゃーないわ。
- 311 : ◆SEdFBOkLSw :2016/09/03(土) 20:36:11.49 ID:YIu9WVDu.net
- >>307
避ける方が大変?なんだそりゃ。
言語仕様把握せずに開発してる訳でもあるまい。
規約が無い訳でもあるまい。
子供のバイトみたいな話しないでくれ。
- 312 :デフォルトの名無しさん:2016/09/03(土) 20:37:02.13 ID:EZVA2rF2.net
- >>309
> ES6のサブセットじゃん。
ん? 各ブラウザのES6の実装度を知らないのかな?
どのブラウザでも使えるのはES6のサブセットでしか無いんだけど?
- 313 :デフォルトの名無しさん:2016/09/03(土) 20:38:01.48 ID:EZVA2rF2.net
- >>311
> 避ける方が大変?なんだそりゃ。
そりゃそうだろ。
どのブラウザで、どの機能が使えるかをいちいち把握しないといけない。
お前アロー関数がSafariで使えないことを把握していたか?
そういった細かい機能を把握する必要がなくなる。
- 314 :デフォルトの名無しさん:2016/09/03(土) 20:38:52.88 ID:EZVA2rF2.net
- 言語仕様を把握していても、アロー関数がSafariで
動かないってことを知ることは出来ないんだよ。
- 315 : ◆SEdFBOkLSw :2016/09/03(土) 20:41:04.47 ID:YIu9WVDu.net
- >>312
そうだね。
だから、ブラウザごとに要件定義すんじゃんね。
そこに、これまたbabelって処理系が入る、と。
お前の理屈破綻してるのわかる?
どこが、一つのES6で良いの?w
最大公約数で書けば良い、なら、
ホントに最大公約数で書けばいいじゃん。ES5。
要件定義できるなら、その最大公約数で書けばいいだけ。
中途半端に先端気取って無駄な事なの。
- 316 :デフォルトの名無しさん:2016/09/03(土) 20:41:56.59 ID:EZVA2rF2.net
- ES6を完全サポートしているブラウザを100とすると、
babelを使わないと、
1〜100までのすべてのブラウザを考慮しなければいけなくなる。
babelを使えば80以下のブラウザがすべて80にまで底上げされるから
80〜100のブラウザだけを対応すれば良くなる。
- 317 : ◆SEdFBOkLSw :2016/09/03(土) 20:43:55.93 ID:YIu9WVDu.net
- >>313
してたよ。
ついでに言うとOperaも対応してない。
Android標準ブラウザは4系でも全滅。IEも11でも使えない。
- 318 : ◆SEdFBOkLSw :2016/09/03(土) 20:45:13.51 ID:YIu9WVDu.net
- >>316
ES5で書けば100のブラウザ相手に書けんじゃん。
底上げしたから、何もしなくて良いわけでもないし。
骨折り損。
- 319 :デフォルトの名無しさん:2016/09/03(土) 20:45:14.45 ID:N47o0j5/.net
- >>299
何が言いたいのか、いやもう建設的な話し合いをする気は無いんだろうけど、
一応会話してみるか。
対応するときはES5で書く。それだけでしょ?
そして、その話は本題と関係ないでしょ?
古いブラウザを見限っていいから、Babelを使うなと言ってるんじゃないから。
古いブラウザを見限らないとしても、ウチではBabalは使わない。ただES5で書くだけ。
まさかウチではもう今年度からピュアES6しか書きませんと言ってるのだと思ってた?
誤解させてごめんね。
で、本題はBabalの吐くコードはES_Babalであって、ES6とは遠からず近からずなものでしかないということ。
ES6を使いたいから、後々外せばいいだけだから便利、な感覚でBabelを使うと怪我するよと言ってるの。
Babalを使うのなら、あくまでES_Babelというalt JSを使うんだという認識・覚悟で居たほうが正しい。
そして副題として、俺はそれは嫌ということ。ここは個人的な部分だし、環境なので異論は認めるし、批判は受け付けていない。
二極化提案については、まだ実験中で良し悪し分からず、オススメする気もなくポロッと言ってしまっただけだし、
あまり深入りしてほしくないのでこれ以上話したくない。
- 320 :デフォルトの名無しさん:2016/09/03(土) 20:45:47.57 ID:EZVA2rF2.net
- >>315
> だから、ブラウザごとに要件定義すんじゃんね。
> そこに、これまたbabelって処理系が入る、と。
ブラウザは実行環境、
babelはトランスパイラ。
違うものを混ぜるなって何度も言っただろ。
お前はES6に対応していないブラウザを一つずつ何個も
この機能は使える?使えない?って悩んでいるのだろうが
babelを使うと、多くのブラウザの最低レベルが揃うんだよ。
お前の言葉で言う最大公約数がES6に底上げされる。
最大公約数5よりも最大公約数10の方がいいだろw
- 321 :デフォルトの名無しさん:2016/09/03(土) 20:46:33.45 ID:N47o0j5/.net
- おいおい……俺がちょっと推敲してる間に20も進むとか……
- 322 :デフォルトの名無しさん:2016/09/03(土) 20:49:51.97 ID:EZVA2rF2.net
- >>319
なんか一人二役ご苦労さんって感じになってきたな。
わざとらしく大文字小文字を使い分けてるのかい?www
> 対応するときはES5で書く。それだけでしょ?
そのES5をES6に書き換えるコストは誰が払うんだ?ずっとES5のまま?
なんで可読性、メンテナンス性が低いコードを今のタイミングで量産するのさ?w
長期的なバージョンアップっていうのが考慮されてないぞ。
> で、本題はBabalの吐くコードはES_Babalであって、ES6とは遠からず近からずなものでしかないということ。
なんでそこでbabelの吐くコードを気にしないといけないのかわからん。
そもそもbabelの吐くコードはES5だ。ES_Babelなんてものはない。
babelは言語ではなくて単なるトランスパイラ。言語はES6そのもの
- 323 :デフォルトの名無しさん:2016/09/03(土) 20:50:46.13 ID:EZVA2rF2.net
- >>318
> ES5で書けば100のブラウザ相手に書けんじゃん。
ただし可読性とメンテナンス性が低いコードになる。
- 324 :デフォルトの名無しさん:2016/09/03(土) 20:52:05.59 ID:EZVA2rF2.net
- >>317
> ついでに言うとOperaも対応してない。
> Android標準ブラウザは4系でも全滅。IEも11でも使えない。
そっかー、babel使ってテストにもちゃんと通って
手動でも確認したときも問題なく動いていたから知らんかったわーw
まあ嘘だけど、このようにいちいち把握する必要がなくなる。
- 325 :デフォルトの名無しさん:2016/09/03(土) 20:52:33.02 ID:vfo9HhT2.net
- この板ってどのスレでも定期的にこういう事起こるよね
C#のラムダ禁止おじさんとか
- 326 : ◆SEdFBOkLSw :2016/09/03(土) 20:52:38.94 ID:YIu9WVDu.net
- >>322
一人二役って、アホな発言にも程があるわ。
言うに困ったらそれか。
>>322
言語は、そのものじゃなくてサブセットなんじゃねえの?
- 327 : ◆SEdFBOkLSw :2016/09/03(土) 20:53:35.43 ID:YIu9WVDu.net
- >>323
お前が下手なだけ。
>>324
必要が無いのと、無責任なのは違うよ。
あと、letも、ずっとSafariだけ未対応だった。
- 328 : ◆SEdFBOkLSw :2016/09/03(土) 20:54:01.45 ID:YIu9WVDu.net
- >>325
ラムダは積極的に使えば良いのにな。
- 329 :デフォルトの名無しさん:2016/09/03(土) 20:56:57.70 ID:EZVA2rF2.net
- >>326
> 言語は、そのものじゃなくてサブセットなんじゃねえの?
そうだなES6の殆どが使えるがサブセットだなw
それよりもES6に完全対応してないブラウザの方が
より大きな問題だよ。
- 330 :デフォルトの名無しさん:2016/09/03(土) 20:58:33.36 ID:N47o0j5/.net
- もういい。
俺はともかく、ES6ってそんなレベルじゃねーぞって変なこだわり言ってるだけだから。
とりあえずBabel使うとES6でガッツリ書けます。将来的には外すだけみたいに言わないでくれれば他はどうだってよかった。
相手が建設的な話し合いする気がないどころか、現実逃避始めちゃったので、今となってはそれすらどうでもいい。
>>320
>>babelを使うと、多くのブラウザの最低レベルが揃うんだよ。
そう。いいこと言った。
最初からこのくらいに収めてくれてれば俺が駄スレで駄レス重ねる必要もなかったのに。
結局会話にならなかったし、ほんと、無駄な時間過ごしちゃったな〜
- 331 :デフォルトの名無しさん:2016/09/03(土) 20:59:03.26 ID:EZVA2rF2.net
- >>327
> 必要が無いのと、無責任なのは違うよ。
誰が無責任でいられるって言ったんだよ。
アホかw
ちゃんとテストコード書いて問題なく動くことを確認してる。
それが責任を果たすということだろ。
> あと、letも、ずっとSafariだけ未対応だった。
せっかくより良くなったES6を
全く使えない状況になるんだよねw
- 332 :デフォルトの名無しさん:2016/09/03(土) 21:01:48.79 ID:EZVA2rF2.net
- >>330
> とりあえずBabel使うとES6でガッツリ書けます。将来的には外すだけみたいに言わないでくれれば他はどうだってよかった。
もちろん将来的には外すだけじゃねーよw
しっかりテストコード書いて、テストする。
これは、babelとは関係なく、ブラウザのバージョンアップでも
急に動かなくなったりする可能性があるのだから当然するべきこと。
babelを外してもし動かなくなるのなら、その部分だけの修正で済むだろ。
今からbabelを外して動くかどうかもテストしてればいいんだよ。
それをやってるから、ES6で書いてbabelを使っても使わなくても
同じように動くコードになるって言ってるの。
- 333 :デフォルトの名無しさん:2016/09/03(土) 21:09:12.58 ID:N47o0j5/.net
- >>332
だからね。君が言ってるそれは、BabalがES6のコードを完璧にES5に変換できるということ前提なの。
実際はね、ES6ではなく、ES_Babalで書かないといけないの。
ES_BabalというのはES6から機能と安定性を取り去った言語なわけ。
で、それを将来ES6か何かに書き換えるわけ。
それがES5のしがらみとどっちが強いかは人次第なのかもしれない。
君はそれに十分満足していて、俺は不満。ただそれだけなのかもしれない。
でも、ES6を使いこなしていったらすぐに俺の考えに近くなるんじゃないかなという想像。
無駄なおせっかいだったのよ。それだけ。
- 334 :デフォルトの名無しさん:2016/09/03(土) 21:13:20.81 ID:EZVA2rF2.net
- > 実際はね、ES6ではなく、ES_Babalで書かないといけないの。
だから書かなくて良いんじゃないですかねぇw
ES6で完璧に書けないものは書かなくていい。
なんでES6を使うって言ったら、babelで使えない機能まで
ES6を使おうってするんだ?w
どうせテスト書くだろ。完璧に動かなくてもテストで通る範囲が動けば問題ないんだよ。
そもそもブラウザですらES6に完全に対応していない。
どちらにしろES6に完全対応していない環境と言う前提のもとで、
正しく動くアプリを作るんだよ。作るのが仕事なの。
そしてより可読性、メンテナンス性に優れたコードを今すぐ書くということ。
- 335 : ◆SEdFBOkLSw :2016/09/03(土) 21:15:25.72 ID:YIu9WVDu.net
- >>331
テストコード書いて問題なく動く、そこが違うんだよなぁ。
こっちは仕様と実装からテスト仕様書いてて、
お前は仕様からしか書いてないんだもの。
>>332
お前は本当に何を問題とされているかわかんねえやつだな。
- 336 :デフォルトの名無しさん:2016/09/03(土) 21:17:26.35 ID:EZVA2rF2.net
- テストコード書いて問題なく動く、そこが違うんだよなぁ。
こっちは仕様と実装からテスト仕様書いてて、
え? だからそのテスト仕様書通り動けばいいだろ?
何言ってるのかさっぱりわからんwww
- 337 :デフォルトの名無しさん:2016/09/03(土) 21:18:06.86 ID:EZVA2rF2.net
- > こっちは仕様と実装からテスト仕様書いてて、
あ、実装を書かないとテスト仕様書が書けないタイプ?
- 338 :デフォルトの名無しさん:2016/09/03(土) 21:21:04.16 ID:EZVA2rF2.net
- 実装からテストを書くっていうのは、
要するにprivateメソッドを書いてから
そのテストコードを書くって言ってるのかな?
まあまた意味不明なことを言い出したなって
思ってますよw
- 339 :デフォルトの名無しさん:2016/09/03(土) 21:23:23.04 ID:EZVA2rF2.net
- 実装のテストっていうのは、その実装が変われば
同じ動作をしていてもアプリは問題なく動いていても
失敗するものってことでいいんですか?
- 340 : ◆SEdFBOkLSw :2016/09/03(土) 21:24:59.62 ID:YIu9WVDu.net
- >>337
当たり前だろ。。
>>338
違うよ。
コードを書く/書いてもらう前に、何もかも分かった状況にして、こうすれば書けるから、と実装に対する詳細設計を起こすよね。
その詳細設計から書くじゃん、テスト。
実装、がもしかして食い違ってる?
お前が書く内容、って意味じゃなくて、処理系の実装、な。
しかし、改めてbabel見てみたが、末尾再帰もできんままか。
- 341 : ◆SEdFBOkLSw :2016/09/03(土) 21:26:13.79 ID:YIu9WVDu.net
- >>339
何言ってるのかわからん。
その処理系でテストを完了していない限り、失敗も成功もないだろ。宙ぶらりん。
だからテストすんじゃん。
- 342 :デフォルトの名無しさん:2016/09/03(土) 21:28:37.51 ID:EZVA2rF2.net
- いつの話をしてるのやらw
http://teppeis.hatenablog.com/entry/2015/03/es6-tail-call-optimization
2015-03-29
BabelとTraceurでES6末尾再帰最適化を試す
ちょっと前にBabelに末尾再帰最適化が入って話題になったけど、同じくTraceurにもv0.0.85で最適化が入ったので試してみた。
- 343 :デフォルトの名無しさん:2016/09/03(土) 21:28:59.57 ID:N47o0j5/.net
- >>334
うん。だから君は、ES6を、モダンで良い言語で書きたいから使ってるわけではなく、
「Babelが対応してる機能」を「Babelが対応してるから」使ってるだけでしょ?
普通はES6で書いて動かすためにトランスパイラを試す筈だが、
君はおそらくBabelをES6入門用的に使っているのだろう。
Babelはもう成長しないが、君はどうするの?
うーん。もしかして、ES2017や18の時代になっても、
Arrayのサブクラスすら作れないなんちゃってES2017で書くの?
ES6-サブクラス+デコレータ-hogehoge+fugafuga
みたいなおかしな言語で書き続けるの??
そこに無理があると言ってるのよ。
君ももし本当にES_BabelをES6と信じてるのなら成長したほうが良いよ。
で、Babelは使うのは良いが憂いができるだけ少なくなるようにした方がいい。
- 344 :デフォルトの名無しさん:2016/09/03(土) 21:32:40.61 ID:EZVA2rF2.net
- >>340
337 自分:デフォルトの名無しさん[sage] 投稿日:2016/09/03(土) 21:18:06.86 ID:EZVA2rF2 [83/86]
> こっちは仕様と実装からテスト仕様書いてて、
あ、実装を書かないとテスト仕様書が書けないタイプ?
340 返信: ◆SEdFBOkLSw [sage] 投稿日:2016/09/03(土) 21:24:59.62 ID:YIu9WVDu [24/25]
>>337
当たり前だろ。。
この流れで、↓これとか
> コードを書く/書いてもらう前に、何もかも分かった状況にして、こうすれば書けるから、と実装に対する詳細設計を起こすよね。
> その詳細設計から書くじゃん、テスト。
・・・馬鹿なのか?
1. 実装に対する詳細設計を書く
2. つまり詳細設計は実装を書くよりも前に存在する。
3. (実装を書く前の)詳細設計からテストを書く。
実装を書かなくてもテスト仕様書は書ける。
- 345 : ◆SEdFBOkLSw :2016/09/03(土) 21:35:40.90 ID:YIu9WVDu.net
- >>342
おお、if文のあとの再帰で死ぬやつ治ってんだ。
ちなみに、その話のあと、一旦disabledになったのよ。
- 346 : ◆SEdFBOkLSw :2016/09/03(土) 21:38:38.17 ID:YIu9WVDu.net
- >>344
だから。もう。
お前がどう書くかは関係ねえの。
それからテスト書いたら意味ねえじゃん。
ホワイトボックスで、それが検証可能な事には意味があるけど、そうじゃねえよ。
処理系の実装だよ。
- 347 :デフォルトの名無しさん:2016/09/03(土) 21:41:34.55 ID:EZVA2rF2.net
- >>343
> 「Babelが対応してる機能」を「Babelが対応してるから」使ってるだけでしょ?
違う。ES6の機能のうち、babelで変換しても確実に動くものだけを使ってる。
だから「ES6が対応している機能」のうち「babelでも対応しているもの」を使っている。
が正解。
そしてそれは普段から書いている「実際のブラウザで問題なく動くか?」という
テストがあれば追加工数は必要なくテストできる。
> Babelはもう成長しないが、君はどうするの?
成長してないと判断したところはどれ?
見ての通りes2017に対応したプリセットもある。 http://babeljs.io/docs/plugins/preset-es2017/
仮にbabelが成長しなくても、今書いているコードはそのままES6対応ブラウザで動くし
ES5ブラウザでも動く。今のやり方はそのまま続けられるじゃん。
場合によっては古いブラウザを切り捨てることで、babelが無くても動く。
将来の心配をしなくて済む。そこがAltJSとの違い。
> ES6-サブクラス+デコレータ-hogehoge+fugafuga
> みたいなおかしな言語で書き続けるの??
と言われてもね。現実に存在するブラウザが、そんな感じでしょw
ES6の全てに対応していない。あんた今、そんなおかしな言語で書いてるんだよw
> うーん。もしかして、ES2017や18の時代になっても、
> Arrayのサブクラスすら作れないなんちゃってES2017で書くの?
Arrayのサブクラスを使わないでES2017で書くよ。
お前は古いブラウザを切り捨てるんだろ?
それが要件として認められるならば、俺古いブラウザを切り捨てるだけだよw
- 348 :デフォルトの名無しさん:2016/09/03(土) 21:46:47.80 ID:EZVA2rF2.net
- >>346
またマッチ・ポンプ?w
テストは実装前に書くって話でいいんだよね?w
俺が言いたいのは、>>335でお前が言った
> こっちは仕様と実装からテスト仕様書いてて、
実装からテスト仕様書くなやってことなんだけど?
で、俺は仕様と詳細設計からテスト仕様書書いて
それをテストコードにしてるから、
実装が変わっても問題ないって話をしてるんだけど。
- 349 : ◆SEdFBOkLSw :2016/09/03(土) 21:51:24.54 ID:YIu9WVDu.net
- >>348
だから、処理系の実装だってば。
お前話の流れが読めないやつだな。
前のレス見ればわかんじゃん。
>>347
だから、それがbabel用のコードなんじゃねえの?
ES6と同じ構文で書いたES6のサブセットな、babelにコンパイルさせる為の言語。
ただ、そのまま他の環境でも動くだけで。
それは、ES5を書いて、これはES6の仕様範囲内だから、ES6です、って強弁するのと変わらんではないか。
- 350 :デフォルトの名無しさん:2016/09/03(土) 21:54:03.20 ID:N47o0j5/.net
- >>347
うーん。君のポリシーがよくわからないね。
今のブラウザがES6の全てに対応していない?
そりゃそうだ。ES5すら全てに対応してるわけではないからね。
ということは、それより遥かに劣るBabelは極めて不完全って認めるわけなの?
さっきも言ったが俺はそここそが一番気になるんだから。
いや違うか、君は不完全でも気にしないと言ってるわけだ。
ES6とES_Babelの見分けなんてつかないよと、
いや、Babelで変換できないES6の機能なんてES6と認めないよと言ってるわけだ。
やっぱり君はBabel志向なんだよ。
それは違う、とにかく対応を広げるために機能の劣るBabelを仕方なく使ってるんだっていうなら
やっぱりES6ではなくES_Babelを書いてるってことを認めないといけない。
それか、実はES6なんて理解してなくてBabel志向なだけですというのも理屈が通る。
そのどちらか。
- 351 :デフォルトの名無しさん:2016/09/03(土) 21:57:03.42 ID:EZVA2rF2.net
- >>349
> だから、処理系の実装だってば。
処理系の実装ってなに?
お前は処理系の実装のテストを "書いている" といった。
そうわざわざ言うってことは、当然普段から書いているのだろう?
ブラウザの場合お前はbabel等を使わない。
ってことは当然処理系の実装のテストというのは、
ブラウザが持っているJavaScript実装。
ChakraやSpiderMonkeyやV8という処理系であるはずだ。
お前はこれらのJavaScriptエンジンを
わざわざ開発元がやってるはずのテストを
JavaScriptエンジンの開発や検証という段階でもないのに、
アプリの開発という仕事の中でやってるということか?
そういう話でいいのか?
- 352 :デフォルトの名無しさん:2016/09/03(土) 21:59:14.75 ID:EZVA2rF2.net
- >>349
> だから、それがbabel用のコードなんじゃねえの?
> ES6と同じ構文で書いたES6のサブセットな、babelにコンパイルさせる為の言語。
ES6のサブセットという言語はない。
俺がES6のサブセットを使っているだけ。
そもそもどのブラウザもES6に完全対応してないのだから
俺だけじゃなくてみんなES6のサブセットを使ってる。
お前、SafariでES6のサブセットを使ったら、
それをSafariで動かすための言語っていうのかよwwww
それぐらいわからんかなw
- 353 :デフォルトの名無しさん:2016/09/03(土) 22:05:42.45 ID:EZVA2rF2.net
- >>350
> 今のブラウザがES6の全てに対応していない?
> そりゃそうだ。ES5すら全てに対応してるわけではないからね。
>
> ということは、それより遥かに劣るBabelは極めて不完全って認めるわけなの?
そこが話がつながってない。
babelはES6に対応していないブラウザをES6対応に近づけるものであって、
ブラウザとES6対応度で競争しているわけじゃない。
ブラウザは他のブラウザとES6対応度で競争しているかもしれない
その競争でどこそこのメーカーのブラウザが劣っているか劣っていないかって
いう話をするのならわかる。
だがbabelの目的は、劣っているブラウザを救済する所にある。
babelと比較するのであれば同じ目的のTraceurやClosureだろう。
あんたはES6を使いたいとしか思ってないようだが、
俺が一番に考えているのは、より多くのユーザーが使ってるブラウザで動かすということだ。
その上で可読性やメンテナンス性を上げるという理由で出来る限りES6を使うって話をしてるんだよ。
- 354 : ◆SEdFBOkLSw :2016/09/03(土) 22:15:50.24 ID:YIu9WVDu.net
- >>351
文盲なの?
そのエンジンと自社製品の組み合わせのテストだよ。
>>352
最後。
その通り、Safariの為の言語だよ。その時点では。
SafariとFireFoxの為に書いたのであれば、SafariとFireFoxの為の言語。
- 355 :デフォルトの名無しさん:2016/09/03(土) 22:17:06.63 ID:EZVA2rF2.net
- ん? まさかと思うが、もしかして◆SEって
ブラウザごとにソースコード書き換えてるのか?
あるサイトを作ったとして、
Chromeはアロー関数を使ったコードで
Safariはアロー関数を使わないコード。
一つのコードで複数のブラウザに対応するのではなく
各ブラウザごとに書き換えたを変えてるのか?
まさかな。babelを使うと一つのコードで
複数のブラウザに対応できるぞwww
- 356 :デフォルトの名無しさん:2016/09/03(土) 22:18:28.08 ID:W9R0/4bk.net
- バベル君面白いw
バベル君の事が理解出来る様に、オレも少しかじってみるわw
- 357 :デフォルトの名無しさん:2016/09/03(土) 22:18:34.81 ID:EZVA2rF2.net
- >354
> そのエンジンと自社製品の組み合わせのテストだよ。
言い方がおかしいな。
普通は
そのエンジンと自社製品の組み合わせ「で」テストをするという。
確認するが
そのエンジンと自社製品の組み合わせ「の」テストを書いているという意味か?
- 358 :デフォルトの名無しさん:2016/09/03(土) 22:19:06.56 ID:N47o0j5/.net
- >>353
うん。それならいい。
あくまでES6を意識したBabelScriptという下駄を古いブラウザに履かせるという認識ならいい。
裏切りを知らないサンタクロースを信じる子供か、黒歴史を未経験な魔法に憧れる中二病患者かと思ったから忠告したけど、
そうでないのなら尽く良い。
その他いろんな話をしたが、もうそれに関しての共通理解は諦める。
- 359 :デフォルトの名無しさん:2016/09/03(土) 22:20:31.06 ID:EZVA2rF2.net
- >>354
◆SEくんおもしろいw
> その通り、Safariの為の言語だよ。その時点では。
じゃあブラウザとバージョンの数だけ別の言語があるってことかい?
- 360 :デフォルトの名無しさん:2016/09/03(土) 22:21:58.64 ID:EZVA2rF2.net
- >>358
> 裏切りを知らないサンタクロースを信じる子供か、黒歴史を未経験な魔法に憧れる中二病患者かと思ったから忠告したけど、
だからテストコードを書いている。
このテストコードはbabelを使った場合と使わない場合の両方で動く。
裏切られる前提で、裏切られてもすぐに修正できるように
ちゃんと対策をしている。
- 361 :デフォルトの名無しさん:2016/09/03(土) 22:24:51.69 ID:EZVA2rF2.net
- ◆SEの理屈ではJavaScriptという言語は無いってことになるだろうね。
なぜならばどのJavaScriptでも同じブラウザでも
バージョンが違えば、わずかながらでも違いがあるから。
ECMAScriptという仕様を完全に見対している言語もない。
そういえばC++も仕様を完全に満たしている処理系はないっていわれてるな。
つまり、それぞれの処理系で別々の言語が実装されている。それはC++とは呼ばないw
- 362 : ◆SEdFBOkLSw :2016/09/03(土) 22:29:30.55 ID:zOLpCpsC.net
- >>355
基本は両方同じ、かつネイティブに処理されるコードを書いて欲しいね。
依存部分はライブラリで吸収するから。
>>359
え?うん。
お前も認めてたじゃん。どのブラウザもサブセットだって。
- 363 : ◆SEdFBOkLSw :2016/09/03(土) 22:30:37.47 ID:zOLpCpsC.net
- >>361
え?MSの2012でコンパイルできる、cppのソースコード、以外の、現実に則した表現あるの?
- 364 :デフォルトの名無しさん:2016/09/03(土) 22:31:28.65 ID:EZVA2rF2.net
- >>362
> お前も認めてたじゃん。どのブラウザもサブセットだって。
お前、毎度毎度、重要な単語を抜き取るよなw
わざとやってるだろ。
どのブラウザも「JavaScript(ECMAScript)という言語の」サブセットだって
言ったんだよ。別の言語であればそれはサブセットとはいわない。
- 365 : ◆SEdFBOkLSw :2016/09/03(土) 22:31:56.90 ID:zOLpCpsC.net
- >>357
そうよ。おかしかったらパッチ書いてプルリクするもの。
- 366 :デフォルトの名無しさん:2016/09/03(土) 22:32:33.75 ID:N47o0j5/.net
- >>360
そこに関しては納得してる。
俺が違和感があるのは、よくそれで問題にならず我慢できるなってこと。
よくArrayのサブクラスとか作らないで済むね?
Proxy使ったこと無い?@@系は?
当然独自クラスシステムフレームワーク構築するのに
プロトタイプ書き換えるとか当然やったこと無いんだろうな〜
って感じ。
そういう驚きと、同じ世界に居ない悲しみ。そんなとこ。
- 367 : ◆SEdFBOkLSw :2016/09/03(土) 22:32:54.26 ID:zOLpCpsC.net
- >>364
重要な単語も何も、本家とサブセットは関係が定義できようが、
サブセット同士はただ違うものとしか。
- 368 :デフォルトの名無しさん:2016/09/03(土) 22:33:53.31 ID:EZVA2rF2.net
- >>362
> 依存部分はライブラリで吸収するから。
アロー関数は文法なんだから、JavaScriptファイルを
分離しないと、構文エラーになるんだが?
そのライブラリはブラウザごとに読み込むファイルを分けるのか?
またパフォーマンスが落ちそうなことをwww
- 369 :デフォルトの名無しさん:2016/09/03(土) 22:35:25.80 ID:EZVA2rF2.net
- >>367
だから、そうやって重要な単語を抜き取って焦点をぼかすのはやめろ。
とある言語の、サブセット同士が違うものであっても
それはとある言語のサブセットであって、言語としては同じだろうが。
BASICはどの実装でもBASICであり
COBOLはどの実装でもCOBOLだ。
- 370 :デフォルトの名無しさん:2016/09/03(土) 22:37:05.23 ID:EZVA2rF2.net
- >>366
> よくArrayのサブクラスとか作らないで済むね?
といわれてもね。長年やってるからね。
長いES5の時代にArrayのサブクラスをつくらないで
やってきた人間に、そんなこといわれてもねw
その他も同じ。
お前のほうがやってきた経験少ないんじゃね?
- 371 :デフォルトの名無しさん:2016/09/03(土) 22:41:45.37 ID:EZVA2rF2.net
- >>366
そうだな。君、何かのポリフィルを自分で考えたことある?
特定のブラウザでは簡単にできないことを、
別の方法を使って実現するってことをやったことある?
そういう経験がないんじゃないかな?
バッドノウハウといわれるけど、仕事ではそれをやらないといけない。
Arrayのサブクラスが作れないからできませんって
簡単に泣き言を言ったらだめだよ。
Arrayのサブクラスを作ることが目的になることはまずない。
別の方法で顧客の要求を実現するんだよ。
これって発想力の問題かなぁ、それとも問題解決能力?
- 372 :デフォルトの名無しさん:2016/09/03(土) 22:56:19.81 ID:N47o0j5/.net
- >>370
当然俺もいきなり活用できたわけじゃない。
折角の機能活用できるようになろうとここ1,2年実験・研究を人一倍積み重ねてきたのよ。
いや、違うか。それより前から、特にES4の頃からかなぁ
JSなんてと言われる声が大きかった時でも、
これからはJSの時代だ。JSを深く知ろう、そしてJSの良さをもっと知ってもらおう。
JSを良くしていこう。とずっとずーっと思ってたのよ。
だからES6の盛り上がりには喜んだし、
MLも当初から参加して全て読んで、細部だが提案にも参加した。
そして実装される前から、トランスパイラではなく、エンジン毎実装されているエミュレータでテストしたりしてきたのよ。
ブラウザに機能がコミットされたら、いやされる直前に自分でローカルでコミットして即ビルド。
とにかく誰よりもよくES6を知り、よく使えるようになろうと努力した。
というのは多少大袈裟だが、そのくらいの熱はあるよ。
- 373 :デフォルトの名無しさん:2016/09/03(土) 22:59:14.75 ID:N47o0j5/.net
- つかArrayのサブクラスもできるんだけどね。
__proto__がサポートされていれば。
- 374 : ◆SEdFBOkLSw :2016/09/03(土) 23:12:05.52 ID:YIu9WVDu.net
- >>369
いや、それは言語名を拡大解釈しすぎだろ。
- 375 : ◆SEdFBOkLSw :2016/09/03(土) 23:14:31.28 ID:YIu9WVDu.net
- >>371
お前どう聞いてもそのノウハウないんだけど。
なんか書いたことある?アーキとしてライブラリ。
>>368
うん、文法上無理なものは、無理に使わないよ。
ライブラリはブラウザごとに違うよ?
当たり前だけど、そのブラウザ用に書いてるからパフォーマンス高いよ(笑)
- 376 :デフォルトの名無しさん:2016/09/04(日) 01:41:38.94 ID:dQFc65WQ.net
- そもそも、ブラウザのソースをむっちゃ細かく読み、ブラウザごとに誤差レベルのパフォーマンスのためにプログラムをかき分け、利用者にはKBのバージョンまで指定する
そんならネイティブで書いたほうがいっそ早くね?
- 377 :デフォルトの名無しさん:2016/09/04(日) 01:42:25.34 ID:dQFc65WQ.net
- ↑ネイティブっていうのはブラウザ上じゃなくてって意味ね
それだと今度はOSのソースを読み出すのかな?
- 378 : ◆SEdFBOkLSw :2016/09/04(日) 02:09:57.16 ID:OwMR9jkC.net
- >>376
クラサバの話?
だいたい似たようなもんだよ。
社内端末は、何処の会社でもそうだろうけど、標準品のパターンしか無いから。
クラサバは基本的にはあんまり作らんけどね。
標準品があるがゆえにが、何かにもインストールするのは難しい。
毎月10日に数万人が同時使用するようなものもあるから、ウェブ向きのもあるんだけどね。
- 379 : ◆SEdFBOkLSw :2016/09/04(日) 02:11:11.84 ID:OwMR9jkC.net
- >>377
案件次第だけど、RedHatと、MSは調査させることができる保守契約だから、
ソースは見なくて済むよ。
- 380 :デフォルトの名無しさん:2016/09/04(日) 02:40:24.68 ID:dQFc65WQ.net
- よくよく考えると、ハードウェアにも依存するよね
テストだけじゃなくてソースまで読むとなると、CPUとかグラフィックカードの設計図まで見ながら実装や結果が異なるかもしれない!とか言いながら開発してるのかな?
これとかは面白かったな
https://www.sophos.com/ja-jp/press-office/press-releases/2014/12/ns-browser-fingerprints-the-invisible-cookies-you-cant-delete.aspx
- 381 : ◆SEdFBOkLSw :2016/09/04(日) 02:52:39.61 ID:puAB8LUN.net
- ハードウエア依存するね。
そのへんはウェブ屋がよくまとめてくれてるよ。
このCSSをONにしたら、アニメーションがGPU使ってる行われるので、適宜利用可能そうであれば取り込んでください、とかたまり来るな。
- 382 :デフォルトの名無しさん:2016/09/05(月) 21:45:07.44 ID:g6CwjeFO.net
- こういうwebアプリってどうやってつくってるんですか
pdgを縮小とかって、どうやってやってるのでしょうか?
javascriptは関係ありますでしょうか?
https://smallpdf.com/jp
- 383 :デフォルトの名無しさん:2016/09/05(月) 23:05:01.84 ID:La2BdvKf.net
- void func(int a)
{
- 384 :デフォルトの名無しさん:2016/09/05(月) 23:10:26.66 ID:La2BdvKf.net
- 未使用変数への対処ですが、C言語だと
void func(int /*a*/)
{
....
}
void func(int a)
{
(void)a;
....
}
こんな風にしますが、JavaScriptだと定石みたいなのはありますか?
$('#element').on('mousedown', function(/*event*/) {
});
でよさそうな気がしますが、アロー関数の時は
$('#element').on('mousedown', /*event*/() => {
});
こんな風にしないとだめでかっこ悪いきがします。
- 385 :デフォルトの名無しさん:2016/09/06(火) 00:15:41.30 ID:vTB9MQXO.net
- >>384
未使用変数を必ず対処しないといけないということはない。
例えばイベントハンドラで引数にeventやeを取るのは「形」だ。
型宣言みたいなもんで、それを書いてあるからといって必ずしも
eventを利用しないことは皆知っている。
むしろその関数が別定義されていても、eventを受ける関数、
イベントハンドラの定義なんだと瞬時にわかるので意味がある。
つまりイベントハンドラとしてイベントを受け取るということだけで、
機能が満たされて意味的に「未使用」ではないとも見れる。
もしくは本当にイベントをトリガーとして関数を呼び出したいだけであれば、
引数を書かないでおくべき。
コメントアウトする文化はないのでけしてしてはいけない。
上で述べた引数をあえて書く、書かないは、関数の機能やニュアンスを表すための
弱い動的型付け言語における読み手に対する情報の追加だ。
しかしコメントアウトは書き手にとってのメタ的な情報でしか無い。
読み手に未使用変数の情報を伝えても何のプラスにもならないし、
何らかのニュアンスの提示かと思わせて混乱させるだけだ。
- 386 :デフォルトの名無しさん:2016/09/06(火) 03:32:45.25 ID:R2NwcGdU.net
- キモい ◆SEは死んだ?w
- 387 :デフォルトの名無しさん:2016/09/06(火) 03:37:28.46 ID:s5Bd4cPT.net
- >>384
使用してない変数なら書かなければいいだけ。
使わないのに引数を省略出来ないっていうのは
C言語特有の問題だ。C言語特有の問題を持ち込まないように
- 388 : ◆SEdFBOkLSw :2016/09/06(火) 08:18:45.82 ID:aJS2GtR8.net
- >>386
そんなに否定されるか不安なのか?
>>384
その定石は要はコンパイラが未使用変数だよ、と警告上げてくるから、使ってるフリするやつじゃないの?
長々誰かが説明してるけど、結論どっちでも良いよ。
書いても書かなくても。
- 389 :デフォルトの名無しさん:2016/09/06(火) 09:41:59.19 ID:KC/iVCRe.net
- >>385, >>387, >>388
ありがとうございます。
すみません、言葉足らずでしたが、>>388さんの通りC言語の
コンパイラの警告と同じような意味合いでの
eslintなどのunused-varsへの対処方法の相談でした。
引数消せばそれで良さそうとは思いましたが、それだと>>385さんの通り
eventとか意味を持った引数がわかりにくくなりそうなので、定石みたいなのはあるのかなと。
結論はどちらでも良いとのことで好きなようにやっておきます。
- 390 :デフォルトの名無しさん:2016/09/06(火) 13:11:41.52 ID:vTB9MQXO.net
- >>389
一番いいのはそういう警告は殆どOFFにするか、無視すること。
正直言って本当に厄介なバグは見つけてくれない気休め程度のもの。
気休めに気を使うことくらい馬鹿らしいことはないと思わないか?
どちらでもいいと言われてるのは書く/書かないであって、
コメントアウトは3つの選択肢の中では最低と思った方がいい。
- 391 :デフォルトの名無しさん:2016/09/08(木) 07:45:15.23 ID:O7PwNYbW.net
- プロミスって簡単に探したら、種類がいっぱい有るんですね。
現在対象にしているのが、WinJS。
timeoutなんてのが有って驚いた。
これだと非同期ロジックにシーケンス書ける。
- 392 :デフォルトの名無しさん:2016/09/08(木) 14:31:46.31 ID:OkMPKk85.net
- 標準Promiseは機能が少ないので、async/awaitを使って補うのがベストプラクティス。
もしくはextendsしても良いが、やや大変で難しいと思う。
一応キャンセルの案は入るのでtimeoutとかは簡単に実装できるようにはなる。
CancelToken型になりそうなのがまたちょっとアレだが、まあ拡張としては最適なのだろう。
https://github.com/tc39/proposal-cancelable-promises/blob/master/Cancel%20Tokens.md
- 393 :デフォルトの名無しさん:2016/09/08(木) 23:37:57.85 ID:Vzj7Ghpg.net
- ちなみにasync/awaitに対応しているブラウザは少ないので
必然的にbabelを使うということである。
- 394 :デフォルトの名無しさん:2016/09/08(木) 23:41:49.64 ID:Vzj7Ghpg.net
- なお、俺はasync/awaitを使いたいならbabelと言っただけで
async/awaitを使うと機能が増えるとは言ってない。
その話は言ったやつに聞け
- 395 :デフォルトの名無しさん:2016/09/09(金) 00:04:44.99 ID:4wEFuM4p.net
- >>393
ブラウザの話だけでいうのもどうかと思うよ。
WinJSが出てくるのならNW.jsとかNode系V8系の環境の話も十分考えられる。
V8系ならフラグオンで使えるわけだからね。
というかすぐ、互換性が〜とか言い出したり、実務を必ず伴わせようとするのは悪い癖だと思う。
ここはESスレなんだし、仕様やAPIの宙に浮いた話だって良いじゃない。
web制作板だったら確かに互換性や実際に世のブラウザで動く話は無視できないかもしれないけれど、
ここはプログラム技術板なんだし、
JSはそれこそ自分用のブラウザ拡張機能を作るためだったりするのにも使えるわけだし、
別に実験や遊びとしてこういった技術を扱う前提であってもいいと思う。
- 396 :デフォルトの名無しさん:2016/09/09(金) 16:45:04.06 ID:dcApvFQ/.net
- lengthって名前の関数を作るときなんですが、
var Sample = function() {
this.length = function() {
return 100;
}
};
Sample.length = function() {
return 100;
};
let sample = new Sample();
console.log(sample.length()); // これは OK
console.log(Sample.length()); // これは エラー
っていう動作になるのはこういう仕様でしょうか?
- 397 :デフォルトの名無しさん:2016/09/09(金) 16:46:02.70 ID:dcApvFQ/.net
- すみません、 使えなかった
こちらです。
var Sample = function() {
this.length = function() {
return 100;
}
};
Sample.length = function() {
return 100;
};
let sample = new Sample();
console.log(sample.length());
console.log(Sample.length());
- 398 :デフォルトの名無しさん:2016/09/09(金) 17:42:46.36 ID:mXWYcTT5.net
- 何がしたいの?w
- 399 :デフォルトの名無しさん:2016/09/09(金) 18:03:02.38 ID:dcApvFQ/.net
- >>398
具体的には
VectorUtil.length = function(x, y, z) {
return Math.sqrt(x*x + y*y + z*z);
};
これがしたかったです
- 400 :デフォルトの名無しさん:2016/09/09(金) 19:06:00.54 ID:R/34hIbI.net
- Function.lengthは引数の数で定義済なんで無いの
- 401 :デフォルトの名無しさん:2016/09/09(金) 19:15:39.77 ID:4wEFuM4p.net
- >>399
class構文を使えばできる。
class Sample {
static length() { return 100 }
}
Sample.length()
- 402 :デフォルトの名無しさん:2016/09/09(金) 21:42:09.18 ID:mcpsSWXB.net
- 画像収集の際にGreasemonkeyを利用してa要素+download属性を生成し、
整理しやすいように画像掲載ページのタイトル等から名前をつけて保存しているのですが、どうにかしてクロスドメインの画像に対してもリネームさせられないものでしょうか?
iframeを利用するというのも試してみましたが、元ページ側のタイトル変数などを受け渡すことが出来ず挫折してしまいました
- 403 :デフォルトの名無しさん:2016/09/09(金) 21:52:24.77 ID:dcApvFQ/.net
- >>400
そういう仕様っぽいような気がしました。
なぜ上書きできないのか、わかってないですが。
>>401
なるほど、ありがとうございます。
classって糖衣構文だと思ってるんですが
内部的にはどうやってるのでしょう(調べてみます)
- 404 :デフォルトの名無しさん:2016/09/09(金) 22:11:57.62 ID:4wEFuM4p.net
- >>なぜ上書きできないのか
[[Writable]]: false だから
https://tc39.github.io/ecma262/#sec-functioninitialize
ただし[[Configurable]]: true なのでディスクリプタセット系メソッドで上書きはできる
>>内部的にはどうやってるのでしょう
コンストラクタが定義され、その時点では上記のようにlengthプロパティを持っているが、
その後PropertyDefinitionEvaluation→ディスクリプタセット系によって上書きされる
https://tc39.github.io/ecma262/#sec-runtime-semantics-classdefinitionevaluation
- 405 :デフォルトの名無しさん:2016/09/09(金) 22:27:00.10 ID:Ml2lLB3N.net
- >>403
babelで変換したらこうなったよ。
Object.definePropertyが鍵のようだ。
"use strict";
var _createClass = function () {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps) defineProperties(Constructor.prototype, protoProps);
if (staticProps) defineProperties(Constructor, staticProps); return Constructor;
};
}();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Sample = function () {
function Sample() {
_classCallCheck(this, Sample);
}
_createClass(Sample, null, [{
key: "length",
value: function length() {
return 100;
}
}]);
return Sample;
}();
- 406 :デフォルトの名無しさん:2016/09/09(金) 22:47:46.14 ID:dcApvFQ/.net
- >>404 >>405
ありがとうございます。
勉強になりました。
- 407 :デフォルトの名無しさん:2016/09/10(土) 11:41:02.99 ID:bPnbAneW.net
- わざわざインスタンス作るまでのことじゃない
という夢を見た
- 408 :デフォルトの名無しさん:2016/09/12(月) 00:16:46.01 ID:MSYFEfr8.net
- >>407
あ
- 409 :デフォルトの名無しさん:2016/09/14(水) 11:42:56.90 ID:7fc5lKN8.net
- <body onLoad="document.getElementById(id).style.display = 'none'">
でページを読み込んだとき表示させたくない部分を隠せるのだけど
ブラウザで何回もリロードしていると隠れている部分が一瞬表示されることがあります
これを防ぐ方法あったら教えてください
- 410 :デフォルトの名無しさん:2016/09/14(水) 11:55:36.48 ID:T/00QwAr.net
- >>409
どうしてonLoadにしているのかが分からない
最初からidの要素に対してやればいいのでは?
- 411 :デフォルトの名無しさん:2016/09/14(水) 21:09:29.93 ID:jzervOJ/.net
- >>409
表示に関することはCSSでやれ
- 412 :デフォルトの名無しさん:2016/09/15(木) 04:07:08.15 ID:3ffkfw2U.net
- >>409
そりゃonLoadで消す処理の前に描画処理が走ってしまうと表示されるだろうな
まずonLoad は画像等の外部リソースがすべて読み込まれるまで発火しないので、そういう場合どちらかと言えばDOMContentLoadedで呼ぶ方がいい
一瞬でも見せたくないならcssなど外部リソースへのリンクをすべて切った状態で表示されない状態であるべき
表示したい時にそのエレメントを作るまたは流し込む、あるいは非表示にしてあるものを必要に応じて表示にする方が好ましいと思う
- 413 :デフォルトの名無しさん:2016/09/15(木) 05:14:15.52 ID:ql+kvaik.net
- 先にCSSで、非表示に設定しておいて、JSで表示すればいい
- 414 :デフォルトの名無しさん:2016/09/15(木) 05:20:33.69 ID:ql+kvaik.net
- 正しいかどうかは知らないけど、
漏れは、<head>内で、CSSを読み込ませて、
<body>の終了直前で、JS, jQuery, jQueryUI を読み込ませている
- 415 :デフォルトの名無しさん:2016/09/15(木) 08:25:11.28 ID:snQtI1Af.net
- >>409
JS有効/無効関わらず、適用させるべきなら静的に外部CSSを適用する
JS有効時のみ適用させるなら
1. JSで動的に外部CSSを挿入する
2. JSで動的にstyle要素を挿入する
3. JSで動的にdocument.styleSheetsを操作する
- 416 :デフォルトの名無しさん:2016/09/15(木) 08:35:03.76 ID:snQtI1Af.net
- 回答しておいてなんだが、これはES限定の質問ではないので下記スレで質問すべきだな
+ JavaScript の質問用スレッド vol.122 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1472426483/
そもそも、このスレがvol.121の後継スレと銘打って立てるから、こういう勘違いした質問者が出てくるんだよな
「ECMAScript デス 6」として立てれば良かったものを…
- 417 :デフォルトの名無しさん:2016/09/15(木) 16:12:55.70 ID:3ffkfw2U.net
- あっちは頭のおかしな子が常駐してるからなぁ
外部CSSでやった場合、その外部CSSを取得するためのhttpリクエストがコケたり読み込みが遅れた場合CSSが解釈される前に表示されてしまうよ
よって絶対に(一瞬たりとも)表示したくないならば外部CSSで隠すのではダメ
最低でもインラインCSSで静的に非表示にしておく事が最低条件で、可能ならそれを表示する必要が生じるまでDOM要素が存在しない状態にしておくべき
- 418 :デフォルトの名無しさん:2016/09/15(木) 18:33:18.76 ID:tL4oMhKi.net
- >>417
> 外部CSSでやった場合、その外部CSSを取得するためのhttpリクエストがコケたり読み込みが遅れた場合CSSが解釈される前に表示されてしまうよ
link要素は基本同期読み込みだったと思うがな これ以上は該当スレでやってくれ
変な奴はどこにでもいるからスルーすればいいだけ
- 419 :デフォルトの名無しさん:2016/09/16(金) 23:25:08.31 ID:90O68WAb.net
- JavaScript の Closure Compiler
https://googledevjp.blogspot.jp/2016/09/closure-compiler-in-javascript.html
> Closure Compiler は、2009 年に元は Java でリリースされました。本日は、
> まったく同じ Closure Compiler がピュア JavaScript で Java を使わずに利用できる
> ことになったことをお知らせします。この仕組みは NodeJS 環境で実行するように設計されており、
> いくつかのよく使われているビルドツールをサポートしています。
> 初めて聞く方のために説明すると、Closure Compiler は JavaScript の最適化、トランスパイル、
> タイプチェックを行うツールです。これを使うと、コードを高パフォーマンスでサイズが縮小された
> コードにコンパイルすることができます。
> let、const、アロー関数などの ES2015 の新機能をサポートしており、まだすべてではサポートされていない
> ES2015 メソッドの polyfill も提供しています。メンテナンス性や拡張性の高い優れたコードを書けるよう、
> Closure Compiler は構文チェック、タイプの使用法の訂正、さまざまな JavaScript における注意点についての警告も行ってくれます。
これは素晴らしい。Closure CompilerはGoogle製でブランド力はあるのだが、
Javaが必要だったのがJavaScriptの世界に馴染めなかったんだ。
ただbabelはその先を行っていて、拡張可能な仕組みでES2015だけじゃなく
JSX対応とかコード変換にまつわることをサポートするツールになってるんだが、
対抗馬に鳴るだろうか?
- 420 :デフォルトの名無しさん:2016/09/17(土) 08:30:02.95 ID:0xe0k3r9.net
- >>419
無駄な長文引用は止めてほしいものだな
BabelとClosure Compilerは用途が異なるので競合にはならない
- 421 :デフォルトの名無しさん:2016/09/17(土) 13:55:23.53 ID:YjgX2ujU.net
- 'use strict';
"use strict";
のどちらでも良いですか?
上級者の人はどちらを使いますか?
- 422 : ◆SEdFBOkLSw :2016/09/17(土) 13:56:43.79 ID:gYNx5cgj.net
- その先を行ってる訳じゃないでしょ。
Javaが必要だった、と言うが、そんな事なんの問題でも無いと思う。
結局、どっちも、誰かの言う「良くないJavaScript」を「良いJavaScript」に変換するだけの存在。
- 423 :デフォルトの名無しさん:2016/09/17(土) 15:18:00.80 ID:530UZtkB.net
- >>421
シングルの方がシンプルなので好まれる
ただJSONを書くときとの整合性を考えるとダブルになる
- 424 :デフォルトの名無しさん:2016/09/17(土) 17:33:41.59 ID:YjgX2ujU.net
- >>423
JSONでシングルは使えないのですか?
- 425 :デフォルトの名無しさん:2016/09/17(土) 17:43:37.89 ID:5r5hyKhZ.net
- > ただJSONを書くときとの整合性を考えるとダブルになる
そんなどうでもいいところの整合性なんて考えなくていい。
JSONとの整合性を保つ意味がない。
- 426 :デフォルトの名無しさん:2016/09/18(日) 05:27:32.37 ID:/bzuSpCV.net
- 俺はそういうとこを突き詰める人間のほうが好きだけどね。
プログラミングには少なからず美的要素が含まれるから。
少なくともそういうところを考えず放って来た者は上級者ではない。
- 427 :デフォルトの名無しさん:2016/09/18(日) 11:44:00.08 ID:8zKQ5/pX.net
- >>426
意味がわからん。
JavaScriptとJSONは似ているが別の言語と考えるべき。
言語に応じた最適な書き方を求めるべきであって、
別の言語の習慣を持ち込むなって話なんだけど?
- 428 :デフォルトの名無しさん:2016/09/18(日) 12:18:29.13 ID:JCfSaSaV.net
- >>426
Cobolみたいな表記が良いの?
- 429 :デフォルトの名無しさん:2016/09/18(日) 12:26:41.43 ID:Wkbj4nCn.net
- JSONはCSVやXMLと同じ一つのフォーマットに過ぎない
- 430 :デフォルトの名無しさん:2016/09/18(日) 15:20:31.34 ID:0+yFEvXA.net
- JSONがJavaScript Object Notationであることを勘案すると>>423は以下の様に翻訳できる
>ただJSONを書くときとの整合性を考えるとダブルになる
ただオブジェクト宣言時の表記との整合性を考えるとダブルになる
正直どうでもいいな
- 431 :デフォルトの名無しさん:2016/09/18(日) 15:36:58.44 ID:7fymcmTA.net
- 整合性ではなく、統一性なんだがw
- 432 :デフォルトの名無しさん:2016/09/18(日) 15:45:54.06 ID:8zKQ5/pX.net
- 統一する理由がない
- 433 :デフォルトの名無しさん:2016/09/18(日) 16:59:06.74 ID:/bzuSpCV.net
- 統一する理由がない。
つまりそれはどっちでもいいと言うことだろう?
逆にどっちが良いかの理由を探すのならそういうことも理由になり得るということだ。
君がそういうことを理由としないというのは結構だが、
理由とする人がいることは認めないといけない
- 434 :デフォルトの名無しさん:2016/09/18(日) 17:17:43.50 ID:8zKQ5/pX.net
- >>433
統一する理由がないと言ったのは、JavaScriptと
JSONのクォートの使い方を統一する必要が無いという意味ね。
JavaScriptはJSONじゃないんだから。
だからJSONを持ち出してきた事自体をなかったことにしろということ。
どちらにするかは採用するコーディング規約に従えばいいだけ。
- 435 :デフォルトの名無しさん:2016/09/18(日) 17:27:13.31 ID:xD5NzQXy.net
- >>433
それは理由になっている場合の理屈
君のそれが「正当な理由になってない」という事では?
- 436 :デフォルトの名無しさん:2016/09/18(日) 17:41:30.85 ID:xD5NzQXy.net
- JSONとJavaScriptでは言語体系が違うからなあ
JSONはJavaScriptの文法を真似ているだけのファイルフォーマットだからね
JSONとJavaScriptのクォートを統一するのはPHPとJavaScriptのクォートを統一するようなもの
- 437 :デフォルトの名無しさん:2016/09/18(日) 17:45:59.39 ID:xD5NzQXy.net
- 現実的な理由としてHTMLタグをJavaScriptコードに埋め込む場合、文字列リテラルでダブルクォートを使っているとHTML要素の属性を括る文字にシングルクォートを使わないとエスケープが面倒くさいというのがある
HTML文書でシングルクォートを使っているなら統一性が生まれるけど、ダブルクォートを使っているならJSでは逆にシングルクォートを使った方が統一感があっていい
あまりないけど、サーバサイドスクリプトを介在してJSONをJavaScriptコードに埋め込む場合もシングルクォートを使っていた方が都合がよい
- 438 :デフォルトの名無しさん:2016/09/18(日) 18:18:08.32 ID:7fymcmTA.net
- a = "123';
b = '456";
前後のクォートが異なる ※整合性
a = "123";
b = '456';
a b のクォートが異なる※統一性
JavaScriptに対しての統一性だと言ったんだよ
整合性が保たれていないと動作しないだろw
- 439 :デフォルトの名無しさん:2016/09/18(日) 18:58:00.12 ID:/bzuSpCV.net
- >>435
まず、どっちで書いても機能的には変わらないということが大前提にあるよね
そうしたらもう気分とかそういう人間側の都合になってくるわけよ
例えばHTMLではダブルが使われる事が多いので、
実際に埋め込むことは滅多にないだろうし、今はテンプレートリテラルもあるけれど、
気分的にJSではシングルを使うとかね
逆にそういう事が理由でないという人が今どちらかを使っている理由を聞きたい
その日のサイコロで決めてるというのでなければ理由があるはずだ
例えば本に書いてあったとか、最初に習ったのがこっちだったとかね
自分はそういう理由も理由だと思うけれど、
まだ大前提のうちでは理屈として一般的で、まだマシに意味がある想像を述べることを推してるのよ
- 440 :デフォルトの名無しさん:2016/09/18(日) 22:55:44.47 ID:8zKQ5/pX.net
- >>437
> あまりないけど、サーバサイドスクリプトを介在してJSONをJavaScriptコードに埋め込む場合もシングルクォートを使っていた方が都合がよ
そんなことしてるならコードを見直したほうが良いよ。
普通はJavaScriptオブジェクトをJSONに変換する。
- 441 :デフォルトの名無しさん:2016/09/18(日) 23:18:12.13 ID:8mgjQq3k.net
- >>439
あなたのいう「認める」とは何?
端から見ればあなたがJSONとの統一性を気にしない人を「認めていない」のだが
- 442 :デフォルトの名無しさん:2016/09/19(月) 05:07:37.39 ID:io387Cln.net
- すみません、よそ者ですが、
そもそもなぜ '' や "" で囲う必要があるのですか?
use strict;
ではダメな理由を教えていただけますでしょうか?
- 443 :デフォルトの名無しさん:2016/09/19(月) 05:42:42.21 ID:Rfn/Judi.net
- >>442
use strictに対応してないブラウザでエラーが出るからだよ。
文字列にしておけば、古いブラウザでも単なる文字列があるだけ。
- 444 :デフォルトの名無しさん:2016/09/19(月) 11:33:59.10 ID:io387Cln.net
- >>443
ありがとうございました。
長年の疑問が解消しました。
- 445 :デフォルトの名無しさん:2016/09/20(火) 00:04:22.78 ID:DlF8DRLC.net
- Angular2で出来て、Vue.jsで出来ないことはどのような事がありますか?
また逆はありますか?
- 446 :デフォルトの名無しさん:2016/09/20(火) 15:54:14.06 ID:GpfqQSu0.net
- 頭が相当悪いみたいだね?
一行目そのまま検索しろよw
- 447 :デフォルトの名無しさん:2016/09/21(水) 14:44:20.17 ID:wW2qFR9f.net
- すまん、言い過ぎた
反省してる
- 448 :デフォルトの名無しさん:2016/09/22(木) 17:06:35.53 ID:zXBENXMk.net
- 誰かflow使ってる人いる?
- 449 :デフォルトの名無しさん:2016/09/23(金) 12:16:27.04 ID:QcEXcfJB.net
- 統一する必要は無いけど、覚える量を減らしたいので統一しているよ。
- 450 :デフォルトの名無しさん:2016/09/23(金) 13:55:08.58 ID:AF/DJJLc.net
- >>449
何の話?
- 451 :デフォルトの名無しさん:2016/09/23(金) 22:25:12.59 ID:MCHe7LJO.net
- >>449
RubyとJSONで "" と '' のどっちを使うかという話だろう?
- 452 :デフォルトの名無しさん:2016/09/23(金) 23:00:49.95 ID:MCHe7LJO.net
- 正直JSONを手書きするのはやめたほうが良いよ。
ライブラリを使って(各言語の)オブジェクトとJSONの
相互変換をした方がいい。だからJSONが""でくくられてる
なんか忘れるべき。
ただテキストエディタのatomとかの設定ファイルや
package.jsonとかがJSONだったりするんだよな。
手書きは全部YAMLにすればいいのに。
- 453 :デフォルトの名無しさん:2016/09/23(金) 23:18:21.05 ID:oC1wKf1S.net
- >>451
JSONは"しか使えないから選択肢はないだろうに
>>452
> 正直JSONを手書きするのはやめたほうが良いよ。
同意、JSならJSON.stringifyで十分だな
- 454 :デフォルトの名無しさん:2016/09/23(金) 23:27:17.39 ID:Da0YgZYz.net
- 元々はjavascriptをシリアライズする為の物だったんだよね?
手書きする事はあまり考えられてなかったんじゃねーの
- 455 :デフォルトの名無しさん:2016/09/23(金) 23:30:53.64 ID:laz5P8lZ.net
- 設定ファイルをjsonで書くの多いだろ
jsonに変換するツール書くかのか? w
- 456 :デフォルトの名無しさん:2016/09/23(金) 23:35:07.87 ID:aAYGOufH.net
- ツールなんか使わなくともシリアライズする機能が各言語で用意されてるからな
- 457 :デフォルトの名無しさん:2016/09/23(金) 23:46:44.92 ID:laz5P8lZ.net
- はあ?
じゃ【設定】はどこに書くんだよ w
- 458 :デフォルトの名無しさん:2016/09/23(金) 23:51:52.39 ID:2jAc0sAD.net
- JSON.stringify({a:1, b:2}); とか、普通にやるだろ
JSONを全部手書きしたらプロパティ名をクォートで括らなければならんし、面倒くさい
簡単なJSONの書き換えなら手入力するかもしれんが
- 459 :デフォルトの名無しさん:2016/09/24(土) 00:04:59.40 ID:y4/Y2YH6.net
- お前、設定項目が数個のプログラムしか作った事ないのか? w
そんでもってa:1をa:2に書き換えたら、その都度そのプログラム実行するのか? 大爆笑
- 460 :デフォルトの名無しさん:2016/09/24(土) 00:11:43.60 ID:8/0tEXHb.net
- >>459
おまえは読解力が足りないアホなのか
数個だろうが何個あろうが、複数あるからシリアライズする価値がある
簡単な書き換えなら手入力するといってるだろ
- 461 :デフォルトの名無しさん:2016/09/24(土) 00:18:30.72 ID:y4/Y2YH6.net
- お前はアホなのか?情報は一元管理が鉄則
これに反すると
"a":1を"a":2に書き換えてa:1をa:2に書き換えるハメになる
バカしかやらんわ
- 462 :デフォルトの名無しさん:2016/09/24(土) 02:14:00.16 ID:bcRI8Hfy.net
- >>459
プログラムを実行も何も、ワンライナーじゃえの
var j=JSON.parse(fs.readFileSync(...));j.hoge=aaa;fs.writeFileSync(JSON.stringify..
- 463 :デフォルトの名無しさん:2016/09/24(土) 06:05:18.86 ID:54HKSWWZ.net
- promptでダイアログボックスを表示して、キャンセルを押すとNaNが返ってきます。
ダイアログボックスのキャンセルはNullが返ってくるとあったのですが、何がいけないのでしょうか?
見入力でOKを押した場合と、キャンセルを押した場合とで違う処理をしたいと思っています。
- 464 :デフォルトの名無しさん:2016/09/24(土) 08:35:07.11 ID:8/0tEXHb.net
- >>461
>>462藻指摘してるが、JSON.parseしてからJSON.stringifyするだけだろ
2箇所を同時に書き換えなければならない、なんて思ってるのはお前だけ
- 465 :デフォルトの名無しさん:2016/09/24(土) 09:16:15.32 ID:y4/Y2YH6.net
- >>464
後出し大将現る
> JSON.stringify({a:1, b:2}); とか
- 466 :デフォルトの名無しさん:2016/09/24(土) 10:00:58.09 ID:T2jfomp1.net
- >>463
知らんけどブラウザ依存じゃない?
ttps://jsbin.com/tamofawite/edit?js,output
Chromeだと false だった
- 467 :デフォルトの名無しさん:2016/09/24(土) 12:47:39.74 ID:NUokNM1t.net
- >>465
元々はJSONを入力する時の話だったからJSON.stringifyを紹介した
お前さんが「JSONとオブジェクト初期化子の2箇所を同時に書き換えるのか」とアホな事をいってJSON読み込みの必要が出てきたからJSON.parseを紹介した
お前さんが何の設定する事を想定していてどのように編集しているのか、俺は知らん
俺から見れば情報を曖昧に出して後出ししたのはお前の方
- 468 :デフォルトの名無しさん:2016/09/24(土) 12:51:25.63 ID:NUokNM1t.net
- 後な
JSONの設定編集は当初の>>421の質問からは大きく話題がずれてる
JSONの設定に合わせてJavaScriptコードの入力スタイルを決める必然性はまるでない
君はそうなんだろうが、別の言語同士でクォートの記述を合わせる必要はないからな
GoogleのJavaScript Style Guideに合わせてシングルクォートを使う人もいるだろう
見た目を気にしてシングルクォートを使う人もいるだろう
HTMLで見慣れているダブルクォートを使う人がいるかもしれない
最終的には自分なりの好みや優先順位で決まるもので他人の考えを否定出来るほどの論理は基本的にない
- 469 :デフォルトの名無しさん:2016/09/24(土) 12:58:58.18 ID:YdAnVmLb.net
- 勝手に整合性を自己定義している時点で間違い
- 470 :デフォルトの名無しさん:2016/09/24(土) 13:04:04.59 ID:y4/Y2YH6.net
- 後出し大将あらため言い訳番長
【設定ファイル】って知らないらしい
- 471 :デフォルトの名無しさん:2016/09/24(土) 13:56:12.12 ID:e4J3FKju.net
- >>470
何の設定ファイル?
JavaScriptには設定ファイルなんてないぞ。
- 472 :デフォルトの名無しさん:2016/09/24(土) 14:33:05.17 ID:y4/Y2YH6.net
- おバカですねえ、揚げ足取りにすらなってない
- 473 :デフォルトの名無しさん:2016/09/24(土) 15:28:20.96 ID:e4J3FKju.net
- 揚げ足取りではなくて、質問なんだが?
質問なのに揚げ足取りに鳴るわけ無いだろw
それで、何の設定ファイル?
- 474 :デフォルトの名無しさん:2016/09/24(土) 17:56:14.37 ID:y4/Y2YH6.net
- そんじゃ、質問で返してやるよ
キミが知ってる【設定ファイル】を読み込むプログラムを記述してる言語を答えよ。そしてその記述言語の設定ファイルの有無も答えよ。
これに回答できたら教えてあげる
- 475 :デフォルトの名無しさん:2016/09/24(土) 18:01:32.86 ID:fVgLvkCD.net
- こっちにも貼っとくか…
http://i.imgur.com/u6Rc0Au.jpg
自分がレスを返してる相手がレスを返す価値のある相手かよく考えろよ
- 476 :デフォルトの名無しさん:2016/09/24(土) 18:32:49.67 ID:fP/MPmfi.net
- AutopagerizeのSITEINFOはJSONだな
http://wedata.net/databases/autopagerize/items
- 477 :デフォルトの名無しさん:2016/09/24(土) 20:38:30.75 ID:6IMs83+U.net
- >>474
C言語。そしてC言語に設定ファイルなんてものはない。
- 478 :デフォルトの名無しさん:2016/09/24(土) 20:43:52.34 ID:y4/Y2YH6.net
- >>477
じゃ、教えてあげよう
atom
- 479 :デフォルトの名無しさん:2016/09/24(土) 21:27:12.07 ID:6IMs83+U.net
- >>478
atomはテキストエディタ
- 480 :デフォルトの名無しさん:2016/09/24(土) 21:37:31.21 ID:y4/Y2YH6.net
- >>479
そうだよ。javascriptの設定ファイルなんて誰も言ってないのに
どっかのバカがこんな(>>471)マヌケな事言い出したから。ハア? だよ
>>471
>>>470
>何の設定ファイル?
>JavaScriptには設定ファイルなんてないぞ。
- 481 :デフォルトの名無しさん:2016/09/24(土) 22:28:02.67 ID:/TWDHHcN.net
- xjsonとか云うの出すらしいから
手書きも増えるし、要求されるかもしれない。
- 482 :デフォルトの名無しさん:2016/09/24(土) 23:10:20.02 ID:6IMs83+U.net
- >>480
意味がわからん。
atomの設定ファイルをJSONで書くからって
C言語などでJSONに合わせてコード書く必要ないだろ。
- 483 :デフォルトの名無しさん:2016/09/24(土) 23:39:01.41 ID:y4/Y2YH6.net
- >>482
それはキミがバカだからわからないんだよ
JSONで記述された設定ファイルの話をしていたら、どっかのバカが
>何の設定ファイル?
>JavaScriptには設定ファイルなんてないぞ。
と、絡んできただけ
- 484 :デフォルトの名無しさん:2016/09/25(日) 00:39:56.37 ID:0J+83ZC2.net
- >>483
だからJSONで記述された設定ファイルの話を
JavaScriptのスレでする意味ないだろって話なんだが?
- 485 :デフォルトの名無しさん:2016/09/25(日) 05:34:54.46 ID:y4/VuarS.net
- もういいよ
皆>>483が正しいって分かってるから
>>484は放っておこう
- 486 :デフォルトの名無しさん:2016/09/25(日) 07:44:51.98 ID:qiD59u34.net
- そうでないかと危ぶんでいたが、やはり、Atomだったか
Atomの設定ファイルをテキストエディタで編集するのはcsonだと思うが、jsonを編集する事なんてあるのか?
改行もインデントもされてないjsonファイルを直接編集するのはいかれてるとしか思えないんだが
> 皆>>483が正しいって分かってるから
本人しか同意してないように読めるけどな
- 487 :デフォルトの名無しさん:2016/09/25(日) 08:41:36.29 ID:hrPU7kVw.net
- >>463 >>466
jQuery UI のダイアログでも使えば?
OK, Cancelの2つのボタンしか無いなら、
if(OK){ }
else { }
でいいだろ
戻り値が、NaN というのは、数値変換エラーだから、プログラムにバグがある
>>486
圧縮された、JSファイルでも、Edgeの開発者ツールなどで、きれいに整形して表示してくれる
- 488 :デフォルトの名無しさん:2016/09/25(日) 09:50:51.04 ID:KU3wtz+G.net
- >>484
>だからJSONで記述された設定ファイルの話を
>JavaScriptのスレでする意味ないだろって話なんだが?
足りない頭で必死に考えたんだろうが、バカ過ぎる
あるアプリの設定ファイルを設計したい、javascriptなのでJSONで行こうと思うが、
その際の注意点は…
全然問題ない
- 489 :デフォルトの名無しさん:2016/09/25(日) 10:03:00.83 ID:NgaD/H31.net
- そうだよな、設定ファイルがJSON形式というだけ
- 490 :デフォルトの名無しさん:2016/09/25(日) 10:13:15.83 ID:qiD59u34.net
- >>487
いや、「config.csonを編集することはあってもapplication.jsonを編集することはないんじゃない?」って事
テキストエディタの設定ファイルをテキストエディタで編集するなら、コメントやインデントをつけたくなるし、俺はAtomでJSONファイルを編集したことがない
> 圧縮された、JSファイルでも、Edgeの開発者ツールなどで、きれいに整形して表示してくれる
そういうツールがあるのは知ってる
JSONを整形するなら内部的にJSON.parseと同等機能を使っているはずだが、彼(>>465)はなぜか否定的というか馬鹿にしている感があるし、主張がちぐはぐすぎるんだよな…
- 491 :デフォルトの名無しさん:2016/09/25(日) 10:27:53.21 ID:qiD59u34.net
- そもそも、JSONはテキストエディタで直接編集することを踏まえていない感がある
インデントはできるが、コメントは使えない時点でテキストエディタで編集する気が起きない(Atomで膨大な設定用プロパティを全て覚えるのは無理)
どうしても必要な状況があれば「JSON エディタ」的な何かを使うだろうな
実際には>>476のように設定用UIを別に作っているケースが多いと思う
Atomはユーザが直接編集するものはCSONかCoffeeScriptを使い、プログラム側で生成するものはJSONを使っている
- 492 :デフォルトの名無しさん:2016/09/25(日) 12:11:22.44 ID:qud+/4QR.net
- うーん。設定用UIねえ
ゲームエンジン作ったときの話だけど
ユーザー側の設定用UIはボチボチ作るというかJSONにしないけど
そのエンジンの設定ファイルを書き出すためのツール作らないでしょ
バージョンアップの度にUI弄って書き出すのか?と言うことになるし
intファイルと同じく手編集もするものだと思うよ
で、コーディングと一緒に書いていくから、クォーテーションの整合性を気にするのも自然
- 493 :デフォルトの名無しさん:2016/09/25(日) 12:22:42.62 ID:iekzKwrb.net
- JSONがテキストエディタで編集するのに向かないって話じゃないの?
CSVをテキストエディタで編集しないのと同じ
- 494 :デフォルトの名無しさん:2016/09/25(日) 12:24:56.98 ID:iekzKwrb.net
- >>492
iniはコメントを許す仕様じゃなかったっけ
テキストエディタで編集する前提ならその設定行の意味するところをコメントで書くべきだと思うな
- 495 :デフォルトの名無しさん:2016/09/25(日) 13:28:03.63 ID:0J+83ZC2.net
- >>488
> あるアプリの設定ファイルを設計したい、javascriptなのでJSONで行こうと思うが、
別にJavaScriptだからってJSONを使う理由はないし
RubyだってJSONを使うことだってある。
っていうか、その理屈だとYAMLはいつ使うんだよ?w
YAMLみたいな言語はないぞ。
- 496 :デフォルトの名無しさん:2016/09/25(日) 13:32:12.13 ID:0J+83ZC2.net
- Atomの例でわかるように、JSONが" " でくくられているからって、
JavaScriptのコードは "" で括る必要はないね。
- 497 :デフォルトの名無しさん:2016/09/25(日) 13:33:11.00 ID:V/4I7o9u.net
- >>495
YAMLみたいな言語、がようわからんね。
Yaml ain't markup language
なんだから、言語ではないよ。
- 498 :デフォルトの名無しさん:2016/09/25(日) 13:33:55.60 ID:0J+83ZC2.net
- >>497
だから設定ファイルの流儀をソースコードに持ち込むなって話だよ。
atomの例で分かったろw
- 499 :デフォルトの名無しさん:2016/09/25(日) 13:53:31.79 ID:V/4I7o9u.net
- >>498
そりゃ変だよ。
パースできるものとソースの書式が同じでなんの問題も無いし、
存在意義とか目的によって、サブセットになるのは至極当然な気がするが。
- 500 :デフォルトの名無しさん:2016/09/25(日) 13:56:15.35 ID:6/nEO/uB.net
- evalでパースすれば関数もパース出来るし、式も使える
コメントもあるし、""をキーに使わなくていいし、''を使う事も出来る
- 501 :デフォルトの名無しさん:2016/09/25(日) 14:39:36.71 ID:0J+83ZC2.net
- >>499
話がずれてる。同じだと問題があるなんて一言も言ってない。
同じにする必要はない。設定ファイルのことなんか忘れて
JavaScriptのやり方として良い方を選べって言ってる。
その例としてAtomを出したんだが?わからなかった?
Atomは設定ファイルにJSONを使っているが、
JSONが""だからって、ソースコードは""にする必要はない。
- 502 :デフォルトの名無しさん:2016/09/25(日) 14:41:15.30 ID:0J+83ZC2.net
- >>500
それはJSONの仕様を満たしていないから
JSONではない。
- 503 :デフォルトの名無しさん:2016/09/25(日) 14:54:10.10 ID:hrPU7kVw.net
- >>491
JSONでは、JSのコメントが使えないの?
それならダメだわ
Ruby, Groovy みたいに、言語そのものが、
設定ファイルとしても読める、DSL風の言語が優れている
- 504 :デフォルトの名無しさん:2016/09/25(日) 15:05:45.98 ID:0J+83ZC2.net
- >>503
お前「言語そのものが設定ファイル」の意味分かってないだろ。
言語そのものを設定ファイルとして読むっていうのならどの言語でも可能だよw
コンパイルしないと実行できない言語の場合は
コンパイラを内蔵する必要があるだろうけど。
- 505 :デフォルトの名無しさん:2016/09/25(日) 15:36:47.03 ID:y4/VuarS.net
- >>501
「必要はない」じゃないんだよ
「ない」という答えを出すのは簡単
元の質問に、「そんなのどっちでも関係ない、そんなこと聞くな」というのは簡単
でもそれじゃつまらないから、しいて言えばの理由をひねり出してるんでしょ
その前提分かってそういうこと言ってる??
しいて言えばそういうこと気にする人もいるということを言ってるの
別に一般的に気にする必要があるとは誰も言っていない
- 506 :デフォルトの名無しさん:2016/09/25(日) 15:38:42.41 ID:0J+83ZC2.net
- はぁ?
じゃあGoogleのコーディングスタイルに合わせて
'' を使うべきだっていうのが正確だよw
- 507 :デフォルトの名無しさん:2016/09/25(日) 15:39:13.51 ID:0J+83ZC2.net
- あ、見にくかったな。
' ' (シングルクォート)でくくるべきだっていうのが正解だよ。
- 508 :デフォルトの名無しさん:2016/09/25(日) 15:51:35.05 ID:0J+83ZC2.net
- どっちが良いのかは、実際にどちらが多く使われてるかで決めたほうが良いよ。
http://sideeffect.kr/popularconvention#javascript
理由がある場合は必然的に多く使われるし
理由がなくとも一般的なJavaScriptの書き方として統一しておいたほうが良い。
あともちろんJavaScriptとしての話なので、
ここで他の言語のルールを参考にする必要はまったくないw
- 509 :デフォルトの名無しさん:2016/09/25(日) 15:59:27.55 ID:0J+83ZC2.net
- 数もそんなにないし転記しようかね? (俺のスタイルと完全に一致してるw)
・最後にカンマ vs 最初にカンマ → 最後にカンマ
○ var obj = {
foo: 1,
bar: 2,
× var obj = {
foo: 1
, bar: 2
・スペース vs タブ → スペース
・関数名の後にスペースを入れる vs いれない → 入れない
○ function foo() {
× function foo () {
・引数の前後にスペースをいれる vs いれない → 入れない
○ function fn(arg1, arg2) {
○ if (true) {
× function fn( arg1, arg2 ) {
× if ( true ) {
・オブジェクト定義の:の前後にスペースを入れる → 値の前のみに入れる
○ foo: 1,
× foo:1,
× foo : 1,
・条件文のキーワードの後にスペースを入れる → 入れる
○ if (true) {
× if(true) {
・シングルクォート vs ダブルクォート → シングルクォート
- 510 :デフォルトの名無しさん:2016/09/25(日) 16:00:55.47 ID:rgw8PMte.net
- 前から疑問なんだが
JSONはなぜ大文字なの?
- 511 :デフォルトの名無しさん:2016/09/25(日) 17:02:28.76 ID:+OU/FywJ.net
- >>510
JavaScript Object Notationの略であり、英語ではこの様に単語の頭文字を抜き出した略語を他の語と区別するために大文字で表記する慣習があるから
- 512 :デフォルトの名無しさん:2016/09/25(日) 17:17:23.26 ID:0J+83ZC2.net
- つーかatomの例を出したんだから
そこから理解しろよw
JSONとJavaScriptは別物なんだから
JSONがダブルクォートだからって、
ソースコードまでJSONに合わせる必要ねーだろ。
文字列をくくるのはシングルクォートだし、
オブジェクトのキーであればそもそもクォートでくくらない。
- 513 :デフォルトの名無しさん:2016/09/25(日) 17:20:48.99 ID:iekzKwrb.net
- >>503
JSONではコメントを使えないのでAtomではテキストエディタで編集する前提のファイルにはCSONを使っている
上でJSON云々で暴れている人はJSONをまるで理解してしないと思われる
- 514 :デフォルトの名無しさん:2016/09/25(日) 18:25:59.06 ID:afVL0VXc.net
- どっかでみた感じのテンションの上がり方だな。
尻カンマではなく頭改行カンマ派だと言うことはおいといて、
なぜその言語のサブセットか自体であるべきではないと言い切っちゃうんだろう。
最悪、パーサが無くても解釈出来るようにだと思うんだが。
- 515 :デフォルトの名無しさん:2016/09/25(日) 18:34:17.91 ID:KU3wtz+G.net
- >>513
頭悪いな
じゃpackage.jsonでも、なんでもいいぞ
atomを使ってないのは正解だ
- 516 :デフォルトの名無しさん:2016/09/25(日) 20:12:32.35 ID:0J+83ZC2.net
- 知らないかもしれないが、package.jsonっていうのはnpmの話だ。
ソースコードをみれば、何が言いたいのかわかるだろう。
https://github.com/npm/npm/blob/master/lib/completion.js
JSONの流儀に合わせるやつなんていない。
- 517 :デフォルトの名無しさん:2016/09/25(日) 22:29:45.99 ID:Pt+ww3lU.net
- package.jsonをテキストエディタで書く人がいるとは…
彼は反論する度にボロが出てくるな
- 518 :デフォルトの名無しさん:2016/09/26(月) 00:08:05.47 ID:fnqveAbt.net
- 奴隷のように決められたパターンでしか使わないなら、手書きしないでも済むだろうね
- 519 :デフォルトの名無しさん:2016/09/26(月) 00:15:10.40 ID:juGwjv/D.net
- >>518
奴隷のようにって必要なくね?w
package.jsonは決められたパターンでしか
使わなくて済むようになってる。
だから手書きする必要もない。
OK?
- 520 :デフォルトの名無しさん:2016/09/26(月) 00:17:22.71 ID:fnqveAbt.net
- それは奴隷のキミだけ
- 521 :デフォルトの名無しさん:2016/09/26(月) 00:23:18.72 ID:vYe4FNCy.net
- 奴隷のように決められたフォーマット(JSON)でしか書かない人は誰だろうね
- 522 :デフォルトの名無しさん:2016/09/26(月) 00:32:59.19 ID:juGwjv/D.net
- なんかまだ気づいてないみたいだけど、npmの
ソースコードはダブルクォートじゃなくて
シングルクォートを使ってるんだよ。
そしてオブジェクトのキーはダブルクォートでくくらない。
これがJavaScriptの標準的なコーディングスタイルなんだよね。
JSON? 関係ない話だね。
- 523 :デフォルトの名無しさん:2016/09/26(月) 05:04:27.74 ID:ta1cG+2z.net
- そのコーディングスタイルでは関係ない、無視しているというだけで
気になる人も居るだろうということを否定することはできない
- 524 :デフォルトの名無しさん:2016/09/26(月) 18:00:26.14 ID:BmhEYJ2V.net
- ang2で2つの要素をforするにはどうすればいいですか?
定義リストをforで回したいです
- 525 :デフォルトの名無しさん:2016/09/26(月) 22:08:18.59 ID:vSvkRnqZ.net
- >>524
ang2とは?
状況は詳しく具体的に
- 526 :デフォルトの名無しさん:2016/09/26(月) 22:38:26.95 ID:juGwjv/D.net
- ang2っていったらAngular2のことに決まってるだろ
- 527 :デフォルトの名無しさん:2016/09/26(月) 22:44:16.17 ID:xBbiKNTT.net
- 配列の要素を順番に、かつ非同期に処理するにはどうすりゃいいの?
[a,b,c].forEach((x)=>{
//?
});
コメントの部分にawait書いても当然エラー
(x)=>{の前にasync書いても並列で処理されるだけ
aを使った非同期処理が完了したらbを使った非同期処理を開始したい
なおforや再帰は使わないものとする
- 528 :デフォルトの名無しさん:2016/09/26(月) 23:41:32.26 ID:juGwjv/D.net
- >>527
あんたが言ってる「非同期」の正確な意味は?
JavaScriptはシングルスレッドだから並列に処理することは出来ない。
昔も今もそれは同じ。
スレッドを使うにはJavaScript外の機能を使うしかない。
つまりはブラウザではDOM APIの内部で使われてるスレッドを間接的に使うか
もう少し明確にスレッドを使っていることを明言しているWebWorkersを使うということ。
Promise(await/async)を使うだけならばシングルスレッドでもできる。
どういう意味で「非同期」と言っているか、本当にやりたいことは何かを言ってくれ。
- 529 :デフォルトの名無しさん:2016/09/26(月) 23:55:09.05 ID:xBbiKNTT.net
- >>528
たとえば以下で'a'を表示したら1秒待って'b'を表示させる(以下'c'も同様)にはどうすればいい?
forや再帰は無しで
['a','b','c'].forEach((x)=>{
new Promise(resolve=>{
setTimeout(()=>{
console.log(x);
resolve();
}, 1000);
});
});
setTimeoutはapiだからスレチ?
- 530 :デフォルトの名無しさん:2016/09/27(火) 00:26:52.16 ID:2eVdEzmX.net
- >>527だけど上のほうに書いてあったreduceでthenを繋げる方法で解決しました
- 531 :デフォルトの名無しさん:2016/09/27(火) 09:19:03.59 ID:lbwP9zfe.net
- 自分でeachAとか作って
await ['a','b','c'].eachA( async関数 )
のように書けるようにする必要がある
折角のasync関数なのにPromiseをこねくり回す位なら
for文使ったほうが絶対に良い
- 532 :デフォルトの名無しさん:2016/09/27(火) 09:33:31.51 ID:Bz+GHRpv.net
- >>531
だよな、基礎知識の欠落
- 533 :デフォルトの名無しさん:2016/09/27(火) 10:20:45.69 ID:4v6Nawqj.net
- >>528
言ってることがめちゃくちゃですがな。
並列・平行、同期・非同期についてもっと調べてからものを言ってくれ。
- 534 :デフォルトの名無しさん:2016/09/27(火) 10:49:37.22 ID:5SWTtAlN.net
- ループ中にsetTimeoutという概念が理解できないわ
- 535 :デフォルトの名無しさん:2016/09/27(火) 11:02:56.83 ID:+FylPIiv.net
- >>534
Watch dogタイマー知っている?
あれなんか、簡単な例だと思うよ。
- 536 :デフォルトの名無しさん:2016/09/27(火) 12:31:43.94 ID:r4YBGm4y.net
- >>535
>>530の解決を見ると例にもならないな
- 537 :デフォルトの名無しさん:2016/09/27(火) 12:41:12.30 ID:+FylPIiv.net
- >>536
? 配列要素処理のお話の事なの??
前からお話していた、非同期処理の周期タイマー利用のお話だと思ったけど。
配列要素処理なんだから、mapやreduce使えば済むんだもんね。
タイマーなんか関係ないわ。
- 538 :デフォルトの名無しさん:2016/09/27(火) 12:49:21.75 ID:BPXrtVfk.net
- >>534
JSはシングルスレッドだから、イベントを非同期に見せかける。
イベントキューにイベントを投入して、その処理を待たずに、関数が先にリターンする
同期処理なら、インターネットとの通信など、
そのイベントが終了するまで、関数がリターンされない。
処理終了まで待つから、そこで処理が止まる
ちなみに、setTimeoutに、0を指定しても、イベントキューからイベントを取り出すのは、
次のサイクルになるので、最低でも、4msかかる
また非同期では、try-catch は使えないので、
昔ながらの戻り値で、エラーかどうかを判断する
つまり、イベントキューにイベントを投入するだけなので、
処理がそこで止まっていないので、すぐ次の処理へ進んでいくから
そしてどこかのタイミングで、イベントのコールバック関数が呼ばれるから、
どちらが先に呼ばれるか、タイミングが予測できないから、
よくバグるし、再現性がないので、非常に困る
- 539 :デフォルトの名無しさん:2016/09/27(火) 13:25:00.83 ID:QIjlBim5.net
- >>529
setTimeoutはまあ非同期処理のダミーだとして回答すると、Promiseをプレースホルダーとしてthenでチェーンをつないでいけばいいので以下の様になる。
var promise=Promise.resolve();
['a','b','c'].forEach((x)=>{
promise=promise.then(()=>{
new Promise((resolve,reject)=>{
setTimeout(()=>{
console.log(x);
resolve();
}, 1000);
});
});
});
- 540 :デフォルトの名無しさん:2016/09/27(火) 20:48:56.77 ID:pg5DZ73n.net
- >>533
質問者とは意思疎通できたから
君とは話さなくていいかなって思ってるよw
- 541 :デフォルトの名無しさん:2016/09/28(水) 08:12:30.32 ID:zSRNZ6Ju.net
- 何かを理解したい、何かの知識が無い人間とだけ意思疎通できるってみっともないと気づかんのかねぇ。
そりゃ単に、語弊があったり正しいとは限らない言い方をしている事に自分が気づいてないのに加えて、飛んでくるマサカリ避けて終わりな、
とても低レベルな偽技術者ですってドヤ顔されてる気分。
- 542 :デフォルトの名無しさん:2016/09/28(水) 12:21:35.90 ID:3RTmt4Yz.net
- すみませんdwrについての質問はここでよろしいのでしょうか
- 543 :デフォルトの名無しさん:2016/09/28(水) 12:49:31.69 ID:RDlboUCA.net
- Access-Control-Allow-Origin: *
の設定をサーバーでしているのに、クロスドメイン制約でアクセス出来ません
chromeです
networkタブを見たら、アクセス自体が行われていないので、ヘッダの確認も出来ていないはずです
- 544 :デフォルトの名無しさん:2016/09/28(水) 21:34:41.98 ID:NVy1RbGE.net
- >>541
> 何かを理解したい、何かの知識が無い人間とだけ意思疎通できるってみっともないと気づかんのかねぇ。
何を言ってるんだ?
今回意思疎通をしたいのは質問者であってお前じゃない。
知識がない人と意思疎通をするんじゃなくて
質問者と意思疎通をするのが目的。
そもそも俺は質問者が知識がないとはは思わないし、
お前、失礼なやつだな。失礼なだけのやつだな。
- 545 :デフォルトの名無しさん:2016/09/28(水) 22:27:51.60 ID:EXLHhJLL.net
- >>544
「何かを理解したい」と「何かの知識が無い」は=じゃなくて、「または」だよ。
失礼と言うなら、「俺が『何かを理解したい人間は何かの知識が無い人間だ』と誤解しているに違いない」と言う発想自体が失礼だと思うけど。
お前がやってんのは、Excelの使い方が分からん人の「A列で3番目に大きい数字が欲しいんだけどどんな関数ある?」って質問に、嬉々としてIFとかRANKの使い方説明してるようなもの。
パソコンの大先生以外の何なのかわからんレベル。
何で?→それ以上の数字を更に検索したいんだよ→めんどくさいし使い捨てならA列コピって並べ替えちゃえば良いじゃん
があって然るべき。
- 546 :デフォルトの名無しさん:2016/09/29(木) 02:37:58.14 ID:kaW1Iqgz.net
- それは間違ってるよ
ここは似非回答者が知識をひけらかす場所だからね
けして人助けするスレではない
そこんとこ勘違いしないように!
- 547 :デフォルトの名無しさん:2016/09/29(木) 18:44:44.84 ID:KUMvFnA4.net
- >>546
babel君のオナニースレだからねえ。
- 548 :デフォルトの名無しさん:2016/10/04(火) 11:14:52.40 ID:R4xZGg72.net
- オブジェクトをjson化した文字列がサーバーサイドにあり、
それをクライアントのJSに渡してオブジェクトに復元したいのです。
JSON文字列のままJSに渡してJSでJSON.parse()する方法と、
サーバーサイドでDeserializeしてオブジェクトを復元して、
それをJSに渡すのと
どっちが普通ですか?文字列の大きさは数メガバイトくらいです。
- 549 :デフォルトの名無しさん:2016/10/04(火) 12:19:52.18 ID:Vg4EUv8s.net
- >>548
JSでJSON.parse()が普通
通信路は負荷が無いならなるべくテキストでな
- 550 :デフォルトの名無しさん:2016/10/04(火) 18:21:44.79 ID:RzipCig6.net
- <input type="button" name="aaa" value="クリック" onClick="Disp_on_off('disp');">
<TABLE border="1">
<TR>
<TD>1行目:</TD><TD>aaaaaa</TD>
</TR>
<TR id="disp">
<TD>2行目:</TD><TD>nnnnnn</TD>
</TR>
</TABLE>
- 551 :デフォルトの名無しさん:2016/10/04(火) 18:22:25.04 ID:RzipCig6.net
- function Disp_on_off(id){
var disp_zyoutai = document.getElementById(id).style.display;
if(disp_zyoutai=="none"){disp_zyoutai = "block";}
else{disp_zyoutai = "none";}
document.getElementById(id).style.display = disp_zyoutai;
}
テーブルの2行目をクリックボタンを押すたびに表示非表示にしたいんですが
クリックを2回押して2行目を表示させるとテーブルが崩れてしまいます
テーブルが崩れないようにするにはどうしたらいいんですか?
- 552 :デフォルトの名無しさん:2016/10/04(火) 19:59:17.28 ID:oFIFwTqQ.net
- >>551
if(disp_zyoutai=="none"){disp_zyoutai = "table-row";}
- 553 :デフォルトの名無しさん:2016/10/04(火) 21:56:34.90 ID:px5zXLds.net
- >>551
function Disp_on_off(id) {
var style = document.getElementById(id).style;
style.display = (style.display === "none") ? "table-row" : "none";
}
- 554 :デフォルトの名無しさん:2016/10/04(火) 21:56:43.31 ID:RzipCig6.net
- >>552
ありがとう^^
それではcssでdisplay:none;したものをjavascriptでdisplay="block";
しようとしても表示されませんcssでnoneしたら表示は無理なんでしょうか?
- 555 :デフォルトの名無しさん:2016/10/04(火) 22:00:08.07 ID:px5zXLds.net
- function Disp_on_off(id) {
var style = document.getElementById(id).style;
style.display = {none: "table-row"}[style.display] || "none";
}
- 556 :デフォルトの名無しさん:2016/10/04(火) 22:01:54.54 ID:px5zXLds.net
- >>554
CSSを使って表示の制御をするのはいいやり方だ。
CSSを使って表示の制御をするなら、CSSを使って切り替えれば良いのだ
- 557 :デフォルトの名無しさん:2016/10/04(火) 22:10:22.18 ID:px5zXLds.net
- <input type="button"value="クリック" onclick="toggleDisp('disp')">
<table>
<tr><td>1行目:</td><td>aaaaaa</td></tr>
<tr id="disp"><td>2行目:</td><td>nnnnnn</td></tr>
</table>
table { border-collapse: separate }
table, td { border: 1px solid #000 }
#disp { display: none }
#disp.visible { display: table-row }
function toggleDisp(id) {
document.getElementById(id).classList.toggle("visible");
}
- 558 :デフォルトの名無しさん:2016/10/05(水) 02:32:23.82 ID:ei6gN13W.net
- >>549
レスありがとうございました。
>JSでJSON.parse()が普通
そうですか。知らなかったです。
>通信路は負荷が無いならなるべくテキストでな
ちなみに、テキスト以外でデータを送ると問題が出る場合がありますか?
- 559 :デフォルトの名無しさん:2016/10/05(水) 05:46:49.56 ID:R0YCD/Ke.net
- テキスト以外でデータを送るとは?
WSでバイナリ形式オブジェクトで送るの?
- 560 :デフォルトの名無しさん:2016/10/05(水) 19:44:50.64 ID:v4W0ZcSs.net
- >>558
パケット見ながらデバッグしてるときに涙が出る程度だよ
- 561 :デフォルトの名無しさん:2016/10/05(水) 20:03:03.59 ID:ei6gN13W.net
- >>560
そんなデバッグが出来るのかあ?
- 562 :デフォルトの名無しさん:2016/10/07(金) 11:00:25.76 ID:NhgFAWyY.net
- >>561
Just do it!
- 563 :デフォルトの名無しさん:2016/10/09(日) 00:31:57.19 ID:jFWGfuyl.net
- angular2
Error: (SystemJS) Can't resolve all parameters for ActivatedRoute: (?, ?, ?, ?, ?, ?, ?, ?).
と出ます。どうすればいいでしょうか?
- 564 :デフォルトの名無しさん:2016/10/10(月) 00:56:23.62 ID:tytyuWsD.net
- FirefoxのアドオンGreaseMonkeyつかって開いたページにあるワードが含まれてたらアラートするようにしたいんですがどうすればいいんでしょうか?
- 565 :デフォルトの名無しさん:2016/10/10(月) 01:00:02.76 ID:tytyuWsD.net
- >>564補足
とりあえずRegExp.testつかってやろうとおもったんですけどページの内容をどうやれば検索対象ストリングにいれればいいのかわかりません。
他にももっとスマートな方法あったら教えてください。
- 566 :デフォルトの名無しさん:2016/10/10(月) 02:26:33.91 ID:6bVjh2uR.net
- >>563
「Can't resolve all parameters for ActivatedRoute」で検索!
>>564-565
Node.textContent
https://developer.mozilla.org/ja/docs/Web/API/Node/textContent
var text = document.getElementsByTagName("body")[0].textContent;
<body> か、<head> の内容もいるなら、<html> 以下を取得すればいい
- 567 :デフォルトの名無しさん:2016/10/10(月) 11:38:06.31 ID:UL1Nitj4.net
- >>566
ありがとうございます
出来ました
- 568 :デフォルトの名無しさん:2016/10/10(月) 12:14:26.53 ID:ToNMYAzu.net
- >>567
あなたは>>563?
それとも>>564?
- 569 :デフォルトの名無しさん:2016/10/10(月) 13:26:43.29 ID:UL1Nitj4.net
- >>563です
- 570 :デフォルトの名無しさん:2016/10/10(月) 14:12:18.24 ID:tytyuWsD.net
- >>566
わてもできたよ。
リンクまではっていただきありがとうございます。
ちなみに[0]はなにですか?
リンク先にも書いてなかったし、なくても出来きたけど。
- 571 :デフォルトの名無しさん:2016/10/10(月) 18:59:33.24 ID:Fn778QpQ.net
- >>564
なんで猿なんだよ?
- 572 :デフォルトの名無しさん:2016/10/10(月) 21:04:02.56 ID:tytyuWsD.net
- >>571
よくわかりません。
さるつまりGreaseMonkey以外に使える方法があるということですか?
- 573 :デフォルトの名無しさん:2016/10/10(月) 21:27:42.34 ID:c135JfrF.net
- >>570
getElementsByTagNameは疑似配列を返す
[0]がなかったら動かないはずだ
- 574 :デフォルトの名無しさん:2016/10/11(火) 05:55:53.39 ID:GK6S8De2.net
- そうなんですか
- 575 :デフォルトの名無しさん:2016/10/11(火) 22:11:58.12 ID:Ld7sCMib.net
- document.body でいいだろ。
というか、<html>/<body> 以外は特に querySelectorAll() をできるだけ使え。
もう getElementById(), getElementsByTagName() を使わないようにすべき。
なぜ getElementById() を使わないか?
var e = document.getElementById('E');
if (e) {console.log(e.id);}
と、わざわざ注意して if を書くよりも
[...document.querySelectorAll('#E')].forEach(e => console.log(e.id));
とか
[for (e of document.querySelectorAll('#E')) e].forEach(略);
とか
Array.from(document.querySelectorAll('#E')).forEach(略);
とか
Array.prototype.slice.call(document.querySelectorAll('#E'), 0).forEach(略);
とかの方が簡潔で高抽象で安定するだろ。
さらに、もし
Array.of(document.getElementById('#E')).filter(e => !!e).forEach(略);
なんて書いたら、filter が if と同じことになるわけで、結局、querySelectorAll() にしときゃ良かったとなるわけだ。
なぜ getElementsByTagName() を使わないか?
これも同様。略。
更に、getElementsByTagNameNS() も選択肢にしなきゃならないXHTMLだったらどうすんのって理由もある。
- 576 :デフォルトの名無しさん:2016/10/12(水) 00:01:01.78 ID:bJD9Q0hO.net
- なぜってjQueryがあるのに、わざわざそんな冗長なことを
書く必要が無いからでは?
毎回Array.prototype.slice.callとかアホらしいw
var e = document.getElementById('E');
↓
var $e = $('#E');
[...document.querySelectorAll('#E')].forEach(e => console.log(e.id));
[for (e of document.querySelectorAll('#E')) e].forEach(略);
Array.from(document.querySelectorAll('#E')).forEach(略);
Array.prototype.slice.call(document.querySelectorAll('#E'), 0).forEach(略);
↓
$('#E').each(function() { console.log(e.id) });
- 577 :デフォルトの名無しさん:2016/10/12(水) 00:14:50.40 ID:bJD9Q0hO.net
- 訂正
$('#E').each(function() { console.log(this.id) });
- 578 :デフォルトの名無しさん:2016/10/12(水) 02:21:42.25 ID:7Aphq+NE.net
- javascriptファイルを自分のパソコンでは実行できるけれど
他人のパソコンでは実行できないようにしたいのですが、
そんな事可能でしょうか?
- 579 :デフォルトの名無しさん:2016/10/12(水) 05:13:14.63 ID:jhqwQTsX.net
- >>578
認証性にして自アカウントでログインしなければsctipt要素を出力しなければいい
- 580 :デフォルトの名無しさん:2016/10/12(水) 08:42:49.25 ID:L1c8TvqF.net
- >>575
あなたがお勧めする手法はgetElementsByTagNameでも使えるのでgetElementsByTagNameを使わない理由にはならない
違いを説明するならliveに言及すべきたが、liveは設計思想次第で利便性が逆転する部分なのでどちらか優れているという話でもない
ただし、同一tagNameの要素ノード群を得るなら基本的にはgetElementsByTagNameの方が優れているだろう
https://html5experts.jp/yoshikawa_t/1932/
- 581 :デフォルトの名無しさん:2016/10/12(水) 20:38:12.37 ID:ao75rK/8.net
- >>576
NodeListはイテラブルではないので[...hoge]は使えないし、
Array.fromを使うんなら、forEachを使う必要がない。
やり直し。
- 582 :デフォルトの名無しさん:2016/10/12(水) 22:33:54.70 ID:bJD9Q0hO.net
- >>581
レスする相手間違えてるぞw
俺の答えは「jQuery使えば普通にeachが使えて古いブラウザでも動いて短く書ける」だ
$('#E').each(function() { console.log(e.id) });
- 583 :デフォルトの名無しさん:2016/10/15(土) 05:07:47.47 ID:lTqPwJwr.net
- 間違いなく要素配列を返す$関数を自作した方がいい。
普通の配列はforEachを使ってるのに、要素配列はeachを使わないといけないのは不便でおかしいから。
jQueryのまずいところの一つはライブラリと言いながら重厚でフレームワークのよう。
一つ使い始めたらその世界全てを受け入れるしか無い。それがまた最新の標準から見て古臭いという点。
つまり機能の補足としてeach的なのが使いたいだけならjQueryを持ってくるのはアホだし、
もっと全体を考えるなら、jQueryよりよっぽど標準と親和性の高いまともなフレームワークを使ったほうが良い。
- 584 :デフォルトの名無しさん:2016/10/15(土) 08:49:38.99 ID:WUtYR0l7.net
- >>583
それは自己妄想だろ?w
- 585 :デフォルトの名無しさん:2016/10/15(土) 10:59:50.26 ID:8Bk/hmGM.net
- > jQueryのまずいところの一つはライブラリと言いながら重厚でフレームワークのよう。
ん? どこが?
フレームワークというのは、フレームワークから決まった関数が呼ばれるから
その中身を書くもの。ライブラリは用意された関数を呼び出すもの。
どう見てもライブラリなんだが。DOM操作の代わりでしか無い。
- 586 :デフォルトの名無しさん:2016/10/16(日) 20:58:57.45 ID:LWTFfjDf.net
- JavaScript入門者です。
クロージャで躓いています。
function Counter() {
var n = 0;
return function () {
return ++n;
};
}
var a = Counter();
a(); // 1
a(); // 2
a(); // 3
これでなぜ増えていくのかが分かりません。
a(); を呼ぶ度に、var n = 0; が実行されるはずなので、増えていかないと思うのですが…
なぜ var n = 0; は実行されないのですか?
- 587 :デフォルトの名無しさん:2016/10/16(日) 21:05:46.88 ID:jbRBUkYK.net
- >>586
仕様です
- 588 :デフォルトの名無しさん:2016/10/16(日) 21:07:45.08 ID:cgLhTvvH.net
- >>586
aの中に何が入っているか、書き出してみてごらん
- 589 :デフォルトの名無しさん:2016/10/16(日) 21:21:34.20 ID:LWTFfjDf.net
- >>588
書き出してみるには、どうすればいいのでしょうか?
- 590 :デフォルトの名無しさん:2016/10/16(日) 21:27:41.70 ID:cgLhTvvH.net
- >>589
手で
- 591 :デフォルトの名無しさん:2016/10/16(日) 21:33:14.24 ID:r3gdRhV6.net
- >>586
a()は
function () {
return ++n;
};
でしょ
n = 0は実行されてない
- 592 :デフォルトの名無しさん:2016/10/16(日) 21:34:44.24 ID:LWTFfjDf.net
- >>590
手? こういうことですか?
a() {
var n = 0;
return function () {
return ++n;
};
- 593 :デフォルトの名無しさん:2016/10/16(日) 21:36:43.79 ID:CBxMhCnR.net
- >>586
n = 0は一番最初に起動したときに
初期設定として入力されるだけで、あとはこれは呼び出されません
- 594 :デフォルトの名無しさん:2016/10/16(日) 21:42:13.57 ID:LWTFfjDf.net
- >>591
なぜ返り値だけになるのですか?
var n = 0; も一緒じゃないんですか?
- 595 :デフォルトの名無しさん:2016/10/16(日) 21:42:56.22 ID:UhSHekdN.net
- >>589
console.logかFunction#toString
- 596 :デフォルトの名無しさん:2016/10/16(日) 21:44:43.73 ID:LWTFfjDf.net
- >>593
「一番最初に起動したとき」というのは、
a(); // 1
のときでしょうか?
- 597 :デフォルトの名無しさん:2016/10/16(日) 21:57:12.53 ID:LWTFfjDf.net
- >>595
それはどうやればいいのでしょうか?
参考書を読んでいるだけなので、デバッグの仕方もよく分かりません。
- 598 :デフォルトの名無しさん:2016/10/16(日) 21:57:36.43 ID:cgLhTvvH.net
- function Counter() {
var n = 0;
return n;
}
var a = Counter();
この場合にaの中に何が入っているかわかるのなら、
>>586でaの中に何が入ってるかは
置き換えるだけだろ
- 599 :デフォルトの名無しさん:2016/10/16(日) 21:58:23.73 ID:cgLhTvvH.net
- > なぜ返り値だけになるのですか?
>>598で返り値だけになるのなんて当たり前だよね?
- 600 :デフォルトの名無しさん:2016/10/16(日) 22:04:46.53 ID:LWTFfjDf.net
- >>598
aの中には、
var n = 0;
return n;
が入ってるのではないのですか?
なぜ、n = 0; は省かれるのですか?
- 601 :デフォルトの名無しさん:2016/10/16(日) 22:12:37.29 ID:LWTFfjDf.net
- >>600
間違えました。
aには返り値が入ります。なので、>>598の場合は、aにはnが入って、つまり返り値だけになるのは分かります。
しかし、a(); の場合は、
var n = 0;
return n;
なぜ、こうならないのかが分かりません。
- 602 :デフォルトの名無しさん:2016/10/16(日) 22:21:40.38 ID:22TTvDK/.net
- そうするのが論理的で整合的だってことで話し合ってそういう実装にすることになっただけだよ。
JS以前からある思想を踏襲してるんじゃない?
Pythonかなんか知らんけどお
- 603 :デフォルトの名無しさん:2016/10/16(日) 22:26:43.07 ID:r3gdRhV6.net
- >>594
>なぜ返り値だけになるのですか?
キミがCounter()をそのように作ったから
>var n = 0; も一緒じゃないんですか?
return function() {return n++;}
のどこにn=0がある?
- 604 :デフォルトの名無しさん:2016/10/16(日) 22:32:07.26 ID:LWTFfjDf.net
- あー、分かりました。
オブジェクトのコピーと混同してました。
var a = Counter();
確かにこれで、var n = 0; は入らないですね。返り値を代入しているだけだから。
すなわち、aには返り値の無名関数が入ると。
で、当然、a();には n = 0 は入ってなくて無名関数だけだから、呼ぶ度に加算される。
- 605 :デフォルトの名無しさん:2016/10/16(日) 22:33:40.23 ID:LWTFfjDf.net
- >>603
今になって思えば、まさしくその通りです(笑)
- 606 :デフォルトの名無しさん:2016/10/16(日) 22:35:45.09 ID:LWTFfjDf.net
- >>598
何度もよく読み返してみて自分の誤解に気づきました。
ありがとうございます。
- 607 :デフォルトの名無しさん:2016/10/16(日) 22:57:07.10 ID:cgLhTvvH.net
- あー、うん。そしてconsole.log(a)すれば
aの中身は表示されるよ。
- 608 :デフォルトの名無しさん:2016/10/16(日) 23:27:01.47 ID:LWTFfjDf.net
- >>607
出ました。これが!
function () {
return ++n;
}
よーし、明日からまた頑張るぞ!
- 609 :デフォルトの名無しさん:2016/10/17(月) 09:44:12.70 ID:JGocT82E.net
- >>586
いや、nじゃなくてaを考えろよ
- 610 :デフォルトの名無しさん:2016/10/17(月) 10:02:05.92 ID:5vFd9dbv.net
- >>609
周回遅れってわかってる?
- 611 :デフォルトの名無しさん:2016/10/17(月) 10:35:49.18 ID:SVcsoL0R.net
- ++n;
これに何の意味、活用性があるのか?
小一時間問い詰めたい
- 612 :デフォルトの名無しさん:2016/10/17(月) 11:35:06.10 ID:5vFd9dbv.net
- >>611
キミは周回遅れ以前、出場資格ない
- 613 :デフォルトの名無しさん:2016/10/17(月) 11:44:08.56 ID:EnKnOK0g.net
- >>611
ベーシックしか知らない方ですか?
- 614 :デフォルトの名無しさん:2016/10/17(月) 12:15:27.10 ID:k5b8iytR.net
- >>611
「インクリメントした値を返す意味がある」としか答えようがないな
リファレンスを読み直しておいで
- 615 :デフォルトの名無しさん:2016/10/17(月) 19:20:09.73 ID:wBVSlf54.net
- >>610
馬鹿は口を閉じてろよザッコww
何仕切ってんだこのヴァカがw
- 616 :デフォルトの名無しさん:2016/10/17(月) 19:49:26.05 ID:5vFd9dbv.net
- 仕切ってなんかいない 見下してるだけだ
- 617 :デフォルトの名無しさん:2016/10/17(月) 20:08:48.29 ID:wBVSlf54.net
- >>616
馬鹿は口を閉じてろww
- 618 :デフォルトの名無しさん:2016/10/17(月) 22:12:14.86 ID:MSv6dw6i.net
- >>586
現実的にこんな処理が必要になる状況ってあるの?
- 619 :デフォルトの名無しさん:2016/10/17(月) 22:21:09.76 ID:xorYyxjj.net
- let result = "1\r\n2\r\n".match(/^/mg);
console.log(result);
1の前と、2の前と、最後の\nの前にマッチしてほしいが
1の前と、1つ目の\nの前と、2の前と、2つ目の\nの前と、2つ目の\nの後ろにマッチしてしまう
let result = "1\r\n2\r\n".match(/$/mg);
console.log(result);
1の後ろと、2の後ろと、2つ目の\nの後ろにマッチしてほしいが
1の後ろと、1つ目の\rの後ろ、2の後ろと、2つ目の\rの後ろと、2つ目の\nの後ろにマッチしてしまう
CRLFを含んだ文字列を処理するうまい方法はないものでしょうか?
仕様とあきらめて、LFのみに変換するしかないのでしょうか?
- 620 :デフォルトの名無しさん:2016/10/17(月) 22:29:29.43 ID:xorYyxjj.net
- >>619
訂正
1の前と、2の前と、2つ目の\nの後ろにマッチしてほしいが
補足
もう少しわかりやすく書くと、以下のようになってしまうのを修正したいです
result = "1\r\n2\r\n".replace(/^/mg, "!");
^1^
^2^
^
result = "1\r\n2\r\n".replace(/$/mg, "$");
1$$
2$$
$
- 621 :デフォルトの名無しさん:2016/10/17(月) 22:49:51.36 ID:5vFd9dbv.net
- >>617
お前、口開けてキーボード叩いてるのか?
知恵遅れの習性は謎だらけだ
- 622 :デフォルトの名無しさん:2016/10/17(月) 23:36:27.61 ID:Da5IbuDC.net
- 口閉じろっていうのは喋るな(書き込むな)って意味だろう?
- 623 :デフォルトの名無しさん:2016/10/18(火) 01:13:52.49 ID:sMICGAt6.net
- >>619-620
>1\r\n2\r\n
>1の前と、2の前と、2つ目の\nの後ろに、マッチしてほしい
1の前・2の前は、行頭だろ。
2つ目の\nの後ろは、全文字列の最後
2つに分けて考える。
それか、全文字列の最後は無視して、正規表現とは別に処理にする
- 624 :デフォルトの名無しさん:2016/10/18(火) 01:35:52.87 ID:g5oHSCaR.net
- > 1の前と、2の前と、最後の\nの前にマッチしてほしいが
「最後の\nの前」は「\rと\nの間」
1と2は「\nの後ろ」だったのに最後だけなぜ「\nの前」になるのだろうか?
- 625 :デフォルトの名無しさん:2016/10/18(火) 03:24:17.45 ID:sMICGAt6.net
- >>619
>1の前と、2の前と、最後の\nの前にマッチしてほしい
>>620
で訂正している
>1の前と、2の前と、2つ目の\nの後ろにマッチしてほしい
- 626 :デフォルトの名無しさん:2016/10/18(火) 08:02:45.99 ID:De2Roj8e.net
- >>618
ちょいちょいあるんじゃない?
>>625
/m消して、\n探しちゃいかんの?
- 627 :デフォルトの名無しさん:2016/10/18(火) 09:15:43.00 ID:Vsk5WAhm.net
- >>626
>618
ドンな時?
- 628 :デフォルトの名無しさん:2016/10/18(火) 09:38:02.36 ID:cWVmYcde.net
- >>627
サンプルのコードは単純だけど、たとえばリターンに記述されている
”++n”を三項演算子に書き換えて、上限値に来たらリセットする
ループカウンターにする。
あとは、解析を困難にする為の無駄なコードとして扱う。
サンプルの処理が単純だけど、少し手を加えれば、どの様にでも使える。
- 629 :デフォルトの名無しさん:2016/10/18(火) 11:46:33.12 ID:g5oHSCaR.net
- itaratorのように外部参照不可にする時、かな
- 630 :デフォルトの名無しさん:2016/10/18(火) 11:53:07.40 ID:De2Roj8e.net
- >>627
モジュールの中全体で一意な番号が欲しいとき。
シングルスレッドが保証されてるので、正確にはインクリメント演算子は必要無いけど。
>>628
3項演算子もifも、比較文が必要でミスヒットすると悲しいから、Moduloの方が楽だと思う。
- 631 :628:2016/10/18(火) 12:16:45.66 ID:cWVmYcde.net
- >>630
>モジュールの中全体で一意な番号が欲しいとき。
”一意な番号”と云うと固定のenum宣言が頭に有ったけど
番号をmap管理すれば色々と使えますね。
なるほど。
>3項演算子もifも、比較文が必要でミスヒットすると悲しいから、Moduloの方が楽だと思う。
モジュールもある程度意味を持たせなければいけない考えなモノで
分岐処理も例に上げました。
- 632 :デフォルトの名無しさん:2016/10/18(火) 16:19:34.97 ID:Vk/gbf1F.net
- 誰か気象庁の高解像度レーダー画像取得スクリプト作ってないですか?
低速低容量で使いたいので。
古いの(低解像度)
http://hakobe932.hatenablog.com/entry/20060803/1154575478
http://chameleoncyber.org/?p=335
http://www.kototoka.com/entry/2014/08/11/kishoutyou-nowcast-tenki-yohou-gerira-gouu-yosoku-highresorad/
・・・
標準のやつでもいいかな
- 633 :デフォルトの名無しさん:2016/10/19(水) 17:30:13.76 ID:BuiU+rAj.net
- >>632
自作したら?
ES関係ないのでスレ違い
- 634 :デフォルトの名無しさん:2016/10/26(水) 19:54:01.06 ID:wme53G2u.net
- インデントの仕方がよくわからないです。
var a={b:function (){}};
ってあった場合どんなふうにインデントするのがいいんですかね。
- 635 :デフォルトの名無しさん:2016/10/26(水) 22:19:57.91 ID:RGR5F2yC.net
- 整形でググる
- 636 :デフォルトの名無しさん:2016/10/26(水) 22:49:40.05 ID:wme53G2u.net
- 医療整形のぺーじばかりでしたよ。
- 637 :デフォルトの名無しさん:2016/10/26(水) 22:58:30.79 ID:nn4J9Ce2.net
- >>634
var a = {
b:function (){
alert(“おまえは💩”);
}
};
- 638 :デフォルトの名無しさん:2016/10/26(水) 23:02:07.76 ID:bmG2AFzy.net
- var a = {
b:function (){
}
};
- 639 :デフォルトの名無しさん:2016/10/26(水) 23:23:52.60 ID:Tc/AxpVE.net
- >>634
> ってあった場合どんなふうにインデントするのがいいんですかね。
インデントじゃなくてスペースの入れ方だろ?
採用するコーディングスタイル基準による。
こういうのはちゃんとチェックするツールが有って、今だとeslintっていうのが有名。
eslintではスタイルを選ぶことができるが(さらに独自でカスタマイズもできる)
その中で有名なのが、eslint:recommended と airbnb だろう。
eslint:recommended は比較的緩くてその書き方でも問題ない。
airbnbの場合は、var a = { b: function () {} };
(実際は const a = { b() {} }; を推奨される)
改行入れる場合はこうだな。
var a = {
b: function () {}
,
};
あと必ず { の後で改行入れろとか言ってるやつがいるけど、
最近はそれを採用している規約は少ない気がする。
スペースの有無は決まってることが多いけど、
改行の有無は、長ければ改行を入れるという決まりでいいだろう。
もちろん { で改行した場合はインデントを一つ増やす。
- 640 :デフォルトの名無しさん:2016/10/26(水) 23:24:20.49 ID:Tc/AxpVE.net
- 訂正
改行入れる場合はこうだな。
var a = {
b: function () {},
};
- 641 :デフォルトの名無しさん:2016/10/26(水) 23:32:21.50 ID:RGR5F2yC.net
- >>634
別に何でもええんやで
- 642 :デフォルトの名無しさん:2016/10/26(水) 23:50:35.79 ID:d99+vlL4.net
- >>640
もともとの>>634にはなかった末尾カンマを追加する無能
- 643 :デフォルトの名無しさん:2016/10/27(木) 00:43:35.94 ID:wk+FybyZ.net
- ありがとう、インデントではなくスペースを入れるという考え方か。
著名なソース読んでも、機械的には入れてない気がしてたんだ。
にしても無名関数が読み慣れん。
- 644 :デフォルトの名無しさん:2016/10/27(木) 00:50:40.68 ID:WMnZ+0Yu.net
- 適当にコーディングしていても、ツールで変換すればいい
F12開発者ツールで、JSファイルを整形して開くだけでも、正しく直してくれないか?
- 645 :デフォルトの名無しさん:2016/10/28(金) 12:59:15.72 ID:pmKmGehb.net
- 小数点第一位までしかない1以下の小数を四捨五入して1か0にする方法を教えてください
0.1を0
0.5を1
Math.ceilだと1以上ないとだめでした
- 646 :デフォルトの名無しさん:2016/10/28(金) 13:34:11.62 ID:dnmvvXjV.net
- >>645
Math.ceil()は繰り上げ、四捨五入ならMath.round()
- 647 :デフォルトの名無しさん:2016/10/28(金) 13:47:06.25 ID:OnyL+paE.net
- >>645
そんなめんどくさい事しなくても、0.5足してfloorでいいんじゃないの?
- 648 :デフォルトの名無しさん:2016/10/29(土) 05:43:28.19 ID:gGx5G/bS.net
- 0.5足すとか、気持ちわるいよ。
少しずれたりしないの?
- 649 :デフォルトの名無しさん:2016/10/29(土) 12:07:08.55 ID:yHYEAqhD.net
- >>648
0,5未満なら0,5を足して四捨五入して
0.5以上ならそのまま四捨五入したらいいじゃん
- 650 :デフォルトの名無しさん:2016/10/29(土) 12:17:53.47 ID:cEJXxPE7.net
- >>648
ズレなくて、切りが良い。
- 651 :デフォルトの名無しさん:2016/10/29(土) 14:11:06.80 ID:ypb3Na8r.net
- >>650
ずれたんだけど
alert(0.49999999999999999+0.5); // 1
- 652 :デフォルトの名無しさん:2016/10/29(土) 14:47:07.98 ID:z8URZLOb.net
- >>651
alert(0.49999999999999999); // 0.5
問題外
- 653 :デフォルトの名無しさん:2016/10/29(土) 15:25:53.31 ID:cEJXxPE7.net
- >>651
jsfiddle.netで実行した結果を上げる。
alert(0.49999999999999999+0.5); // 1
alert(0.49+0.5); // 0.99
alert(0.499+0.5); // 0.999
alert(0.4999+0.5); // 0.9999
alert(0.49999+0.5); // 0.9999899999999999
alert(0.499999+0.5); // 0.9999990000000001
この環境の精度では、小数点以下四桁迄なら大丈夫になる。
”小数点第一位までしかない1以下の小数を四捨五入して1か0にする方法を教えてください”
なので、「小数点以下二桁は無い」事になる。
処理手順は、0.5を足して小数部分を捨てれば良い。
- 654 :デフォルトの名無しさん:2016/10/29(土) 18:07:27.02 ID:O/3wAc5r.net
- いや四捨五入する関数があるのに何でわざわざ計算してから切り捨てとかしなきゃいけないん?
- 655 :デフォルトの名無しさん:2016/10/29(土) 18:16:09.69 ID:P+i+TDJ5.net
- >>647
マイナスの時に想定外の動作
- 656 :デフォルトの名無しさん:2016/10/29(土) 18:55:02.99 ID:Lu2qC+Nv.net
- まさに>>654のいう通り
Math.floorを優先する理由はない
- 657 :デフォルトの名無しさん:2016/10/29(土) 19:15:01.21 ID:mMTmoVUB.net
- そもそも四捨五入する理由はない
欲しがりません勝つまでは
我慢しろ
- 658 :デフォルトの名無しさん:2016/10/29(土) 19:27:12.02 ID:Lu2qC+Nv.net
- 四捨五入は質問(>>645)の要件なのでどう考えても必要
- 659 :デフォルトの名無しさん:2016/10/29(土) 19:52:25.39 ID:cEJXxPE7.net
- >>655
コードにする以前の問題。
入力で認めていれば、エラー対応が必要だし
入力で処理に影響する情報を排除すればそのままで済む。
そもそもマイナス扱う処理で四捨五入使うかな?
- 660 :デフォルトの名無しさん:2016/10/29(土) 19:53:28.10 ID:68KH7Ulz.net
- マイナスのときにどっちに寄せたいかじゃないの?
-0.6を四捨五入でどっちにしたいか。
roundで0にできたっけ?
- 661 :デフォルトの名無しさん:2016/10/29(土) 19:57:05.98 ID:eSvC8hNl.net
- > 小数点第一位までしかない1以下の小数を四捨五入して1か0にする方法を教えてください
小数点第一位までしかないんだから
Math.round() で解決だろ
バカ
- 662 :デフォルトの名無しさん:2016/10/29(土) 20:06:28.52 ID:JHScm7pH.net
- ビット & なら Math 演算も不要
( (n) * 2) & 1
n が数でなくとも 0 か 1 になるが
- 663 :デフォルトの名無しさん:2016/10/29(土) 20:37:58.28 ID:mNGjlCUC.net
- ビット演算は32bitなのが問題
速度を稼ぐために制限付きを承知で使うならいいだろうが
- 664 :デフォルトの名無しさん:2016/10/30(日) 01:00:03.39 ID:O7t7tgSU.net
- >>659
負の場合、例えば-20000.4は
> 小数点第一位までしかない1以下の小数
をみたすので、エラーでは無い
> 四捨五入して1か0にするには
四捨五入する桁を可変にすれば良いのかな?
- 665 :デフォルトの名無しさん:2016/10/30(日) 05:11:47.90 ID:hqgegRgF.net
- >>663
ビット演算が速度を稼げるという根拠は?
例えば直近のV8 nightlyのアセンブラで書き直させたBuiltin_MathRoundingOperationよりも速いと言えるの?
結局無駄なf64<->i32キャストが発生するし、実際は速くないよ
速く使おうと思ったらUSE_ASM_Context内や、よっぽど変数の扱いを気を付けて
キャストが全体として起こらないようにしなければならない
- 666 :デフォルトの名無しさん:2016/10/30(日) 05:55:23.89 ID:h7Os3ze3.net
- 変数の扱いを気を付けてキャストが全体として起こらないようにすると
ビット演算は速度を稼げると
>>665は申しております。
- 667 :デフォルトの名無しさん:2016/10/30(日) 10:21:13.83 ID:UrnMpVuD.net
- 小数一桁の数値を丸めるだけのことで何揉めてるの?
- 668 :デフォルトの名無しさん:2016/10/30(日) 10:28:59.39 ID:TSDZ4OFC.net
- 1/10が0.1になるのがキモイです
普通0じゃないですか?
1.0/10なら0.1ですが
- 669 :デフォルトの名無しさん:2016/10/30(日) 11:32:50.61 ID:Z+vVaA9C.net
- >>667
要求仕様に対する、解析能力の確認ですね。
- 670 :デフォルトの名無しさん:2016/10/30(日) 12:21:33.43 ID:dH+/za6/.net
- >>668
https://ja.wikipedia.org/wiki/IEEE_754
- 671 :デフォルトの名無しさん:2016/10/30(日) 12:26:08.71 ID:TSDZ4OFC.net
- >>670
javaの1/10は出来ないの?
切り捨てたり切り上げたり面倒なんだけど
- 672 :デフォルトの名無しさん:2016/10/30(日) 12:39:39.62 ID:dH+/za6/.net
- >>671
出来ない
他言語の常識を持ち込むのがナンセンス
- 673 :デフォルトの名無しさん:2016/10/30(日) 12:42:33.00 ID:TSDZ4OFC.net
- >>672
mjky
- 674 :デフォルトの名無しさん:2016/10/30(日) 16:50:23.32 ID:v2s+0v0Z.net
- >>673
Math.floor(1/10); であなたの目的は達成できるが、数値演算をJavaと同じにするのは無理
- 675 :デフォルトの名無しさん:2016/10/30(日) 17:02:25.81 ID:TSDZ4OFC.net
- >>674
負数もそれでいける?
負数だと絶対値が切り捨てで増えて、切り上げで減るとか聞いたけど
- 676 :デフォルトの名無しさん:2016/10/30(日) 21:42:24.67 ID:v2s+0v0Z.net
- >>675
やってみれば分かることをなぜ聞くかな
試してから聞いてくれ
- 677 :デフォルトの名無しさん:2016/10/31(月) 03:18:16.89 ID:vSxBS38U.net
- JavaScriptでPOJO的なクラスを宣言することの存在意義ってありますでしょうか?
例えば、何かしらで永続化するとして
class Person {
constructor(name, age);
}
const p = new Person('あいうえお', 20);
// WebStorage?で永続化してもとに戻す。ここではJSONで
const json = JSON.stringfy(p);
const p1 = JSON.parse(json);
p1でコード補完なんて効くのか??
JavaScriptでPOJOクラスみたいなものを宣言する存在意義がわかりません。教えて下さい。
- 678 :デフォルトの名無しさん:2016/10/31(月) 04:43:21.97 ID:lofvnrlW.net
- プロトタイプを持たないオブジェクトを作りたいのならクラスを使わない方がいい
JSON出し入れした場合などはプロトタイプが削除されどうせinstanceof等機能しないのだから。
お作法的にはcreatePersonという関数にする
まあクラスでもとんでもなくいけないということはない
それでわかりやすくなるというのならね
- 679 :デフォルトの名無しさん:2016/10/31(月) 05:10:17.86 ID:vSxBS38U.net
- >JSON出し入れした場合などはプロトタイプが削除されどうせinstanceof等機能しないのだから。
ですよね。
>まあクラスでもとんでもなくいけないということはない
>それでわかりやすくなるというのならね
デシアライズした後はあんまわかりやすくならなさそうだったので質問してみした。
ありがとうございます。
- 680 :デフォルトの名無しさん:2016/10/31(月) 06:43:17.85 ID:xWfuY90D.net
- >>677
POJOの意味をわかってないねw
https://ja.wikipedia.org/wiki/Plain_Old_Java_Object より
> POJOの概念は、明らかにPOJOという用語より前から存在する。なぜなら、
> オブジェクトクラスの自然なありさまとは、何ら特別なものではないからである。
> この用語の功績は、何らかのフレームワークを使う利点がその複雑さを補って
> あまりあるかどうかということを開発者に考えさせるという点にある。
> シンプルな設計の方が優れている場合もあるということを思い出させる明確な用語がなくては、
> 複雑なフレームワークが十分な理由のないままシステムアーキテクチャに含まれてしまいやすい。
> POJOによる設計が一般的になるにつれて、大規模フレームワークの機能の一部はPOJOでも
> 実現できることが明らかになってきており、実際に必要な機能領域に対する選択肢は増えている。
> HibernateとSpringがその例である。
意味わかる? POJOっていうのは単なるクラス。フレームワークとかのクラスを継承しない
単なるクラス。それがシンプルで良いという考え方から生まれた用語。
JavaScriptでも同じ。単なるクラスがシンプルで良い。
wikipediaに書いてあるように、特別なものじゃないんだが?
永続化? 補完? そんなものPOJOの意義とは全く関係無い。
- 681 :デフォルトの名無しさん:2016/10/31(月) 07:43:46.18 ID:vSxBS38U.net
- ありがとうございます。確かにPOJOの意味をしっかり理解してなく
ただシンプルぐらいの感覚で使ってたんですが、
ただ聞きたかったのは「POJOの存在意義」ではなく、
永続化するシンプルなクラスの「クラス宣言」をする存在意義をJavaScriptで知りたかったんです。
実際JavaScriptにはクラスというものはなくて
class Person {
constructor(name, age);
はただのシンタックスシュガーらしいのですが、わざわざこんな宣言するメリットあるのかなと
それがが聞きたかったのです。
つまり、直接
var p = { };で作ってもいいんじゃないのかと。
- 682 :デフォルトの名無しさん:2016/10/31(月) 07:47:51.97 ID:vSxBS38U.net
- つか、「存在」ってのつけたのがまずかったですね。
存在ってつけたからPOJOの存在意義って風に。すみまんせん。日本語がおかしかったです。
>永続化するシンプルなクラスの「クラス宣言」をする意義
ただの意義でした。
- 683 :デフォルトの名無しさん:2016/10/31(月) 18:41:59.71 ID:lofvnrlW.net
- 「クラス」って言うのはね、ただのオブジェクト指向をより良く扱うための概念なのよ。
だから、シンタックスシュガーもクソもなくてJSに「クラス」という概念はあるし、
素朴なプロトタイプベースで何もかもこなすのは非効率だから、昔から何らかのクラスシステムが使われてきた。
ただオブジェクト指向のやり方が「クラス」に縛られていないというだけ。
そして標準class構文は1つのより良いクラスシステムを提供するもの。
クラスから継承を取ったら何が残るかと言うと、それは見た目だよ。
createPersonのような関数で済ますのが普通だが、
もし他にそういった物がまだなく、全てクラススタイルで記述されていたらどうだ?
意味はなくとも意義がある。
>>var p = { };で作ってもいいんじゃないのかと
それは全体的な状況による。
例えばclass構文ガチガチのスタイル縛りの設計に無遠慮入れ込む事はできない。
- 684 :デフォルトの名無しさん:2016/10/31(月) 18:44:45.95 ID:pApy3Eby.net
- var p={};←タプル
class Hoge←OOPのクラス
として使ってる
- 685 :デフォルトの名無しさん:2016/10/31(月) 21:26:05.75 ID:xWfuY90D.net
- >>682
JavaScriptに限らず言語の文法っていうのは
可読性を上げるために作られているんだよ。
そして可読性を上げる方法の一つが、コードの中から読まなければ
いけないコードの量を減らすこと。
一定のパターンに対して名前をつけてその名前を覚えてしまうことで
読まなければいけない量を減らすことができる。デザインパターンもその一つだけど文法も同じ。
シンタックスシュガーも読まなければいけなかったコードを
短い言葉で置き換えてそれを覚えてしまうことで可読性を上げることにつながってる。
(とは言えなんでも覚えてしまうのは不可能だから、覚える価値があるものだけに絞るべき。
例えばプロジェクト固有の関数は覚える価値が少ない。言語仕様はどこでも使える知識だから覚える価値がある)
また文法っていうのは、汎用的な命令だたものを専用的な命令に置き換えることが
できるように進化してきている。例えばgotoはあちこちに飛ぶことができるものだが、
これをより専用化してbreakやretrunやthrowなどができた。
これはgotoだけでは色んな意味があるから何のために使っているのかわかりにくいが
専用的なbreakであればループを途中で抜けるんだろうなってことがわかるから。
JavaScriptはclassが無くても作れていたが、だが人間は関数とクラスを区別していた人が多かった。
だからその人間の感覚に近づけることが可読性向上につながるわけ。
可読性の問題なのだから無くてもできるのは当たり前。
var p = { }; これだとただのハッシュなのかクラスなのか、色んな使い方ができるから
これだけ見てもわかりづらいだろ? 使っている箇所を読まなければ分からない。
class Personであればnewして使うんだろうなってことが明確になる。
読まなくて済むわけだよ。これが可読性という話。
- 686 :デフォルトの名無しさん:2016/10/31(月) 21:29:41.12 ID:xWfuY90D.net
- それと可読性というのは全体のコード量にも依存する。
class Personの方がわかりやすいが、全体のコードが数十行程度なら
そこまでする必要はない。
だからコードが短いうちはvar p = {} で書いていても良い。
だけどコードが増えたときには必ずclass Personに変更しなければいけない。
これを放っておけば、犬小屋を作るやり方で一軒家を作るようなことになりかねない。
規模によって適切なやり方は違う。
- 687 :デフォルトの名無しさん:2016/10/31(月) 22:06:57.07 ID:R+gJxrwJ.net
- >>681
var p = { };は当然に
p instanceof Personがfalseになる
- 688 :デフォルトの名無しさん:2016/10/31(月) 22:14:03.50 ID:vSxBS38U.net
- 色々ありがとうございます。いわゆるクラスベースのオブジェクト指向言語については
もうC++,Delphi,Java,C#と10年以上はずっと使ってきました。
で、今回プロトタイプベースと言われる
JavaScriptを使って本格的にプログラミングし始めたのですが、もちろん最初は
クラス宣言してどんどんクラスを量産してたんですが、今回、例えばSettingsクラスみたいな
シンプルなPOJO的で永続化するクラスを作ろうとしたときに、
デシアライズすると元のプロトタイプチェーン?みたいなものが失われるし、
実際動作させた場合、最初のクラス宣言した元のSettingsクラスのインスタンスは最初の1回だけ作成され
後は別のプロトタイプチェーンが失われた別のインスタンス?とでもいうのでしょうかが動くことになるので、
ん?とちょっと手が止まってしまって質問した次第です。
- 689 :デフォルトの名無しさん:2016/10/31(月) 22:22:26.57 ID:vSxBS38U.net
- まぁ、永続化後に元のプロトタイプチェーンが失われてinstanceofが機能しなくなりますが、
もちろん、クラス宣言があった方が、実際それ参照すれば元々どんな構造だったのか分かりやすいとは
もちろん思ってましたが、それを踏まえてJavaScriptの経験豊富な方たちは
どうしてるのかなと思って質問したわけです。
とりあえずはプロトタイプチェーンとか気にする必要ない用実装するので
クラス宣言する方向で行こうと思います。
- 690 :デフォルトの名無しさん:2016/10/31(月) 22:23:55.93 ID:vSxBS38U.net
- Setttingsクラスとかだとクラス宣言ないとどんな設定あるのか把握きついですしね。
- 691 :デフォルトの名無しさん:2016/10/31(月) 22:55:13.38 ID:hNQh9muD.net
- >>688
> デシアライズすると元のプロトタイプチェーン?みたいなものが失われるし、
> 実際動作させた場合、最初のクラス宣言した元のSettingsクラスのインスタンスは最初の1回だけ作成され
> 後は別のプロトタイプチェーンが失われた別のインスタンス?とでもいうのでしょうかが動くことになるので、
考え方がクラスベースで固定されてるのでプロトタイプチェーンをしっかり学ぶべきな気がする。
デシリアライズしたらプロトタイプ上のプロパティが失われるというが、実際にはシリアライズされた時には失われているのでは?
シリアライズが正常動作しているならそれはデシリアライズ処理がおかしいだけ。
最も、プロトタイプ上のプロパティを拾ってないだけな気もするが。
- 692 :デフォルトの名無しさん:2016/10/31(月) 23:08:27.14 ID:xWfuY90D.net
- >>688
永続化が問題なのか?クラスの話関係ないじゃん。
シリアライズっていうけどさ、やってるのはJSON文字列への変換だろ?
前提として関数等はJSON文字列に変換することはできない。
シリアライズされたデータの中に関数定義は含まれないので
関数定義とデータは別々に管理しなければならない。
ここまでは自明だよな?
あとはクラス定義(プロトタイプチェーン含む)をコードで作った上で
その中のデータのみをシリアライズ & デシリアライズする。
これがJSONオブジェクトを使った場合のやり方だろ?
- 693 :デフォルトの名無しさん:2016/10/31(月) 23:09:18.71 ID:xWfuY90D.net
- つーかクラスと永続化の話を切り離して考えろ!
- 694 :デフォルトの名無しさん:2016/10/31(月) 23:20:25.00 ID:xWfuY90D.net
- そもそも永続化の話ということで考えると、
お前それ本当に永続化したいと思ってんのか?って言いたくなるんだが。
何のために永続化が必要なんだ?
永続化なんてしないだろ。永続化しないもののために
わざわざ永続化のためのコードなんて書く意味ねーぞ?
Javaの話でも同じ。永続化しないものにSerializableなんて
やる必要ないぞ。何も考えずに無駄にコピペしてねーか?
- 695 :デフォルトの名無しさん:2016/10/31(月) 23:29:48.72 ID:vSxBS38U.net
- え?
永続化する必要あるから永続化しようとしてるのに・・
- 696 :デフォルトの名無しさん:2016/10/31(月) 23:48:32.48 ID:VoAu6vx9.net
- もう、JavaScriptやめて、Java使えよ
グダグダとくだらねぇこと語って
- 697 :デフォルトの名無しさん:2016/11/01(火) 03:03:10.88 ID:lWEkG1Wt.net
- 「Try Haxe」ヘックスで、試してみ
AltJSのHaxeでは、ソースコードを文字列化して送っても、型が消えない。
大規模開発に向く
- 698 :デフォルトの名無しさん:2016/11/01(火) 08:40:03.75 ID:MkSUKVBa.net
- >>689
分かった分かった。
君とここの住人はクラスに対する考え方が違うから話が噛み合っているようで無かったみたいだ。
要するに、クラスベース言語では通常捨てオブジェクトを作るにもクラスを設計するしか無いので迷わないが、
JSではプレーンオブジェクトを扱いたい場合にどうしたら良いかという話でしょ?
それならわざわざクラスを設計する必要がないというのが一般的な話だ。
オブジェクトの型ごとに空のクラスを置くのは全くもってJS流ではない。
JSでは、オブジェクトはより自由で気軽なもの。
オブジェクトを作りたいというだけなら、リテラルを使う。
幾つも同じタイプのオブジェクトを生成したい場合関数にて生成するが、
そういった場合それらのオブジェクトに共通した操作を定義したい場合も多い。
ここで初めて出てくるのがクラスだ。
つまりクラスとは、オブジェクト生成に必須のものでは勿論無いし、
あくまでオブジェクト指向の上で構造化のプログラミングする中で出て来る
手法・ツールの一つという位置づけでしか無い。
よって話を戻すと、今回の場合Personクラスを作る必要はない。
というかJSを使いに取っては完全にあり得ない、考えたこともない思考なので、混乱が生じた。
作る必要はないというか、そのような事を考えるのが異常なレベル。
- 699 :デフォルトの名無しさん:2016/11/01(火) 10:02:53.69 ID:JdgZau7x.net
- またバベル君が狂い始めてるのか。
- 700 :デフォルトの名無しさん:2016/11/01(火) 21:13:39.04 ID:iw2Pppzi.net
- >>698
お前がJS流とかきめんなや。
クラスを使うかどうかは規模やどう使うか決まる。
言語で決まるわけじゃない。
一般的なクラスとして扱いたいならばクラスにした方がいい。
人間の感覚とコードをできる限り近づけるようにするべきだ。
>>699
呼んだ?w
- 701 :デフォルトの名無しさん:2016/11/01(火) 21:24:11.29 ID:MkSUKVBa.net
- >>700
いや、今話されてるのは言語で決まる類の話だ。
古き良きクラスベース言語では原則実態であるオブジェクトを作るには
雛形であるクラスを設計しなければならない。
しかしプロトタイプベースでもあるJSではその限りではない。
違いがあって当然。
- 702 :デフォルトの名無しさん:2016/11/01(火) 21:34:38.58 ID:iw2Pppzi.net
- >>701
なんで古い前提で話をしてるんだよw
新しいJavaScriptではclass構文が追加された。
当たり前だが気まぐれで追加されたわけじゃない。
これが必要とされたからだ。
であれば、どちらかと言えばclassを使うのが適切な場面では
classを使う方がいい。
プロトタイプベースから”改良"されてclass構文が追加されたんだよ。
- 703 :デフォルトの名無しさん:2016/11/01(火) 21:46:38.71 ID:o4WGeuVh.net
- アロー関数とクラス構文使わない奴は馬鹿と思う
アローのthisそのまま使えるのはチョー便利
長いfunction書かなくていいし
- 704 :デフォルトの名無しさん:2016/11/01(火) 22:07:12.64 ID:x6lATtpW.net
- 誰に向かって言ってるの?
- 705 :デフォルトの名無しさん:2016/11/01(火) 22:10:49.88 ID:iw2Pppzi.net
- 分割代入もなにげに便利だよな。
最初はあまり使わないかなとも思ったけど
関数の引数で分割代入とか目からうろこのテクニック
Promiseと組み合わせて使うとほんと便利
- 706 :デフォルトの名無しさん:2016/11/01(火) 22:20:38.57 ID:MkSUKVBa.net
- >>702
>>どちらかと言えばclassを使うのが適切な場面ではclassを使う方がいい
とは一体何と何を比較して物を言っているの?
もしかしてclass構文と従来の関数+prototypeを比較した話をしているの?
自分はそんな話は全くしていないんだけど。
オブジェクトリテラルは君も使うでしょ?
それが無い言語、シンプルな使い捨てオブジェクトでさえも
そのための使い捨てクラスを作って、newするのが基本な言語もある。
それとJSは違うという話をしてるんだけど。
それとプロトタイプベースから改良されてという意味も分からない。
今まではプロトタイプベースの皮を被った癖のあるクラスシステムしか用意されてなかった
プロトタイプベースはあくまで言語の縁の下でしかなく、
自由に触れられず結局中途半端なクラスシステムに縛られていた。
プロトタイプベースが真に開放され、インスタンスベースなプログラミングが出来るようになったのは
class構文が搭載されたのと同じES2015から。
つまり"改良"はプロトタイプベースからではなく、プロトタイプベースの皮をかぶった中途半端なクラスシステムから。
その壁に穴を開けて下のプロトタイプベースと、上のより良いクラスシステムを見通せるようにしたというのが"改良"だ。
- 707 :デフォルトの名無しさん:2016/11/03(木) 22:59:33.56 ID:cb4Y2Yz9.net
- つうか、jscript.netとかswfのes4とか、十数年前からみんなclassて書いてるよ。
- 708 :デフォルトの名無しさん:2016/11/04(金) 01:26:18.56 ID:LmRSOsos.net
- 誰もclass構文の話はしていない
- 709 :デフォルトの名無しさん:2016/11/04(金) 19:37:01.89 ID:eNDgRS9h.net
- >>708
JavaScriptのスレで話す内容ではない。
- 710 :デフォルトの名無しさん:2016/11/04(金) 21:21:51.64 ID:LmRSOsos.net
- JSのプロトタイプベースに纏わる話は十分このスレの担当範囲だろうよ
- 711 :デフォルトの名無しさん:2016/11/07(月) 21:32:53.88 ID:toRb2seg.net
- だれかCancelTokenについて話さない?
Promise.prototype.cancelよりもどこがどう優れてるのかとか。
- 712 :デフォルトの名無しさん:2016/11/07(月) 22:10:09.38 ID:883psKTk.net
- せめてリンク貼れや
- 713 :デフォルトの名無しさん:2016/11/07(月) 22:35:42.50 ID:toRb2seg.net
- ほい
https://github.com/tc39/proposal-cancelable-promises
- 714 :デフォルトの名無しさん:2016/11/07(月) 22:46:11.29 ID:883psKTk.net
- > The cancel tokens of this proposal are heavily inspired by Kevin Smith's design sketch,
> which are in turn inspired by the .NET task cancelation architecture.
> They are discussed further, in much more detail, in "Cancel Tokens".
inspired by the .NET task cancelation architecture か
なら良さそうだな。
- 715 :デフォルトの名無しさん:2016/11/08(火) 07:34:19.94 ID:Cn2WM8Zt.net
- そう、これが違和感があるのって、taskのcancelationだからなんだよ。
キャンセルの仕組みを外に出した方が応用が効いて便利ってことは分かるけれど、
PromiseってあえてjQueryなどのDefferedと違って内部を外に出さないように設計したよね。
将来的には増やす案があったし、V8なんかは暫く独自機能残してたけど、立ち消えになったよね。
Promiseはあくまでいつか確定される値の抽象だからそんなの付けるべきでないって意見が強かったよね。
逆にそうだからこそ、キャンセルの仕組みを外に出したとも見れるけれど、
プロミスの状態で考えると、解決・棄却・その他は対等なので、
一つだけ操作・利用の仕組みが大きく違うのが違和感ある。
- 716 :デフォルトの名無しさん:2016/11/08(火) 09:02:08.41 ID:le3Xpa4U.net
- > PromiseってあえてjQueryなどのDefferedと違って内部を外に出さないように設計したよね。
というか、もともとキャンセルの仕組みもついでに処理途中の通知のシステムもないでしょ?
非同期処理をネストしないで書くための方法にとどめておくべきだよ。
asyncとawaitというシンタックスシュガーが使えない環境で
これらを使わずに同じように書くための仕組み。
それ以外は「タスク処理」をするためのフレームワークであって
Promiseとは別に作るべき。
> プロミスの状態で考えると、解決・棄却・その他は対等なので、
Promiseがやるのは順次処理(次の行へ進む)とエラー(例外)だけ
そもそもタスクとして考えるのがおかしい。
つーかついこの間たまたまタスク処理的なものを作ったけど
キャンセルとか状態の通知を追加するとPromiseとは呼べないものになったよ。
内部的にはFetch APIとかPromise使ってるんだけど、それを囲うための
タスク処理とそのタスクを管理する仕組みはイベントベースにせざるを得なかった。
Promiseでは無理
- 717 :デフォルトの名無しさん:2016/11/08(火) 09:41:38.26 ID:le3Xpa4U.net
- なんでタスク管理の仕組みがPromiseじゃ無理かって言うと独自のメソッドが必要になるから。
タスクを管理するためのメソッドは色々ある。
タスクの中止やタスクからの情報通知だけじゃなくて
タスクの一時停止や再開、タスク情報の設定
(例えばダウンローダーみたいなのであれば保存するファイル名の変更とか)
Promiseでは情報がPromiseオブジェクトしか返ってこない
例えばFetch APIはPromiseオブジェクトを返すが、これはFetchオブジェクトじゃない。
Fetchオブジェクトに対してcancelとか色々やるならわかるが、
Promiseにcancel生やすなら、Promiseが内部的にFetchオブジェクトのcancelに
処理を渡さなきゃいけない。他のメソッドも同様。
そしてPromiseにキャンセルがあると思いきや、イベント通知。
つまりFetch APIを例にすると進捗状況だね。その進捗状況のイベントハンドラは
Fetchオブジェクトを知ることができるべきだろうけど、じゃあイベントハンドラで
キャンセルしたいときは? 方やPromiseのcancel、方やFetchオブジェクトのcancelじゃわけがわからない。
イベントハンドラの中でPromiseオブジェクトを取得できるのも意味不明。
Promise内部やPromsieの引数にPromiseを生成したオブジェクトを参照できるようにする方法も考えられるけど
Promiseのチェーンは前の戻り値を引き継いでいけるという仕組みだから使い方がおかしい。
時間切れだからここまでにしておくけど、ようするにPromiseでタスク管理をしてはいけないという話
- 718 :デフォルトの名無しさん:2016/11/08(火) 09:46:21.72 ID:le3Xpa4U.net
- で、俺の意見としてはPromiseはこのままでいいから
別でタスク管理の仕組みを作れ。
タスク登録して優先順位とか並列実行とか
めんどくさかったわw
- 719 :デフォルトの名無しさん:2016/11/08(火) 10:58:01.33 ID:Cn2WM8Zt.net
- >>718
いや、君の意見は部分的にはもっともだよ。でも現実そうでないのがなんで?って話。
CancelTokenは、それ自体では完結してない。
あくまでPromiseに「解決」・「棄却」の2つの状態に更に「その他」を加えることが中核。
つまりPromiseが君の言うPromiseじゃなくなることまでは確定されてるのよ。
あくまでそのトリガーを、解決や棄却と同じ形でせずに、
外部からコントロール出来るようにするということでしかない。
だからもっと独立したTaskを作らなかったのが何で?って思うし、
Promiseを継承したCancellablePromiseでもなく、.cancelメソッドを生やすだけでもなく、
どうしてこういう今までのJSの流れと違う、ある意味中途半端で特殊な形にまとめたのかなって疑問。
- 720 :デフォルトの名無しさん:2016/11/08(火) 10:58:54.93 ID:oVtTKQIX.net
- ゴミ
- 721 :デフォルトの名無しさん:2016/11/08(火) 11:04:57.61 ID:Cn2WM8Zt.net
- だから自分が言いたいことを整理すると、
どうしてPromiseとTask管理のキャンセルの仕組みを悪魔合体させたのかということ。
そしてそれが幾らか便利なのは分かるが、
簡単に.cancalメソッドを付けたりするくらいでも多くの場合十分なのではないかということ。
- 722 :デフォルトの名無しさん:2016/11/08(火) 19:41:39.60 ID:L5B8nS+2.net
- classを定義したのですが、そのクラスのメソッド内のコールバックの中で
別のメソッドを呼び出したいのですがどうすればいいでしょうか??
class MyClass {
method1();
method2() {
xhr.onreadystatechange = function() {
method1を呼びたい。けど、this.method1じゃだめ
}
}
}
- 723 :デフォルトの名無しさん:2016/11/08(火) 19:54:23.01 ID:nv3pE1Bb.net
- >>722
var that = this; で別変数に入れておいて、xhr.onreadystatechange = function(){ that.method1(); } みたいに使う。
あるいは xhr.onreadystatechange = () => { this.method1(); } みたいにアロー関数を使う。
- 724 :デフォルトの名無しさん:2016/11/08(火) 20:02:58.32 ID:L5B8nS+2.net
- >var that = this; で別変数に入れておいて、xhr.onreadystatechange = function(){ that.method1(); } みたいに使う。
なるほど。this自体を別の変数に入れておけばよかったんですね・・
自分はvar method1 = this.method1
とメソッド自体を別変数に入れて呼び出してたんですけど、呼び出しは成功するっぽいのですが、
method1の内部でthisをmethod1() { thisほにゃらら }と参照するとthisが未定義になって困ってました。
>あるいは xhr.onreadystatechange = () => { this.method1(); } みたいにアロー関数を使う。
アロー関数は聞いた事ありませんでした。調べてみます。
ありがとうございます。
- 725 :デフォルトの名無しさん:2016/11/08(火) 20:36:55.73 ID:oXq4xn77.net
- ぶっちゃけstatechangeは滅多と使うものではない。
onload使え、もっと言うとfetch使え。
- 726 :デフォルトの名無しさん:2016/11/08(火) 21:22:58.34 ID:L5B8nS+2.net
- 何が標準でどの資料みればいいのかわかりませんが、
onloadは非標準とか書いてあったので、onreadystatechange使ってました。
onload調べてみます。fetchはなんぞ?
- 727 :デフォルトの名無しさん:2016/11/08(火) 21:35:01.22 ID:L5B8nS+2.net
- FetchってXHRと全くの別物か。
- 728 :デフォルトの名無しさん:2016/11/08(火) 22:01:06.66 ID:odPOKtVp.net
- >>722
var that = this; は古い
handleEvent を使えばスマートに書ける
https://developer.mozilla.org/ja/docs/Web/API/EventTarget/addEventListener#The_value_of_this_within_the_handler
- 729 :デフォルトの名無しさん:2016/11/08(火) 22:13:14.01 ID:L5B8nS+2.net
- XHRのエラーハンドリングをまだほとんどしてなかったのですが、
onreadystatechangeだとエラーでstatusが0の時の処理とかあるので、
onloadとonerror使えばすっきりするってことですかね。
ということでonloadとonerrorに書き換えます。
- 730 :デフォルトの名無しさん:2016/11/09(水) 06:22:28.44 ID:br65i1Lj.net
-
板復帰(OK!:Gather .dat file OK:moving DAT 521 -> 520:Get subject.txt OK:Check subject.txt 521 -> 521:Overwrite OK)0.44, 0.42, 0.41
age subject:521 dat:520 rebuild OK!
- 731 :デフォルトの名無しさん:2016/11/09(水) 08:10:50.79 ID:HRJGJTih.net
- >>726
もし冗談でなく本当にonloadが非標準と書かれた情報が存在し、
それを見てしまったのなら今すぐに目ン玉を引っこ抜いて洗ったほうが良い。
それは5年以上前の情報だから、けして参考にしてはいけない。
死ぬぞ。
- 732 :デフォルトの名無しさん:2016/11/09(水) 14:41:13.38 ID:SYPVDf2E.net
- >>726
XHR
https://xhr.spec.whatwg.org/
Fetch
https://fetch.spec.whatwg.org/
- 733 :デフォルトの名無しさん:2016/11/11(金) 11:06:53.92 ID:hqcaajAu.net
- npm install yarnと
linuxのyumとかapt-getでいれるyarn
どっちを使えばいいんですか?
- 734 :デフォルトの名無しさん:2016/11/11(金) 21:39:29.00 ID:ENznHnYU.net
- ndenv、nodenv、nodebrewあたりを使ってるならnpmしか選択肢にならない
- 735 :デフォルトの名無しさん:2016/11/13(日) 16:04:40.73 ID:QhlptiVm.net
- Google翻訳が改善されたというニュースを皆見たと思うが、
これは我々の世界の英語が得意でない者にとって革命だ。
今までは訳すと読むだけで頭が痛くなるような奇妙な日本語が生成されていたが、
今では勉強に集中できる程度に精度が向上している。
- 736 :デフォルトの名無しさん:2016/11/13(日) 16:08:36.94 ID:foNYoSMf.net
- やったぜ
- 737 :デフォルトの名無しさん:2016/11/13(日) 16:32:58.01 ID:jy2VGr1W.net
- Promiseって、処理結果を外に出したり、外から値もらったりするときに
レキシカルバインドした変数を介さないといけなくてダサい
もっとカッチョ良い制御構文無いの?
- 738 :デフォルトの名無しさん:2016/11/13(日) 16:47:42.97 ID:foNYoSMf.net
- >>737
*function
- 739 :デフォルトの名無しさん:2016/11/13(日) 16:52:48.84 ID:TWR6TIrT.net
- >>737
それ使っても、Promiseが見えなくなるだけで、
「レキシカルバインドした変数」は同じだよな?
- 740 :デフォルトの名無しさん:2016/11/13(日) 21:18:16.74 ID:nngvad4K.net
- >>737
try-catch
- 741 :デフォルトの名無しさん:2016/11/13(日) 21:33:19.82 ID:jy2VGr1W.net
- thenのコールバックの戻り値がPromiseだと、新しいPromise作らないで、それを使うのか
配列に複数の値突っ込んでそれを持ち回す事にした
レキシカルバインドした変数に代入する方法では、書き込む方と読み出す方の同期を取るのが厄介
- 742 :デフォルトの名無しさん:2016/11/13(日) 21:51:23.69 ID:TWR6TIrT.net
- > 書き込む方と読み出す方の同期を取るのが厄介
シングルスレッドなのに何を言ってるのだろうか?
- 743 :デフォルトの名無しさん:2016/11/13(日) 23:47:53.73 ID:jy2VGr1W.net
- >>742
Promiseは非同期オブジェクトだから
それと同期してない奴が触ったときに処理が完了してるとは限らないんだな、これが
- 744 :デフォルトの名無しさん:2016/11/14(月) 00:34:40.39 ID:UEPxPzue.net
- >>743
Promiseは非同期処理を同期的に記述できるようにするものなんだが?
同期的に記述してるのに同期をとるのが厄介ってお前理解してないんじゃね?w
- 745 :デフォルトの名無しさん:2016/11/14(月) 00:47:56.56 ID:8ZP1uHGR.net
- >>743
それと同期してない奴というのはPromiseに組み込めないの?
- 746 :デフォルトの名無しさん:2016/11/14(月) 00:49:40.25 ID:y8otP/4p.net
- >>744
処理待ちしてる間に別の処理を差し込めるからバインドしたthisの内容が保証されないって言いたいんじゃね
- 747 :デフォルトの名無しさん:2016/11/14(月) 01:06:58.66 ID:UEPxPzue.net
- >>746
意味わからん。まあ一言言っておくと、保証されないわけがない。
- 748 :デフォルトの名無しさん:2016/11/14(月) 01:22:56.04 ID:y8otP/4p.net
- >>747
オブジェクトにデータ積んで行くイベントをPromiseで繋げて完了待ちしてる合間に、
ユーザの操作で別イベントが発火したら未完了のデータに触れちゃうし書き換えられもするだろ?
- 749 :デフォルトの名無しさん:2016/11/14(月) 01:24:49.33 ID:Gl21TU7L.net
- let g;
(new Promise())
.then()
.then(v => { g = v;}) // <==== (1)
.catch();
console.log(g); // <===== (2)
(2)を実行する時に(1)が完了している事は保証されていない
- 750 :デフォルトの名無しさん:2016/11/14(月) 01:38:40.81 ID:UEPxPzue.net
- >>749
> (2)を実行する時に(1)が完了している事は保証されていない
???
その場合は、(2)を実行する時に(1)が完了していないことが事が保証されてる
Promiseを実行して処理を非同期にした時点で、後回しにされるんだよ。
JavaScriptはシングルスレッドなんだから後回しになった処理が先に終わることはない。
他に割り込まれること無く(2)が実行される。
- 751 :デフォルトの名無しさん:2016/11/14(月) 01:40:04.94 ID:UEPxPzue.net
- >>748
それはPromise関係ないな。レキシカルバインドした変数も関係ないな。
二つのボタンがあったとして、先にクリックしたほうが
先に変数にデータを入れられるってだけの話だ。
- 752 :750:2016/11/14(月) 01:43:25.22 ID:UEPxPzue.net
- あとついでに行っておくとそのコードはバグってて動かない
もう少しまともなサンプルもってこい
- 753 :デフォルトの名無しさん:2016/11/14(月) 01:44:04.31 ID:y8otP/4p.net
- >>751
お前……さては同期の意味を理解してないな?
744 名前:デフォルトの名無しさん [sage] :2016/11/14(月) 00:34:40.39 ID:UEPxPzue
>>743
Promiseは非同期処理を同期的に記述できるようにするものなんだが?
同期的に記述してるのに同期をとるのが厄介ってお前理解してないんじゃね?w
- 754 :デフォルトの名無しさん:2016/11/14(月) 01:46:54.76 ID:UEPxPzue.net
- >>753
理解してないと思ったなら自分の考えを書けよ。
- 755 :デフォルトの名無しさん:2016/11/14(月) 01:52:00.66 ID:wKdLnPZ8.net
- 昔サーバ会社に設定のことで問い合わせしたらさ
「example.jpというドメインは存在しません」
というトンチンカンな返答をもらったことあるんだよ
それに匹敵するくらいの無知さを>>752からは感じた
- 756 :デフォルトの名無しさん:2016/11/14(月) 01:54:42.93 ID:UEPxPzue.net
- >>755
おまえ馬鹿だろw
今ここで間違ったコードを書く理由がないだろ。
>>749はPromiseの使い方を全く分かってない
ということでしかないんだが。
Promiseを使ったコードを書けないから
どういう動きになるのかを自分で確かめることも出来やしない
- 757 :デフォルトの名無しさん:2016/11/14(月) 08:36:58.57 ID:Gl21TU7L.net
- >>750
> その場合は、(2)を実行する時に(1)が完了していないことが事が保証されてる
だから何?
逆と対偶って知ってる?
- 758 :デフォルトの名無しさん:2016/11/14(月) 08:49:19.57 ID:Gl21TU7L.net
- 想像力が欠如しているID:UEPxPzueには理解出来できなかったが、
複数の非同期オブジェクトを協調して動かす場合は同期が不可避って事だよ
シングルスレッド? 何それ、美味いの w
- 759 :デフォルトの名無しさん:2016/11/14(月) 09:12:07.77 ID:UEPxPzue.net
- >>757
どこが逆と待遇なんだよw
保証されてると言ってるだろ。
必ず(2)は(1)よりも先に動くんだよ。
- 760 :デフォルトの名無しさん:2016/11/14(月) 09:20:35.38 ID:Gl21TU7L.net
- このスレは頭の悪い人が多いな
「逆と対偶って知ってる?」今日1日猶予あげるからよく考えてごらん
- 761 :デフォルトの名無しさん:2016/11/14(月) 09:36:25.06 ID:UEPxPzue.net
- こいつ前スレかどこかでsetTimeoutが必要だとか言って暴れてたやつだろw
蓋を開けてみれば、下請けに作らせた(嘘だろうなw)独自実装の
PromiseっぽいPromiseではないもの(つまり別物)の話で
そいつにしか関係ない話だってやつ。
- 762 :デフォルトの名無しさん:2016/11/14(月) 14:11:42.63 ID:SjW+Vo1Y.net
- >>761
俺じゃないよ。
俺は眺めてるw
- 763 :デフォルトの名無しさん:2016/11/14(月) 14:29:20.23 ID:njlrvKgq.net
- スマンが俺もずっと様子を見ていたが>>737の意味が未だに分からないww
最初はプロミスは基本的に1つの値を流していくため、
非同期処理中沢山の変数を共有しようと思ったら外部変数にするしか無いのが
関数型チックに書ききれなくて煩わしいのかと思ったのだが、そうではないのか?
- 764 :デフォルトの名無しさん:2016/11/14(月) 14:30:47.94 ID:njlrvKgq.net
- >>760
頭がいいのなら、馬鹿にも分かるように説明しろ
それができないのならお前の中でのことでしかない
- 765 :デフォルトの名無しさん:2016/11/14(月) 17:08:18.46 ID:SjW+Vo1Y.net
- 正直、RxJSが気持ちよすぎてPromiseがあろうが無かろうがどうでも良くなって来てる。俺は。
仕事では使わんけど。
- 766 :デフォルトの名無しさん:2016/11/14(月) 17:17:23.31 ID:rHIPepSr.net
- >>749
何を当たり前のことをいってるんだ?
非同期処理ならそれが当然だろう
非同期処理を同期処理化したいならawaitを使えばいい
awaitは非同期処理を理解していない初心者が有り難がるが、非同期処理のメリットが全部なくなるきたがるんだよな
- 767 :デフォルトの名無しさん:2016/11/14(月) 17:27:11.76 ID:kL+E10ET.net
- >>749
実行キューに登録された関数が終了するまでは他の関数が起動することはないから絶対2が先に実行される
- 768 :デフォルトの名無しさん:2016/11/14(月) 17:40:50.48 ID:0PpRMTCP.net
- >>760
知ってるけど、だから何?
頭が悪いのはお前の方だわ
- 769 :デフォルトの名無しさん:2016/11/14(月) 17:44:02.19 ID:kL+E10ET.net
- 何だ荒らしか
- 770 :デフォルトの名無しさん:2016/11/14(月) 17:54:39.16 ID:kL+E10ET.net
- 俺もjavaから入ったからjsの非同期はjavaのスレッドと思っていたけど(だから何故どこにも排他処理の事が書いてないか疑問だった)、しっかり説明読んでやっと理解出来た
だから初心者には難しいのは知ってる
でも初心者なら普通黙って聞くよね?
- 771 :デフォルトの名無しさん:2016/11/15(火) 01:46:02.87 ID:b2LTbejx.net
- そう。JavaScriptはシングルスレッドっていうのはそういうこと
非同期処理と非同期は処理がどちらが先に実行されるかは当然わからないが、
非同期処理と同期処理は同期処理が先に実行される。
Promiseを使った時点でそれは非同期処理になる
そしてPromiseは複数の非同期処理を、終わったら次に進むという形に
するものなんだから、どちらが先に実行されるかなんて迷う余地はない。
- 772 :デフォルトの名無しさん:2016/11/15(火) 07:10:15.19 ID:yv04JlgE.net
- XHRがしっかり扱える程度にコールバックや非同期のこと理解してたら
Promiseなんて排他制御が必要になる部類よりずっと簡単ですぐ理解できると思うけどな
- 773 :デフォルトの名無しさん:2016/11/18(金) 17:09:50.58 ID:3VtCl+DR.net
- yarnでeslint-config-airbnbインストールできません
たすけてください
yarn global add eslint-config-airbnb
yarn global v0.17.4
warning No license field
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning Incorrect peer dependency "eslint-plugin-jsx-a11y@^2.2.3".
[4/4] Building fresh packages...
warning eslint-config-airbnb@13.0.0 has no binaries
warning No license field
- 774 :デフォルトの名無しさん:2016/11/18(金) 17:11:58.65 ID:Amerid1m.net
- いやーん
- 775 :デフォルトの名無しさん:2016/11/26(土) 14:28:20.17 ID:gspGiUEm.net
- JavaScriptやjQueryでObjectをコピーする文法には
馴染めないのですが、そんな事はないですか?
- 776 :デフォルトの名無しさん:2016/11/26(土) 18:46:17.35 ID:pi8DulB7.net
- >>775
> Objectをコピーする文法
あなたのその表現が馴染めない
シャローコピー?ディープコピー?
- 777 :デフォルトの名無しさん:2016/11/27(日) 07:31:30.06 ID:T/GZ1EFf.net
- extendとかそう言うやつか。
- 778 :デフォルトの名無しさん:2016/11/27(日) 08:53:16.82 ID:AMkv8rTe.net
- 必要性がないなら馴染む必要もないと思う
- 779 :デフォルトの名無しさん:2016/11/27(日) 13:37:49.51 ID:wcKeEZPe.net
- >>776
単にコピーと言ったときはシャローコピーだろ
ディープならディープと書く
おまえはキスするときいつも相手に訊くのか?
- 780 :デフォルトの名無しさん:2016/11/27(日) 14:09:11.37 ID:AZC2UzDM.net
- そりゃ、キスする前にバードキスとディープキスどっちがいいって?
マナーとして聞くでしょうに。
- 781 :デフォルトの名無しさん:2016/11/27(日) 15:54:55.51 ID:4ldlRD1J.net
- >>775
まずJavaScriptではいかなる方法を使っても
Objectを完全にコピーすることはできない。
だからObjectのコピーではない命令を
あんたが使っているだけにすぎない。
だからあんたがコピーだと思っている文法と
違うわけだ。
- 782 :デフォルトの名無しさん:2016/11/27(日) 17:47:28.40 ID:mveO+vV3.net
- × いかなる方法を使ってもObjectを完全にコピーすることはできない
○ いかなるObjectをも完全にコピーする方法はない
- 783 :デフォルトの名無しさん:2016/11/27(日) 22:08:04.56 ID:q8z3Tnre.net
- >>779
ひょっとすると、参照コピーを指しているのかも切れないので、シャローコピーと決めつけるのは早計
var obj1 ={}, obj2 = obj1;
obj1.a = 1;
console.log(obj2.a); // 1
初心者がはまりやすいのはこっちだと思うね
シャローコピーではまるのは Object.assign をディープコピーだと思って使ってしまうとか?
いずれにしても、質問者の情報待ち
- 784 :デフォルトの名無しさん:2016/11/28(月) 18:13:43.58 ID:E4XiTzNU.net
- Objectのコピーも出来ないとかお前ら初心者過ぎるだろ
- 785 :デフォルトの名無しさん:2016/11/28(月) 18:21:10.70 ID:KKcrSnYF.net
- JSON化して戻せばコピーできる
- 786 :デフォルトの名無しさん:2016/11/28(月) 18:28:48.71 ID:By9NqSkN.net
- 面倒くさいのでjQueryでコピーしてるわ
- 787 :デフォルトの名無しさん:2016/11/30(水) 21:42:56.12 ID:0ROmCizq.net
- 同一ドメインでpostMessageする場合には、
window.open()で開いた親子関係のウインドウ間のみ可能なのでしょうか?
全く他人のウインドウ同士(同一ドメイン内)でも同様にpostMessageできますか?
試したのですが出来ませんでした。
- 788 :デフォルトの名無しさん:2016/12/01(木) 02:35:33.78 ID:86kKAE3r.net
- Broadcast Channelで可能
- 789 :デフォルトの名無しさん:2016/12/01(木) 08:41:27.60 ID:elqpLc9i.net
- >>787
>>775もそうだが、無理に新しい日本語を発明して質問するのは止めてくれ
「全く他人のウインドウ」とは何か具体的に説明すべき
>>775は「Objectをコピーする文法」がオレオレ用語
現存の演算子や制御構文にはObjectをシャローコピー/ディープコピーする機構はない
Object.assignはシャローコピー可能だが、「文法」とはこれいかに?
「文法」が代入演算子を指すなら>>783がしっくりくるが、オブジェクトをコピーが曖昧故に既に複数の解釈が出来てる
知ったかぶりで専門用語を並べ立てるぐらいならコードで説明した方が100倍マシ
- 790 :デフォルトの名無しさん:2016/12/01(木) 13:42:59.96 ID:rRTfenTZ.net
- >>789
アスペは大変だね
- 791 :デフォルトの名無しさん:2016/12/01(木) 14:51:06.99 ID:V0GR9lTF.net
- >>789
> 「全く他人のウインドウ」とは何か具体的に説明すべき
「window.open()で開いた親子関係のウインドウ」ではないウィンドウだと、普通なら理解できると思うが。
- 792 :デフォルトの名無しさん:2016/12/01(木) 14:53:06.08 ID:MTDix4/Z.net
- 親子丼と他人丼の関係なら理解できるがw
- 793 :デフォルトの名無しさん:2016/12/01(木) 18:22:15.66 ID:NluWgpRa.net
- >>791
その要件ならiframe要素からcontentWindowを得ればいいだろう
が、「window.openだけでなく、フレームはダメでこれこれこういうものなんです」と条件を後出しする気がしてならない
- 794 :デフォルトの名無しさん:2016/12/01(木) 18:48:17.00 ID:V0GR9lTF.net
- >>793
どこからiframe要素がでてきたんだ?
質問するのも大変だなという感想。
- 795 :デフォルトの名無しさん:2016/12/01(木) 19:18:46.44 ID:FPpa4B9L.net
- 仕様書ですら何の説明もなく用語や謎のフレーズが出てくることはよくあるな
- 796 :デフォルトの名無しさん:2016/12/01(木) 19:27:18.92 ID:NluWgpRa.net
- >>794
>>791の要件は満たしている
「window.open以外」としか情報がないのにどう解釈するんだ?
- 797 :デフォルトの名無しさん:2016/12/01(木) 21:17:00.50 ID:wkCVFNfo.net
- vue-routerってSPA向けであって、
ただ単にURLを変えずに画面切り替えさせるツールとして使えないの?
やっぱりそれだとCSS切り替えさせるだけがいいのか
- 798 :デフォルトの名無しさん:2016/12/01(木) 21:19:22.43 ID:d1oSzjmi.net
- どう解釈するんだ?ってwindow.open以前に
「全く他人のウインドウ」という要件があるだろ。
iframeの中に入っているwindowなら
「全く他人のウインドウ」でもアクセスできるとでも思ってるのか?
- 799 :デフォルトの名無しさん:2016/12/01(木) 21:20:40.53 ID:d1oSzjmi.net
- >>797
URLを変えずに画面を切り替えたいのなら
単なるAjaxで実現できる
- 800 :デフォルトの名無しさん:2016/12/01(木) 22:10:50.23 ID:qVQfYo/5.net
- >>798
「全く他人のウインドウ」とは?
ウインドウに他人も何もないが、何がどう他人?
イメージで語ってる感があるから具体的な表現に直した方がいいと思うぞ
- 801 :デフォルトの名無しさん:2016/12/01(木) 22:40:32.66 ID:WdTiwpMY.net
- だからね、他人丼と親子丼の関係だって
- 802 :デフォルトの名無しさん:2016/12/02(金) 00:12:25.33 ID:tqwX+tIq.net
- >>800
無能はレスしないで。じゃまだから
- 803 :デフォルトの名無しさん:2016/12/02(金) 01:35:18.54 ID:yix14ac2.net
- 他人っていうのは要は血が繋がっていないってことでしょ。
起源が関係ない同ドメインのタブ間でメッセージングしたいってこと。
- 804 :デフォルトの名無しさん:2016/12/02(金) 02:27:06.31 ID:cAbrvXmy.net
- 定義するなら「どちらからも API を用いて直接的に参照できない Window オブジェクトどうし」くらいかな
- 805 :デフォルトの名無しさん:2016/12/02(金) 08:30:06.20 ID:yix14ac2.net
- いや、それはかなりおかしいだろう
API関係なく「windowオブジェクトを取得できない状態」
- 806 :デフォルトの名無しさん:2016/12/02(金) 11:43:29.21 ID:f/evnOKU.net
- windowオブジェクトの親子関係など存在しない
- 807 :デフォルトの名無しさん:2016/12/02(金) 13:22:55.58 ID:7VByTnYi.net
- >>803
ウインドウに血縁関係を持ち出している時点でいろいろおかしいから
あと、質問者でもないのに憶測でものを語り過ぎ
- 808 :デフォルトの名無しさん:2016/12/02(金) 13:31:01.39 ID:7VByTnYi.net
- >>806
一応、window.parent があるからその関係性を親子と呼称しているんだろうね
そこから更に「血が繋がっている」と称しているっぽいけど、定義の範囲が曖昧すぎて本人だけが知るオレオレ用語と化してる
- 809 :デフォルトの名無しさん:2016/12/02(金) 13:57:08.34 ID:lwDfhxMF.net
- >>808
血が繋がってる云々は、元発言者の発言ではない
あと、お前以外は大体なんのこといってるかわかってる
- 810 :デフォルトの名無しさん:2016/12/02(金) 21:30:01.22 ID:Y0rnRsuL.net
- 「大体」 って、なんか曖昧な感じでちょっと良くないと思うなぁ
- 811 :デフォルトの名無しさん:2016/12/02(金) 22:03:00.38 ID:tqwX+tIq.net
- 全員何のこと言ってるかわかってるって
言っていいと思うよw
- 812 :デフォルトの名無しさん:2016/12/02(金) 22:45:13.80 ID:7KiF/zbr.net
- >>809
だから、質問者以外が憶測でものを語り過ぎといってるんだよ
- 813 :デフォルトの名無しさん:2016/12/03(土) 02:24:14.51 ID:1XG4MZmv.net
- 誰か答えてやれよ
>>787
windowオブジェクトが取れないならpostMessageはたしかできない
そもそも同一ドメイン(厳密にはオリジン)なら目的にもよるがCookieやlocalStorage、iframeなんかも制限ゆるく使える
- 814 :デフォルトの名無しさん:2016/12/03(土) 05:01:50.15 ID:SlvstEBQ.net
- >>813
次レス>>788で答え出てるじゃん。
- 815 :デフォルトの名無しさん:2016/12/03(土) 08:26:46.93 ID:DMuEuKTJ.net
- 質問者は雲隠れしてるし、回答する必要はないのでは
それと、ECMAScriptの質問ではないし
- 816 :デフォルトの名無しさん:2016/12/03(土) 08:52:02.02 ID:kCSsmmVz.net
- >>787
BroadcastChannel 使えばいけるのでは?
https://html.spec.whatwg.org/multipage/comms.html#broadcasting-to-other-browsing-contexts
- 817 :デフォルトの名無しさん:2016/12/04(日) 18:07:27.84 ID:DmbMEkfK.net
- vue.jsのイベントハンドラで、
keyupがCtrlとEnter同時押しの場合メソッド実行、ってどう記述すればいいんでしょう
漁っても見つかりませんでした。
- 818 :デフォルトの名無しさん:2016/12/04(日) 20:20:50.75 ID:+/vGZpO/.net
- >>718
ここの内容を理解してれば書ける
https://jp.vuejs.org/v2/guide/events.html
後はメソッド作ってそこでctrlKeyが押されたか素のjavascriptで書けばおk
- 819 :デフォルトの名無しさん:2016/12/04(日) 20:57:20.70 ID:ObsZQ3a0.net
- >>818
お前がマヌケなことはよくわかったよw
- 820 :デフォルトの名無しさん:2016/12/05(月) 14:41:47.17 ID:py+X8wbm.net
- 関数の引数で、数値変数を参照渡ししたいんだけど どうすればいいかな
- 821 :デフォルトの名無しさん:2016/12/05(月) 15:08:03.07 ID:pSDwKct5.net
- 数値・文字列などは、オブジェクトではなく、primitive なので、
書き込み不可能な値だけが、直接、埋め込まれている
オブジェクトではないので、参照・アドレスなどは存在しない。
値しか存在しない
- 822 :デフォルトの名無しさん:2016/12/05(月) 16:03:02.66 ID:py+X8wbm.net
- >>821
そこをなんとか
裏技とか無いかな
- 823 :デフォルトの名無しさん:2016/12/05(月) 16:33:21.44 ID:8BrnA5VP.net
- 配列変数で渡せないのかな?
ダメなら、jsonみたいに特定の区切り情報を間に挟んだ文字列にするとか。
- 824 :デフォルトの名無しさん:2016/12/05(月) 16:42:52.62 ID:ANvwzotj.net
- 数値を参照渡ししたくなる時点で設計がおかしいから見直した方が良い
どうしても必要なら>>823
- 825 :デフォルトの名無しさん:2016/12/05(月) 17:15:20.81 ID:Oi3oGEbA.net
- >>822
数値に何を求めているかにもよるが、new Number で大体の要件を満たせる。
valueOfを動的に書き換えれば値を書き換え可能。
- 826 :デフォルトの名無しさん:2016/12/05(月) 18:16:52.64 ID:py+X8wbm.net
- >>825
すばらしい
ありがとう
超助かりそう
- 827 :デフォルトの名無しさん:2016/12/05(月) 19:24:44.97 ID:eUg7PlUS.net
- なんか勘違いしてるぞ。
何度も色んなスレで話されてきたことだが、JSに参照渡しはない。
オブジェクトもプリミティブも共有渡し、もとい参照の値渡しだ。
- 828 :デフォルトの名無しさん:2016/12/05(月) 20:05:18.10 ID:8BrnA5VP.net
- Objectのnew・deleteでGCが発生しないって事かな?
作ってみたいモノが有るから、そのうち試してみるか。
- 829 :デフォルトの名無しさん:2016/12/05(月) 21:34:32.19 ID:PskkFbSl.net
- >>827
気づいてないのかもしれないが、
「参照の値渡し」のことを参照渡しって言ってるんだよ。
- 830 :デフォルトの名無しさん:2016/12/06(火) 10:27:08.35 ID:jq2pL0Pu.net
- >>829
色々と不便だからそうやって呼ぶのやめたほうがいいよ
- 831 :デフォルトの名無しさん:2016/12/06(火) 16:50:09.05 ID:VokRQswW.net
- vueの質問はここでいいのか?
- 832 :デフォルトの名無しさん:2016/12/06(火) 18:31:18.40 ID:NfACm7RT.net
- そもそもESの仕様にはGCに関する記述はWMを除いて無く、
値は新しく作られることしか無い
値が複製されることもなくて、新しい名前が付けられる(共有渡し)
- 833 :デフォルトの名無しさん:2016/12/06(火) 18:33:38.21 ID:Vi6knW7G.net
- CGの仕様がないって事は循環参照で死ぬ参照カウントの可能性もあるって事?
- 834 :デフォルトの名無しさん:2016/12/06(火) 23:39:32.25 ID:NfACm7RT.net
- どんな可能性だってあるし、別にGCがなくてもESの仕様は満たすということ
- 835 :デフォルトの名無しさん:2016/12/07(水) 19:31:41.28 ID:Medm3i/E.net
- 普段はPython書いてるんだが、今さらながらjsに手を出してみた
Angular2使ってみたんだがReactの方がスマートに思えてきた
どっちの方がおすすめ?
- 836 :デフォルトの名無しさん:2016/12/07(水) 19:56:56.70 ID:U/KBvqO4.net
- vue.js
- 837 :デフォルトの名無しさん:2016/12/07(水) 20:51:25.77 ID:BFSqyyg7.net
- >>835
どんなアプリ作る予定?React触ったことないがAngular2はSPA作るのには良くできてると感じた。小規模アプリならオーバースペックではあるが。
- 838 :デフォルトの名無しさん:2016/12/07(水) 21:15:03.09 ID:FEJU8uYA.net
- >>835
ウェブサイトを作る・・・HTML + CSS + jQuery
業務系アプリ(エクセルっぽい画面でデータを弄る)を作る・・・Angular
グラフィカルアプリ(いろいろなコンポーネントを作る)を作る・・・React
ゲーム・・・どれでもない
- 839 :デフォルトの名無しさん:2016/12/08(木) 20:38:15.49 ID:DwX5bf/v.net
- なんかbabelとかwebpackとかそういうプロジェクトの準備でパッケージをインストールするだけで50MBも消費するんですが
これをプロジェクトごとにインストールするのって無駄ですね
20プロジェクトで最低1GB消費するとかすごいですね
globalにインストールしても結局package.txtに書いて
- 840 :デフォルトの名無しさん:2016/12/08(木) 22:35:19.76 ID:W+Mdrq4F.net
- >>839
20プロジェクトあったとして1つのプロジェクトで
パッケージのバージョンを上げた時
他のプロジェクトでもバージョンあがってしまっても大丈夫?
っていう質問に、大丈夫に決まってるだろって
答えられるやつだけが、無駄っていう資格があるんだよ
お前にその資格はねーだろ?w
- 841 :デフォルトの名無しさん:2016/12/09(金) 00:03:55.69 ID:GYMahviX.net
- ちょっと違うような。
上がってしまっても大丈夫なようなものでもローカルにみんな持ってるってことでしょ。
ローカルに持つならきちんとバージョン指定すべきだけど、そうじゃないパッケージも多い。
そうじゃないのなら(特定のバージョンでないと絶対に困るのではないのなら)
グローバルを利用するようにすべきで、そうでないのは無駄だろうよ。
- 842 :デフォルトの名無しさん:2016/12/09(金) 00:46:44.84 ID:EsSFcgle.net
- >>839
パッケージの定義だけ残して消せばいいんじゃないの?そのための管理ツールでしょ。必要になったらコマンド叩けば復元できるわけだし。
npmもvagrantも設定ファイルだけ残して全部消してるよ。
- 843 :デフォルトの名無しさん:2016/12/09(金) 12:48:43.40 ID:5/1+VZyq.net
- package.txtにlocalとglobalのパッケージをまぜてかいてるんですけど
npm upするとglobalに置いてるけどlocalにはないパッケージをインストールしてしまいます
localにあるパッケージだけupdateするほうほうないですか?
- 844 :デフォルトの名無しさん:2016/12/09(金) 19:37:55.50 ID:HbVE2MYn.net
- >>118
今更だけど、なにがすごいのよこれの。
jQueryのdata Tableとかfootableとかこういうのいくらでもあるよ
- 845 :デフォルトの名無しさん:2016/12/10(土) 17:06:30.30 ID:qLBvM9gz.net
- vue.jsの環境構築で
「Unexpected token import」というエラーが出てきます。
import App from './App';
下記のように修正するとエラーは出ないのですが、これは何故でしょう?
var Vue = require('vue')
- 846 :デフォルトの名無しさん:2016/12/10(土) 17:08:40.15 ID:CHdeaesN.net
- babelを使ってないから
- 847 :デフォルトの名無しさん:2016/12/10(土) 20:00:47.38 ID:z2dlQ4BE.net
- 下記のようなjavascriptが埋め込まれたhtmlがあります
新しいWebのウインドウを立ち上げるスクリプトです
今は下記のスクリプトが書かれたhtmlファイルをダブルクリックして現れるweb画像をクリックしてウインドウを
立ち上げるのですが、htmlのweb画像をダブルクリックするという過程を省略したいのですが出来ますか
新しいファイルを作ってそれをダブルクリックするといきなり新しいウインドウが立ち上がるようにしたいのです
script
//player popup
function wopen(){
win=window.open(httpwww.xxxplayer.php width=720,height=960)
}
/script
<a href=javascript:wopen()><img src=httpxxxjpxxx.gif class=xxx></a>
注:書き込み不可になるのでhttpwwwとか詰めて書いています
- 848 :デフォルトの名無しさん:2016/12/10(土) 20:02:25.98 ID:z2dlQ4BE.net
- <script></script>
が書き込み不可になるようです
- 849 :デフォルトの名無しさん:2016/12/10(土) 20:06:30.01 ID:YyXkI5ew.net
- JSDocってみんな使ってる?
オブジェクトの構成とかどうやって書けばいいのかわからん
- 850 :デフォルトの名無しさん:2016/12/10(土) 20:12:33.78 ID:jVtN6n+v.net
- >>847
>>1
※DOMはブラウザが提供しているものでありJavaScript(ECMAScript)の範囲外です。
なのでDOMを使ったプログラミングは原則としてこのスレの対象外です。
DOMはwindowオブジェクト(ブラウザのホストオブジェクト)経由で
参照するもので、window自体、window.document、window.Workerなどです。
これに関する話題はWeb制作板の下記のスレに移動してください。
- 851 :デフォルトの名無しさん:2016/12/10(土) 20:14:21.17 ID:jVtN6n+v.net
- >>>849
http://usejsdoc.org/を全部一通り読んでからスレに来てください
- 852 :デフォルトの名無しさん:2016/12/10(土) 22:41:32.19 ID:YyXkI5ew.net
- 一通り読んできたけど、書いてなかったわ
- 853 :デフォルトの名無しさん:2016/12/11(日) 05:02:45.22 ID:ncQazcOe.net
- ECMAScript範囲外の話題は下記スレへ。
■関連スレ
JavaScript の質問用スレッド vol.122
http://echo.2ch.net/test/read.cgi/tech/1472426483/
JavaScript の質問用スレッド vol.131
http://echo.2ch.net/test/read.cgi/hp/1478053599/
JavaScript ライブラリ総合質問所 vol.5
http://echo.2ch.net/test/read.cgi/hp/1465399470/
jQuery 質問スレッド vol.7
http://echo.2ch.net/test/read.cgi/hp/1478055094/
■このスレについて
このスレは「JavaScriptスレ vol.121」を乗っ取っろうとした荒らしがECMAScriptスレに改変して出来ているのでJavaScriptスレと勘違いしている人が多い。
事実上、「ECMAScriptデス 6」の代替スレのようなものだから次スレは「ECMAScriptデス 7」で立てることを推奨。
(「ECMAScriptデス 5」が落ちてから次スレは立てられなかった)
- 854 :デフォルトの名無しさん:2016/12/11(日) 10:43:25.79 ID:nTv8AIQk.net
- >>852
一通り読める奴はこんなところに質問しない
- 855 :デフォルトの名無しさん:2016/12/11(日) 15:29:55.89 ID:8yi/uDpV.net
- >>854
お前みたいな読めない奴には聞いていないんだ
ちょっと引っ込んでてくれないかな
- 856 :デフォルトの名無しさん:2016/12/11(日) 15:42:15.22 ID:E18FGHma.net
- そこで引っ込んだら本当に読めるやつだけになるだろう?w
それじゃ質問なんか誰もしない。
そんなスレはお断りだ
- 857 :デフォルトの名無しさん:2016/12/11(日) 15:56:32.55 ID:jBEhBP0b.net
- >>856
じゃあ回答しろよ
質問もしない、回答もしない、チャチャを入れるだけ
ならこのスレに来る理由もないだろ
ここじゃないどこかで体育座りしててくれ
- 858 :デフォルトの名無しさん:2016/12/11(日) 16:09:03.30 ID:QckH61YD.net
- ドキュメントも読まないバカはお引取り願います
- 859 :デフォルトの名無しさん:2016/12/11(日) 16:16:47.68 ID:E18FGHma.net
- >>857
答えられる質問であれば回答してるが?
お前俺にずっと回答だけしてろっていうのか?
じゃあ今お前がやってることは何だよ?
質問でも回答でもねーだろ
他人に質問か回答だけをすることを要求するのなら
まずお前が、質問か回答だけしろ。
自分で言ったことぐらい守れよ
- 860 :デフォルトの名無しさん:2016/12/11(日) 17:20:50.42 ID:YgjsTwTx.net
- >>849
JSDocってどんな時に使っているの?
自作ならば、自分の設計思想を基に記録残しながらやっていると思うけど。
- 861 :デフォルトの名無しさん:2016/12/11(日) 19:08:01.12 ID:DMLZrwtt.net
- >>849
オブジェクトの構成ってよく分からないけど、
単にオブジェクトごとにリファレンス作りたいなら
@namespaceってタグでオブジェクトごとに分離できる
/** @namespace foo */
var foo = foo || (function() {
// なんかメソッドいろいろ
/**
* @memberOf foo
* // いろんなタグ
*/
}());
/**
* // なんか説明
* @namespace foo.bar
*/
foo.bar = {
// なんかメソッドいろいろ
}
オブジェクト構成図が作りたいみたいな話なら、生成して
できるindex.htmlを自分でいじるしかないんじゃない?
自分はリファレンスとか整備するの好きなんで
自分用のポリフィルライブラリとかにシコシコ書いてる(´・ω・`)
- 862 :デフォルトの名無しさん:2016/12/12(月) 02:26:50.08 ID:l2OsM7Pl.net
- でもドキュメントを読まない普通の子ならOKです。
- 863 :デフォルトの名無しさん:2016/12/12(月) 10:41:43.84 ID:YdV6j9Ia.net
- >>861
/**
* うんこ
* @param {object} hoge
*/
function unko( hoge ){
console.log( hoge.chinko );
}
この関数では引数 hoge の中の chinko を使っています
というのを記述したいんです
- 864 :デフォルトの名無しさん:2016/12/12(月) 14:19:43.44 ID:dCr75+tg.net
- このコードが動くコンパイラを誰か教えてくれませんか
とりあえずbabelでは駄目でした
class MyColor extends Uint8Array{
constructor(r=0, g=0, b=0, a=255){
super(r, g, b, a);
}
get r(){return this[0];}
get g(){return this[1];}
get b(){return this[2];}
get a(){return this[3];}
}
console.log(new MyColor());
- 865 :デフォルトの名無しさん:2016/12/12(月) 14:54:46.93 ID:F302LMas.net
- ためせばいいだろ数個しかないんだから
- 866 :デフォルトの名無しさん:2016/12/12(月) 18:18:55.38 ID:rhAg00cc.net
- >>863
そういった説明は普通に冒頭に書くだけなのでは(うんこと書いている部分)
自分もそういう説明は冒頭、あるいは@paramや@returnsのDescriptionに書いてます。
探して見つからない以上そういうタグもないでしょうし、自分も必要性を感じないです。
- 867 :デフォルトの名無しさん:2016/12/12(月) 18:23:34.65 ID:snQzvIqt.net
- 真面目な文章の中にいきなりうんこって単語出てきて吹いたわ
流石2ch
- 868 :デフォルトの名無しさん:2016/12/12(月) 18:45:58.13 ID:YdV6j9Ia.net
- >>866
ありがとう。
明示的に書けたら、IDEの自動補完の対象にもできて
一石二鳥だよなァ と思っていたので、出来ないなら
ちょっと残念です。 うんこに書くようにしてみます。
- 869 :デフォルトの名無しさん:2016/12/13(火) 19:37:26.53 ID:YAjnVVpg.net
- >>864
クラスの継承、特にビルトインのそれはES5で完全にエミュレートできないんだから仕方がない。
そういうコードを書きたいのならもうピュアESで書くべき。
- 870 :デフォルトの名無しさん:2016/12/13(火) 20:01:34.52 ID:YnqsBGxe.net
- Babelくんが出るぞ。
なんせbabelで万事解決するらしい。
- 871 :デフォルトの名無しさん:2016/12/13(火) 21:07:36.85 ID:iAtvyUgt.net
- つーか釣り針ミエミエだろw
意図を見破られて逃げられてるぞ。
もっとうまくやれ。
- 872 :デフォルトの名無しさん:2016/12/13(火) 21:34:56.41 ID:DVZ4mkli.net
- >>864
TypeScript
- 873 :デフォルトの名無しさん:2016/12/14(水) 12:49:50.71 ID:hfi6HCxW.net
- もはやフロントエンドの仕事じゃなくなってるよな
- 874 :デフォルトの名無しさん:2016/12/14(水) 22:52:54.32 ID:rsGVtDKV.net
- だからここにスレたてたんだよ。
フロントエンドの話がしたいならWeb制作板に言ってくれ
- 875 :デフォルトの名無しさん:2016/12/15(木) 07:06:36.17 ID:BawVZm9b.net
- フロントエンドってウェブ制作に限らんだろ。
Electronしかり、Cordovaしかり、ReactNativeしかり、NativeScriptしかり。
babelがどうのと言う割に石器時代みたいな事言ってるんだな。
- 876 :デフォルトの名無しさん:2016/12/15(木) 12:11:19.86 ID:THL1lN1o.net
- react使ってるサイトは重い
qiitaやfacebookで5タブ開くとHDDカリカリうるさい
それなりのスペックのPCなら恩恵あるんだろうが低スペには重いだけのライブラリ
- 877 :デフォルトの名無しさん:2016/12/15(木) 14:50:50.45 ID:q7exeZSN.net
- メモリ3千円で1本増設して、それを丸々RAMディスクにして
仮想メモリとキャシュ置くようにすれば解決する話だよ。
CPUがPentiumDですとか言うなら別だが。
- 878 :デフォルトの名無しさん:2016/12/15(木) 21:27:18.19 ID:B8ikKJQd.net
- >>875
Electronか、Cordovaか、ReactNativeか、NativeScriptの
話をしてるならよそに行けとか言わんよ。
誰がいつそれらの話をした?
屁理屈言ってるんじゃねーよ
- 879 :デフォルトの名無しさん:2016/12/15(木) 23:18:16.98 ID:BawVZm9b.net
- >>878
誰がいつ、って俺が>>875でしたじゃん。それで流れが変われば良いなと様子見をするのではなく、けなされたと激高するのは無能な働き者だよ。
屁理屈はおまえだよwww
なんせ、Chrome最新版だとネイティブで動きます、って話と、フロントエンドの話は別で、って話、どうやっても矛盾してしまうんだから。
- 880 :デフォルトの名無しさん:2016/12/15(木) 23:33:14.23 ID:B8ikKJQd.net
- >>875以前で誰も話をしてないと認めちゃったw
- 881 :デフォルトの名無しさん:2016/12/16(金) 11:07:25.61 ID:1IWVJy5M.net
- >>875
フロントエンドの技術を使ったデスクトップアプリ作成周辺までフロントエンドに加えるのは違和感がある
- 882 :デフォルトの名無しさん:2016/12/16(金) 18:31:33.63 ID:XkjBV45S.net
- デスクトップアプリねぇ。それこそ単にオフラインWebページ開く
ショートカットの登録案内出すのは簡単だしねぇ。
- 883 :デフォルトの名無しさん:2016/12/16(金) 18:45:25.14 ID:PNCZZxG5.net
- 違和感があるとか言われてもなぁ。
UWPとかに至っては、もはや他の何でもないレベルなんだし。
語義通りフロントエンドだし、フロントエンドの技術を使った、って時点でフロントエンドでは無いんだろうか。
- 884 :デフォルトの名無しさん:2016/12/16(金) 20:14:29.49 ID:XkjBV45S.net
- フロントエンドの人=?フロントエンド
- 885 :デフォルトの名無しさん:2016/12/17(土) 14:03:49.55 ID:D8aTFaeL.net
- <textarea>で改行のみしかされていない、というのを判定するにはどうすればいいでしょう?
.lengthではtrueされてしまいました…
- 886 :デフォルトの名無しさん:2016/12/17(土) 14:04:13.47 ID:D8aTFaeL.net
- スレ間違えました
- 887 :デフォルトの名無しさん:2016/12/17(土) 18:47:52.93 ID:fWgqKda0.net
- >>886
trimしてlength
- 888 :デフォルトの名無しさん:2016/12/17(土) 19:13:34.39 ID:FVEXEISP.net
- >>885-886
http://echo.2ch.net/test/read.cgi/hp/1478053599/313 で再質問したならURLを書きなされ
>887のように既出の回答が出てくる
- 889 :デフォルトの名無しさん:2016/12/18(日) 22:58:54.63 ID:LlbVYW0V.net
- 結局末尾にはセミコロン要るのか要らないのかハッキリしてくれ
- 890 :デフォルトの名無しさん:2016/12/18(日) 23:05:17.59 ID:KKAQOfJY.net
- 夏が来れば セミコロン
- 891 :デフォルトの名無しさん:2016/12/18(日) 23:22:26.84 ID:T3p8SL26.net
- JSではセミコロン要るよーってruby遣いの人に言ったら鼻で笑われたわ
- 892 :デフォルトの名無しさん:2016/12/19(月) 05:12:54.85 ID:axdrvEtR.net
- >>889
付けても付けなくても良いんだから、要るも要らないもハッキリは言えない
ただ好きにしたら良いと思う
俺は付けない
- 893 :デフォルトの名無しさん:2016/12/19(月) 09:20:58.32 ID:5ETaAwZt.net
- minifyしたらどうせ付く
- 894 :デフォルトの名無しさん:2016/12/19(月) 11:15:01.89 ID:mMcAuoO3.net
- okunokentaroとかいう高卒が最近調子に乗って賢そうなツイートしようとしてるけどてんでバカで笑ってしまう
- 895 :デフォルトの名無しさん:2016/12/20(火) 00:12:59.42 ID:2loEwKbt.net
- >>894
お前よりは賢そうだがな
- 896 :デフォルトの名無しさん:2016/12/20(火) 08:30:08.45 ID:SjXx1bqt.net
- あのカンガルーのAA
- 897 :デフォルトの名無しさん:2016/12/20(火) 08:42:09.52 ID:fB91VH02.net
- 発 者 同 . 。_ ____ 争
生 同 .じ . /´ | (ゝ___) い
.し 士 .レ .__/'r-┴<ゝi,,ノ ro、 は、
.な で .ベ ∠ゝ (ゝ.//` ./`| }⌒j
.い し .ル } ⌒ /`ヽ、_∠l,ノ ・ヽ´
.! ! か の / ´..:.} >、、___, .r、 ソ、`\
/ ..:.:.} / |∨ ` ̄
/ ..:.:./ | 丶
/ _、 ..:.:.:.{ .{.:.:. \
{ ..:Y .ゝ、 {.:.:.:.:. ヽ
|、 ..:/ 丿 .:〉 >.- ⌒ . ヽ
/ {. ..:./ ソ ..:./ .( ..:.:.:` ..:}
./..:.:}.:.:./ ヘ、 ..:./ .\ ..:.:r_,ノ、.:.:}
./..:.:/|.:/ {.:./ X.:.:}.} X X
/..:.:/ .}.:| }:/ .Y丶ヽ Y.:Y
. __/.:/ { } 《.〈、 _,,__>.:》丶 Y.:\
/.:.:.:.:.::/ !.:.:ゝ ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ \.: ̄>
- 898 :デフォルトの名無しさん:2016/12/20(火) 10:45:01.39 ID:aCHo98uD.net
- ES6(ES2015)で、new 名前空間.クラス名() みたいなことってできる?
TypeScriptだと「module」使ってできるけど。
- 899 :デフォルトの名無しさん:2016/12/20(火) 10:58:27.96 ID:MFk6FDSJ.net
- それ、名前空間じゃないから
- 900 :デフォルトの名無しさん:2016/12/20(火) 11:06:35.25 ID:aCHo98uD.net
- で、できる? クラス名がぶつからない方法。new ○○.クラス名() みたいなヤツ。
- 901 :デフォルトの名無しさん:2016/12/20(火) 11:12:09.01 ID:wd0c4Sl+.net
- 試せばすぐに分かることをなぜ聞く?
- 902 :デフォルトの名無しさん:2016/12/20(火) 11:25:05.48 ID:aCHo98uD.net
- わからなくて困ってるんで聞いてます。
----------------------------------
C#の場合、namespace ○○ { class MyClass {... で new ○○.MyClass()
Rubyの場合、module ○○ { class MyClass... で ○○.MyClass.new()
Swiftの場合、class ○○ { class MyClass... で ○○.MyClass()
TypeScriptの場合、module ○○ { export class MyClass {... で new ○○.MyClass()
PHPの場合、namespace ○○; class MyClass {... で new ○○\MyClass()
ASの場合、package ○○ { public class MyClass {... で new ○○.MyClass()
Javaの場合、....
----------------------------------
で、ECMAScript 2015 で new ○○.MyClass() ってできますか?
----------------------------------
(問題解決しないレスはいらないヨ)
- 903 :デフォルトの名無しさん:2016/12/20(火) 11:29:07.65 ID:fAq+FOJm.net
- やってみればわかるよ
- 904 :デフォルトの名無しさん:2016/12/20(火) 11:31:05.45 ID:aCHo98uD.net
- >>901
試せない、試し方がわからない=すぐに分からない だから聞いてる。
(いちいち、めんどくせーな)
- 905 :デフォルトの名無しさん:2016/12/20(火) 11:41:15.80 ID:j9/nK/yZ.net
- var Hoge = {
Foo: function() {
}
}
var foo = new Hoge.Foo()
でダメなん?
- 906 :デフォルトの名無しさん:2016/12/20(火) 11:52:46.18 ID:N26jdoYe.net
- >>904
試し方を聞いてないじゃん。
めんどくさいんじゃなくて、質問に横着しないで。
普通にnodeか何かか、chromeでF12でコンソール出せば試せるよ。
俺も
{
name:{
foo:function(){}
}
}
で、やると思う。
- 907 :デフォルトの名無しさん:2016/12/20(火) 12:06:52.55 ID:ZDgkmudg.net
- >>906
そういうのが聞きたいんじゃないと思う。
要するに、ファイル分ければES2015+でもexport/import適切に使うことで可能なことを、
一ファイル中に幾つものモジュールを入れられないかということだろう。
具体的に言うと、自モジュール内ではMyClassでアクセスできて、
それを他モジュール内ではMySpace.MyClassでアクセスできるようにするための、
最もスマートな方法が知りたいのだろう。
結論から言うと、ネイティブexport/importを諦めて
CommonJSチックなのを利用するしか無い。
その時点でES2015+としてはスマートさに欠けるが仕方がない。
もしくは我慢して全てをファイル分けする。
- 908 :デフォルトの名無しさん:2016/12/20(火) 12:19:45.20 ID:pjk6TxQO.net
- >>907
>結論から言うと、ネイティブexport/importを諦めて
>CommonJSチックなのを利用するしか無い。
楽勝に出来るのに自信満々でウソをつくのか?
// HogeHage.js
class hoge {}
class hage {}
const HogeHage = { hoge , hage};
export default HogeHage;
//
import HogeHage from 'HogeHage';
new HogeHage.hage();
- 909 :デフォルトの名無しさん:2016/12/20(火) 12:59:06.22 ID:MoWCkeVm.net
- >>908
なんだこれ・・・
- 910 :デフォルトの名無しさん:2016/12/20(火) 13:33:59.46 ID:020Rzxth.net
- >>908
これいいね。クラス増えてもimportを書き換えなくてすむから。
- 911 :デフォルトの名無しさん:2016/12/20(火) 15:19:02.93 ID:N26jdoYe.net
- >>907
あー、なるほど。
それなら、
namespace = namespace | {};
namespace.foo = function(){
var _this=this;
: //必要な事
return コンストラクタ
}
で良いんじゃ?
- 912 :デフォルトの名無しさん:2016/12/20(火) 15:27:29.72 ID:43NQe2ZK.net
- >>905 >>906
クラスの継承に対応できないと思われる。
- 913 :デフォルトの名無しさん:2016/12/20(火) 15:29:52.21 ID:ZDgkmudg.net
- >>908
多分トランスパイラ使ってできると言ってるんだろうけど、
それは今のトランスパイラがCommonJSチックに変換する(しかない)からであって、
今の所のWhatWGのModule仕様やコンセンサスではそれができることにはなっていない。
- 914 :デフォルトの名無しさん:2016/12/20(火) 15:30:17.27 ID:N26jdoYe.net
- >>912
_thisのprototypeで何とかするくらいか。
たしかにめんどくさいな。
- 915 :デフォルトの名無しさん:2016/12/20(火) 15:31:08.43 ID:pjk6TxQO.net
- var使ってる石器人はレス禁止
混乱しかもたらさない
- 916 :デフォルトの名無しさん:2016/12/20(火) 15:50:26.64 ID:43NQe2ZK.net
- >>908
import、export はそもそもブラウザ(chrome等)で動作しないと思われる。
- 917 :デフォルトの名無しさん:2016/12/20(火) 16:09:43.45 ID:pjk6TxQO.net
- フツーbabel
- 918 :デフォルトの名無しさん:2016/12/20(火) 16:24:37.20 ID:ZDgkmudg.net
- >>916
だからどっちみちES2015でスマートに書ききるのは無理、諦めてという話をしてる。
- 919 :デフォルトの名無しさん:2016/12/20(火) 16:25:20.82 ID:43NQe2ZK.net
- >>917
論外
- 920 :デフォルトの名無しさん:2016/12/20(火) 16:26:35.17 ID:43NQe2ZK.net
- >>918
のような気がしますね
- 921 :デフォルトの名無しさん:2016/12/20(火) 16:46:50.43 ID:j9/nK/yZ.net
- >>918
908の方法でよくない?変換された後がどうなろうが人は名前空間らしきもの使えてるじゃん。
- 922 :デフォルトの名無しさん:2016/12/20(火) 17:25:01.21 ID:L1JD/wQE.net
- ID:43NQe2ZKはバカ過ぎて話になんないな
これとか
>>912
>>>905 >>906
>
>クラスの継承に対応できないと思われる。
- 923 :デフォルトの名無しさん:2016/12/20(火) 19:12:02.94 ID:N26jdoYe.net
- >>917
var使いたくないからbabel使う方がおかしい。
どーせvarに置き換わってるのに。
デカ目の型付き配列から、綺麗に確保したり返したりするレベルで正しくコンパイルされるならわかるけど、
そんなまがい物で満足する気持ちがわからん。
ブラウザ切り捨てるほうがマシ。
- 924 :デフォルトの名無しさん:2016/12/20(火) 19:21:33.14 ID:3IscN3UC.net
- 今時トランスパイラ嫌とか
- 925 :デフォルトの名無しさん:2016/12/20(火) 22:08:14.12 ID:YeETBa/P.net
- >>924
トランスパイラが嫌なんじゃないよ。
トランスパイラはトランスパイラでしかない。
コンパイラなら意味はあるけど。
- 926 :デフォルトの名無しさん:2016/12/20(火) 22:12:52.09 ID:WrmQq8zj.net
- Date.now()して「m月d日 hh;mm」の形式にする綺麗な方法はありませんか?
(hh,mmは1桁でも可)
わざわざgetDate()などして連結するしかないのでしょうか?
- 927 :デフォルトの名無しさん:2016/12/20(火) 22:26:48.29 ID:UE63r4fu.net
- >>926
toISOStringして、replaceで(.*?)-(.*?)-(.*?)T(.*?):(.*?)\..*を、$2月$3日 $4;$5
で良いのでは?
- 928 :デフォルトの名無しさん:2016/12/21(水) 00:05:55.85 ID:xYX0mlO/.net
- 仮にブラウザでネイティブにexport/importがサポートされたとしても
どっちみちbabelなどは必要になるよ。
なぜなら小さなファイルに分割されていたら読み込みが遅くなるだろ?
だから結合処理が必要になるんだよ。
もちろん単純に結合しただけじゃ無理
- 929 :デフォルトの名無しさん:2016/12/21(水) 00:10:17.85 ID:RFNpxL9S.net
- てかネイティブ対応ブラウザが増えてもIEとかいう糞を使う奴がいなくならない限りサポート切れないから十数年先の話になるでしょ
- 930 :デフォルトの名無しさん:2016/12/21(水) 00:11:10.15 ID:tskPgAul.net
- HTTP/2 が普及したら分割とか関係なくなるかな
- 931 :デフォルトの名無しさん:2016/12/21(水) 01:30:04.07 ID:XipnktJg.net
- >>930
SystemJSやばい遅いよね。Ang2は先に行きすぎ。
- 932 :デフォルトの名無しさん:2016/12/21(水) 08:25:11.38 ID:yT8Lkx8e.net
- >>928
広げるなよw
babelは要らん。それならwebpackで充分。
- 933 :デフォルトの名無しさん:2016/12/21(水) 09:19:50.01 ID:MCySocIX.net
- >>926
ローカル表示にしたいのなら、決め打たずnavigator.languagesを見ながらIntlAPIを使ったほうが良いと思う。
- 934 :デフォルトの名無しさん:2016/12/21(水) 12:33:15.81 ID:X1dbNMbH.net
- >>895
高卒沸いたwww
- 935 :デフォルトの名無しさん:2016/12/21(水) 21:06:14.85 ID:xYX0mlO/.net
- >>929
せやね。早いところIEからEdgeに乗り換えてほしいね。
Microsoft Edgeに。
そうすればMicrosoft Edgeはimportサポートしてるから、
あとはFirefoxやChromeの対応を待つだけで良くなる。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/import
- 936 :デフォルトの名無しさん:2016/12/21(水) 21:40:39.60 ID:HG47hG4n.net
- そろそろ、次スレだな
「ECMAScript デス 6」で立てるとして「ECMAScript デス 4」のテンプレを元にリンク修正してみた
https://fiddle.jshell.net/65tysya6/1/show/
修正事項があれば意見よろしく
- 937 :デフォルトの名無しさん:2016/12/21(水) 21:57:51.64 ID:xYX0mlO/.net
- うざい。てめーがしきるな
- 938 :デフォルトの名無しさん:2016/12/22(木) 00:03:42.02 ID:N3v3bTKO.net
- >>6が貼ってくれたように前スレに倣うテンプレだからいいんでないか
反対意見は具体的に書くべきだな
- 939 :デフォルトの名無しさん:2016/12/22(木) 02:27:59.81 ID:N3v3bTKO.net
- 結局、ID:xYX0mlO/ が独断専行で次スレを立ててた
仕切るな、という奴が仕切ってる
+ JavaScript(ECMAScript)質問用スレッド vol.123 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1482325013/
- 940 :デフォルトの名無しさん:2016/12/22(木) 14:53:43.08 ID:NvKCe79q.net
- >>936
関連スレのURLに「-100」や「l50」が残ってるね
- 941 :デフォルトの名無しさん:2016/12/22(木) 18:30:07.32 ID:0dTZqklr.net
- nodejs 7.3キタ━━━━(゚∀゚)━━━━!!
- 942 :デフォルトの名無しさん:2016/12/22(木) 23:14:31.28 ID:zr2stMzt.net
- >>940
修正した
https://fiddle.jshell.net/65tysya6/2/show/
- 943 :デフォルトの名無しさん:2016/12/23(金) 08:46:25.82 ID:hLVMkx+6.net
- ECMAスレの頃にはそもそも次スレを立てる人も居なかったし、
建てても落ちてたのに今や勝手に仕切るなと言われるほどになったんだなぁ(しみじみ)
- 944 :デフォルトの名無しさん:2016/12/23(金) 12:04:43.09 ID:L8VrAqOy.net
- 勝手に仕切るなと言われることが、成長した証拠だとか思ってるのか?
- 945 :デフォルトの名無しさん:2016/12/23(金) 12:15:47.82 ID:UAK6AX6k.net
- >>937
で、お前誰だよ
- 946 :デフォルトの名無しさん:2016/12/30(金) 21:00:20.93 ID:x814SSV+.net
- 2016年のプログラミングのトレンドを振り返る
最新のJavaScriptが急成長する
JavaScript/ECMAScript version 6(通常ECMAScript 2015あるいはES6)は2015年の6月にリリースされた。
私は2016年にはこの言語が広く採用され、デベロッパーが新しいバージョンに慣れるにしたがって新たサポートされた機能が
ウェブに普及するだろうと予測した。この予測は概ね当たった。
主要なブラウザすべてとNode.js(オープンソースのJavaScriptランタイム)の90%はES6準拠となった。
この頃では、ES6は実験的、実験的な小さなシステムや内部利用に限られるツールに埋め込まれているだけでなく、
さまざまな製品や主要顧客が直接触れるようなインターフェイスにも採用されている。
http://jp.techcrunch.com/2016/12/30/201612262016s-top-programming-trends/
- 947 :デフォルトの名無しさん:2016/12/30(金) 22:06:19.21 ID:Su1lYfd3.net
- 見出しからして大間違い。一年かけて徐々に普及してきたのは全然急でもないし、それは成長ではない。
ES2016を見ても分かる通り、2016年はJavaScriptにとって休憩・成熟の年。
- 948 :デフォルトの名無しさん:2016/12/31(土) 15:41:57.11 ID:nUjD4DbZ.net
- JavaScript死亡www
「WebAssembly」がITの未来に変革もたらす|Google、Apple、Microsoft、Mozillaが共同で開発した新概念
「WebAssembly」がWebブラウザに変革をもたらします。
Webブラウザは、もともとただテキストを表示するだけのところから始まりました。その出発点から、現在ではコミュニケーションやゲームまで幅広い表現を可能にしています。
そして今回、「Webブラウザ」に新しい概念が加わわることになりました。
それをもたらしたのが、ブラウザに関わりの深い世界規模の4社「Google」「Apple」「Microsoft」「Mozilla」が共同開発した、Webのためのバイナリーフォーマット「WebAssembly」です。
今回はその「WebAssembly」について、「スゴイところって何?」「何が起きるの?」をご紹介していきます。
WebAssemblyは「JS不要。コンパイラ言語だけで動的アプリが作れる」「どの言語でもWebブラウザ上にアプリを作ることができる」
WebAssemblyによってもたらされるスゴイところは次の4つ。
コンパイラ言語だけで、Webブラウザ上に動的なアプリが作れる
ほぼ機械言語にコンパイルされるからヌルヌル動く
OSを一切気にする必要がなくなる。気にするのはブラウザのみ
C,C 以外の言語でもWebAssemblyにコンパイルされる「クロスコンパイラ」の可能性が高まった
これまでWebブラウザで、ユーザからの入力情報を元に、動的なアプリケーションを実現するためには「JavaScript」が必須でした。
「インタプリター言語」であるJavaScriptは、その都度ソースコードを機械語に翻訳する必要があるため、予め機械語に近くコンパイルされる「コンパイラ言語」と比較すると動作が遅いという特徴があります(※)。
もしコンパイル後の機械語に近い形で、Webブラウザ上でコードが実行されたら。
JavaScript以上にヌルヌルに動き、しかもJavaScriptを気にする必要がなくなります。
それを実現したのがこの「WebAssembly」です。
https://mayonez.jp/1690
- 949 :デフォルトの名無しさん:2016/12/31(土) 15:45:11.94 ID:2NsOdIiQ.net
- >>948
それもう何年も実現できてないやつじゃないか?
- 950 :デフォルトの名無しさん:2016/12/31(土) 15:52:57.77 ID:fr6r+Jsz.net
- >>948
あちこちに宣伝しなくてもええんやで
- 951 :デフォルトの名無しさん:2016/12/31(土) 15:58:37.49 ID:2NsOdIiQ.net
- 宣伝しないと普及しないんやで?
- 952 :デフォルトの名無しさん:2016/12/31(土) 16:13:59.22 ID:z+aCJeF2.net
- wasmは宣伝してどうってもんじゃなくね
ESの動向次第だけどJSキラーどころか実行エンジンに組み込まれるのが既定路線っしょ
- 953 :デフォルトの名無しさん:2016/12/31(土) 17:06:25.32 ID:2NsOdIiQ.net
- 言語が動くとして問題はライブラリなんだけどね。
新しいGUIツールキットを作るのか、
それともReactなどを使うのか
- 954 :デフォルトの名無しさん:2017/01/01(日) 15:46:08.23 ID:fjo8Lp7F.net
- ぼくのパソコンはねWebGLに対応してないからWebAssemblyなんて宣伝されても動かせないから困るんですよ
- 955 :デフォルトの名無しさん:2017/01/02(月) 08:37:47.50 ID:GJGsj00t.net
- WebAssemblyはこの辺の記事が読みやすかった
https://codezine.jp/article/detail/9072
http://qiita.com/kenju/items/3ec95aebd30bc95b862c
特にasm.jsの中の人へのインタビュー記事がいい感じ
JavaScriptを置き換えるものではなく、asm.jsの後継な印象
- 956 :デフォルトの名無しさん:2017/01/02(月) 14:28:53.67 ID:cJ1XZtMT.net
- 次スレ
ECMAScript デス 6
http://echo.2ch.net/test/read.cgi/tech/1483332914/
- 957 :デフォルトの名無しさん:2017/01/04(水) 15:04:29.19 ID:umsjl3YZ.net
- 質問です。
記事の注目度を量るものが作りたいのです。
idのふってある記事があり、スクロールをしてその記事の所で一定時間以上留まった場合に
データベースに+1クリックされた場合に+10といったような感じで記事の注目度を集計したいのですが、
JavaScriptで作れるでしょうか?
- 958 :デフォルトの名無しさん:2017/01/04(水) 15:23:43.08 ID:NPU+n2sm.net
- 作れるよ
- 959 :デフォルトの名無しさん:2017/01/04(水) 16:52:21.31 ID:mqV6TFzJ.net
- >>958
どうやったらいいのか書いてやれよ、タコ
- 960 :デフォルトの名無しさん:2017/01/04(水) 17:12:55.51 ID:umsjl3YZ.net
- ありがとうございます。
作成可能ということがわかれば大丈夫です。
お手数をおかけしましました。
- 961 :デフォルトの名無しさん:2017/01/05(木) 06:23:52.60 ID:sTWjNqOn.net
- 範囲に入ったら、じゃつまんないから、
ディープラーニングを使って、雑多な挙動から人の見てるポイントを当てられるようにしたいね。
- 962 :デフォルトの名無しさん:2017/01/13(金) 12:58:49.41 ID:/Ly9HZcx.net
- for inでループするとき、unfiltered for in という警告がIDEで出るけど、なんでダメなん?
for( v in list ){
v.unko();
}
こうすると警告でないけど、これちょっと過保護過ぎない?
for( v in list ){
if( list.hasOwnProperty(v) ){
v.unko();
}
}
- 963 :デフォルトの名無しさん:2017/01/13(金) 14:12:40.46 ID:zjO4Avuj.net
- >>962
javascript for inでググれ
- 964 :デフォルトの名無しさん:2017/01/13(金) 18:31:36.66 ID:/Ly9HZcx.net
- >>963
ググったけど、納得はできん
- 965 :デフォルトの名無しさん:2017/01/13(金) 22:33:38.93 ID:9L2JHio8.net
- >>962
> なんでダメなん?
JSLintを使ってるのがだめ。今はESLintを使うのが普通。
使わないやつはもってのほか
- 966 :デフォルトの名無しさん:2017/01/14(土) 01:36:36.33 ID:8r+htSmN.net
- >>962
それは配列もしくはイテレータか?Yesならfor-ofを使え
それはプロトタイプを辿ることを期待しているか?Yesならそのままfor-inを使え、NoならObject.keysを使え
- 967 :デフォルトの名無しさん:2017/01/14(土) 05:07:21.21 ID:QKiPrSuQ.net
- ESLintなんて絶対に要らん
それならTSで書く
- 968 :デフォルトの名無しさん:2017/01/14(土) 07:06:34.71 ID:iwTuat6d.net
- for-ofって?
- 969 :デフォルトの名無しさん:2017/01/14(土) 10:39:47.10 ID:jF4idfYe.net
- エラーの捕捉においてTypeScriptがとても強力であれば、果たしてESLintやJSHintなどのツールは必要でしょうか?
答えは「Yes」です。
例えば、エラーのチェックに加え、ESLintはベストプラクティスや文体といった面でのコードフォーマットのチェックを行えます。
残念ながらESLintとの互換性はTypeScript ESLint Parserプロジェクトに依存しており、このプロジェクトはまだ実験段階です。
http://postd.cc/i-was-wrong-about-typescript-here-is-why/
- 970 :デフォルトの名無しさん:2017/01/15(日) 00:50:13.29 ID:yEIrJurs.net
- A()直下のthis.nを汚さないようにA()の中に関数を定義したいんですけど
こう書いたら汚れてしまいます何でですか?
function A() {
this.n = 1;
console.log('A', this.n);
function B() {
this.n = 2;
console.log('B', this.n);
}
B();
console.log('A', this.n);
const C = () => {
this.n = 3;
console.log('C', this.n);
};
C();
console.log('A', this.n);
}
A();
- 971 :デフォルトの名無しさん:2017/01/15(日) 01:22:24.01 ID:H2QAGxh+.net
- その呼び方じゃどのthisも同じglobalを指すから
- 972 :デフォルトの名無しさん:2017/01/15(日) 07:12:01.12 ID:xznLPQ3K.net
- >>970
new演算子が使われていないから
thisの使い方を勉強し直すべき
- 973 :デフォルトの名無しさん:2017/01/18(水) 22:47:50.54 ID:eABpypnl.net
- 勉強したてなのですが、
実際にウェブページを開いてるChromeから
ChromeのコンソールよりJSの実行はできたのですが
setIntervalのような処理をしたい場合はどうしら良いのでしょうか?
- 974 :973:2017/01/18(水) 22:57:14.78 ID:eABpypnl.net
- 説明不足でした。
setIntervalをコンソールに打って実行すると
一度は処理をしてくれるのですが、それ以降は処理をしてくれません。
ChromeでsetIntervalの機能を実現するためには、どうしたらよろしいでしょうか。
ここまで書いておいてなんですが、これはChromeの板とかで聞いた方がよろしいでしょうか。
- 975 :デフォルトの名無しさん:2017/01/18(水) 23:12:38.51 ID:Vst0K44u.net
- Chromeのコンソールはデバッグのために使うもので
そこを使って自分がしたいなにかを実現するところではありません。
- 976 :デフォルトの名無しさん:2017/01/18(水) 23:21:41.38 ID:eABpypnl.net
- すみません解決しました。
- 977 :デフォルトの名無しさん:2017/01/19(木) 14:41:41.47 ID:+apAMdxY.net
- thisは極力使わない。
使うときは誤解の余地のない定型的な使い方のみとする。
- 978 :デフォルトの名無しさん:2017/01/19(木) 22:22:16.11 ID:owrdnXbA.net
- thisにかぎらず、どんなコードも
誤解の余地のない書き方をするのが普通
- 979 :デフォルトの名無しさん:2017/01/20(金) 17:51:47.00 ID:wJtT45vW.net
- thisは危険だからな
- 980 :デフォルトの名無しさん:2017/01/20(金) 18:07:31.87 ID:GCbU9UQF.net
- 危険な物ほど人間は引かれるんだよ
- 981 :デフォルトの名無しさん:2017/01/20(金) 18:41:31.61 ID:ay+DjVWx.net
- thisに限らず、使いこなせないものは使わない
適切に学習すればどんなものでも使えるものだ
- 982 :デフォルトの名無しさん:2017/01/21(土) 13:38:14.94 ID:s6Ci3q5W.net
- 初心者なんですが質問良いでしょうか?
・index.html
<!DOCTYPE>
<html>
<head>
<title>ゲーム</title>
<script src="main.js"></script>
<body onload="init();">
<canvas id="canvas" width="1000 height="1000"></canvas>
</body>
</html>
・main.js
function init()
{
var canvas = document.getElementById("canvas");
if (canvas.getContext)
{
ctx = canvas.getContext('2d');
setInterval(draw, 33);
}
}
function draw()
{
ctx.fillRect(0, 0, 1000, 600);
}
これだけのすごい短いコードなんですがctx.fillRect(0, 0, 1000, 600);
の600のところを変化させても,200を超えたあたりから変化しないみたいです
何が原因か分かる方いたら教えてください..
- 983 :デフォルトの名無しさん:2017/01/21(土) 14:13:04.39 ID:pcFLx4Ty.net
- 取り敢えずwidth="1000 のダブルクォーテーションを閉じてから
続きの質問をWeb制作板でどうぞ
http://echo.2ch.net/test/read.cgi/hp/1478053599/
- 984 :デフォルトの名無しさん:2017/01/21(土) 14:27:04.14 ID:s6Ci3q5W.net
- >>983
ありがとうございます,正常に動くようになりました
今度からはそちらで質問させてもらいます
- 985 :デフォルトの名無しさん:2017/01/21(土) 14:27:04.70 ID:s6Ci3q5W.net
- >>983
ありがとうございます,正常に動くようになりました
今度からはそちらで質問させてもらいます
- 986 :デフォルトの名無しさん:2017/01/28(土) 19:46:33.43 ID:Zf418MWM.net
- http://echo.2ch.net/test/read.cgi/hp/1481633052/570- より。
> 570 : Name_Not_Found2017/01/27(金) 16:24:15.01 ID:???
> eval()について詳しくなんでもいいから
ES3 http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/15-1_Global_Object.html#section-15.1.2.1
ES7 http://www.ecma-international.org/ecma-262/7.0/#sec-eval-x
ES LS https://tc39.github.io/ecma262/#sec-eval-x
MDN https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/eval
- 987 :デフォルトの名無しさん:2017/01/29(日) 15:12:16.35 ID:CHlx9RpS.net
- JavaScript ベスト・オブ・ザ・イヤー 2016
https://risingstars2016.js.org/ja/
JavaScriptコミュニティは日々進化しています。今日のトレンドも数か月後には陳腐化しているなんてことは日常茶飯事です。
2016年は終わってしまいましたが、何か重要なことを見逃したのではないかと感じているそこのあなた! 2016年の主要なトレンドをおさらいして、そんな不安を払拭しちゃいましょう。
過去12か月に獲得された Github のスター数を比較して、2016年に支持を集めたプロジェクトを数値に基づいて評価していきます。
2015年はなんといっても React でした。そして、Flux 実装を席巻したのは Redux でしたね。 2016年、JavaScript の人気プロジェクトはどのようなものだったのでしょうか?
- 988 :デフォルトの名無しさん:2017/01/29(日) 15:34:26.52 ID:0VLffaoK.net
- > 過去12か月に獲得された Github のスター数を比較して、
Github のスターはブックマークにすぎないんだから
人気プロジェクトの指標にはならん
そこで紹介されている下のほうがまともなデータだな
http://stateofjs.com/2016/introduction/
例えば、フロントエンドフレームワーク
http://stateofjs.com/2016/frontend/
Vueなんて全く使われてなくて
ReactがVueの5倍、Angularが3倍使われてる
テスト
http://stateofjs.com/2016/testing/
当然のごとくMochaやJasmineが一番使われてる。
Ava?Jest?なにそれw
- 989 :デフォルトの名無しさん:2017/01/31(火) 19:22:55.55 ID:n4DQf77M.net
- テストはChromiumやV8のをパクってくるのがベスト、間違いない
- 990 :デフォルトの名無しさん:2017/02/03(金) 12:39:42.93 ID:WkcYvCVV.net
- ドロップダウンリストに"","A","B","C"の項目があり、ラジオボタン1,2,3があり、
3を選択し、かつ次に2を選択したときだけドロップダウンリストの
項目を強制的に""にするスクリプトを組みたいのですが、どうすればいいでしょうか?
- 991 :デフォルトの名無しさん:2017/02/03(金) 13:36:03.89 ID:GW4ZA3Nl.net
- 念じる
- 992 :デフォルトの名無しさん:2017/02/03(金) 16:02:26.99 ID:DKCwNfD0.net
- >>990
質問する場所をweb制作板と間違えてるよ
- 993 :デフォルトの名無しさん:2017/02/03(金) 17:50:24.30 ID:OZdxyk8U.net
- ecmascriptってエクマスクリプトって読むの?
- 994 :デフォルトの名無しさん:2017/02/03(金) 19:55:50.66 ID:CYSEj/nA.net
- はい
- 995 :デフォルトの名無しさん:2017/02/03(金) 21:05:28.79 ID:c/3M2MXW.net
- 次スレ
+ JavaScript(ECMAScript)質問用スレッド vol.123 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1482325013/
- 996 :デフォルトの名無しさん:2017/02/03(金) 21:05:56.21 ID:c/3M2MXW.net
- うめ
- 997 :デフォルトの名無しさん:2017/02/03(金) 21:06:12.15 ID:c/3M2MXW.net
- うめぇ
- 998 :デフォルトの名無しさん:2017/02/03(金) 21:06:32.76 ID:c/3M2MXW.net
- うめぇ〜
- 999 :デフォルトの名無しさん:2017/02/03(金) 21:06:52.71 ID:c/3M2MXW.net
- うめぇ〜ぞ
- 1000 :デフォルトの名無しさん:2017/02/03(金) 21:07:19.52 ID:c/3M2MXW.net
- だまされるな。こっちが本当の次スレだ
+ JavaScript(ECMAScript)質問用スレッド vol.123 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1482325013/
総レス数 1000
366 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★