JavaScript 4
1 :デフォルトの名無しさん :2014/12/05(金) 12:19:07.19 ID:fmzBASgG.net ( ^ω^) 初学者・迷子・ロリ幼女はこちらで _、_ ( ,_ノ` ) プロフェッショナルはECMAScript デス 4へ 【前スレ】 JavaScript 3 http://peace.2ch.net/test/read.cgi/tech/1380177260/ 【関連スレ】 ECMAScript デス 4 http://peace.2ch.net/test/read.cgi/tech/1325448978/ + JavaScript の質問用スレッド vol.117 + http://peace.2ch.net/test/read.cgi/tech/1404146244/ CoffeeScript http://peace.2ch.net/test/read.cgi/tech/1320949260/ TypeScript part1 http://peace.2ch.net/test/read.cgi/tech/1349187527/ 構造化ウェブプログラミング言語Dart2 http://peace.2ch.net/test/read.cgi/tech/1319388343/ Microsoft SkyDrive API http://peace.2ch.net/test/read.cgi/tech/1385604796/ 【MACRO】Google Apps Script 質問スレ【DRIVE】 http://peace.2ch.net/test/read.cgi/tech/1404007623/ 【node.js】サーバサイドjavascript 2【Rhino】 http://peace.2ch.net/test/read.cgi/tech/1358937029/
79 :デフォルトの名無しさん :2015/02/18(水) 23:52:45.07 ID:86t2mSil.net >>76 これそもそも第2引数は一度も使ってないけど、何のためにあんの? あと、 if (!hoge) return; 追加したら test(false,false); の時の挙動変わってんじゃん
80 :デフォルトの名無しさん :2015/02/18(水) 23:55:34.69 ID:M4E75IrS.net >>78 いや{length:10}de配列ライクと言えると思われる var hoge = {length: 10}; for (var i = 0; i < hoge.length; ++i) { console.log(hoge[i]); } で全部undefinedが出力されるけど、それは普通の配列でも有り得る事だし var hogeArray = Array.prototype.slice.call(hoge); で配列に変換も出来る
81 :デフォルトの名無しさん :2015/02/19(木) 00:01:52.76 ID:4zgsUurY.net >>79 直した…スマソ function test(hoge, foo) { 'use strict'; if (typeof hoge === 'boolean') { console.log('hoge is', hoge); } else if (hoge && typeof hoge === 'object') { if (hoge.hasOwnProperty('hoge') && typeof hoge.hoge === 'boolean') { console.log('hoge is', hoge.hoge); } if (hoge.hasOwnProperty('foo') && typeof hoge.foo === 'boolean') { console.log('foo is', hoge.foo); } } }
82 :デフォルトの名無しさん :2015/02/19(木) 00:46:16.03 ID:+Jg4S+WS.net >>80 JavaScript難しいなぁ Array.prototype.slice.call(hoge); ってするときに hoge = {length:4.5} => 4コ hoge = {length:Infinity} => 0コ hoge = {length:99999999999 } => フリーズ hoge = {length:-0.1} => 0コ hoge = {length:-1} => フリーズ hoge = {length:NaN} => 0コ hoge = {length:true} => 1コ うーむ・・・ でかいのはまだしも、負数を渡すとフリーズするのは内部で何をしているんだろう
83 :デフォルトの名無しさん :2015/02/19(木) 01:00:49.63 ID:4zgsUurY.net >>82 sliceがマイナスの値は最後から処理するからな気がする lengthがマイナスなのは配列とは言えないから やっぱり if (hoge && hoge.length > 0) { var hogeArray = Array.prototype.slice.call(hoge); } ってのは必要だね
84 :デフォルトの名無しさん :2015/02/19(木) 01:35:12.55 ID:iPujbk1h.net >>83 必要かどうかは仕様による。 >>83 のコードが必要な理由は、lengthにマイナスが入ることが プログラムの仕様的にありえるから、必要なのだろう? lengthにマイナスが入った時どうするか? 例外を出すか、永遠と処理するか、hogeArrayをundefinedにするか。 それは仕様で決めること。 そのコードはhoge.lengthがマイナスの場合、hogeArrayは undefinedになるという仕様のコード。 それの仕様でいいのかどうかを考える必要がある。
85 :デフォルトの名無しさん :2015/02/19(木) 08:45:08.63 ID:ACeVxkIV.net >>76 > 単にnullチェック抜けてるって言えば済む問題を○型が考慮されてないとか > お前の方が素人丸出しだ そのコードは typeof 演算子の "Object (native and does not implement [[Call]])" しか対応できてないだろう? http://es5.github.io/#x11.4.3 前方互換性をふまえれば、ES6 でも正しく判定出来ることが望ましい http://people.mozilla.org/~jorendorff/es6-draft.html#sec-typeof-operator Null 型を誤検知するだけなら「Object 型の一部」とはいわない あなたは ECMAScript 仕様書をまともに読んだことがないだろう? ES 仕様に言及している意見に反論するなら仕様書ぐらい読んで欲しい >>78 > >>65 はそもそも何を持って配列のようなオブジェクトといいたいのだろう わかりやすくいうならば、 Array.prototype.forEach と同様の判定といえるかな Array.prototype.forEach では ToObject, ToInt32 で型変換しているわけだが、型変換せずに TypeError を返したい状況もあるだろう http://es5.github.io/#x15.4.4.18
86 :デフォルトの名無しさん :2015/02/19(木) 12:11:41.51 ID:k55gX30E.net >>85 > そのコードは typeof 演算子の "Object (native and does not implement [[Call]])" しか対応できてないだろう? それで事足りてるという事は仕様的に問題ないという事だ 対応できてない事で実用的に問題があるコード例を挙げて説明してくれ そもそもJavaScriptは var obj0 = {hoge:true, foo:false}; var obj1 = {foo:false, bar:1, hoge:true}; function Hoge() {this.hoge = true; this.foo = false;} var obj2 = new Hoge(); のどれを渡されても同じように機能する事が期待されている !obj(nullとundefinedのチェック)とプロパティーの存在チェック(と最終的に'number'などの型チェック)以外に必要だとは思えない
87 :デフォルトの名無しさん :2015/02/19(木) 13:17:52.04 ID:VHEGaKii.net 実際、>>72 が直感的にコードを書いて多数間違えたぐらいだからなあ rypeof演算子に関しては良い仕様とは言い難い
88 :デフォルトの名無しさん :2015/02/19(木) 15:27:06.03 ID:/+bx2aTM.net なにがArrayLikeかは難しいよ。どういう目的で区別するかで変わると思う。なぜなら何を配列と見立てられるかは用途によって変わるから。 例えば配列に変換したいという場合なら、ES6のArray.fromを参考にすると、 lengthを持っているか(オブジェクトでなくともラッパーのプロトタイプにあればいい)、イテラブルならOK。 これが広義のArrayLikeだろう。 またはArray.prototype.concatで、引数をSpreadすべきかどうかなら、実は配列かどうかというチェックだと問題がある。 だからES6からは@@isConcatSpreadableのチェックに変わった。 要するに「一般的なArrayLikeの判定」を定義するのは無理というか、しても役に立つものにならないと思う。
89 :デフォルトの名無しさん :2015/02/19(木) 16:24:08.30 ID:+Jg4S+WS.net >>86 プロトタイプチェインはたどらないの?
90 :デフォルトの名無しさん :2015/02/19(木) 19:11:01.43 ID:FI1nksg/.net >>88 > ES6のArray.fromを参考にすると、lengthを持っているか(オブジェクトでなくともラッパーのプロトタイプにあればいい)、イテラブルならOK。 Array.from は配列に変換する、つまり Object 型に変換するから変換元が Object 型であることを求めないだけな気がする ierator を除くと Array.from は ToObject, ToLength(Int32への変換)をしている http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from 変換後のオブジェクトが ArrayLike と考えられるので ArrayLike は「Object 型」「Int32のlengthプロパティを持つ」になる Array.from の挙動は>>85 で説明されている Array.prototype.forEach の挙動と一致する Array.prototype 系メソッドを一通り読めばわかると思うけど、全てそういう挙動になってるよ 対象を isArrayLike で判定して例外を返すか、ArrayLike に変換するか、は意見が別れる(ポリシーに依る)だろうけどね ES6 の挙動に合わせるなら変換する方になる
91 :デフォルトの名無しさん :2015/02/19(木) 21:45:10.46 ID:/+bx2aTM.net ToObjectがかかっているのは、null/undefinedはじきや、Getやらもろもろの処理がObjectであることを期待しているためだからであって、処理の本質とはあまり関係ないけどね。 あとToLengthはInt32でなく2^53-1までの整数。 長さを拡張すべきという問題が出て、Arrayに関しては互換性問題で見送られたけど、型付配列は長さ2^53-1までになったから、ここに関しても絶対基準はないと思う。 別にこの範囲でなくともエラーになるわけではなくて、範囲に収まるように強制されるだけだし。
92 :デフォルトの名無しさん :2015/02/19(木) 22:21:02.70 ID:cTS5FQ8e.net >>91 なるほど ES6 の Array.prototype.forEach の length も 2^53-1 に拡張されてるんだな http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.foreach 今後、更に拡張される可能性を考えると、length に関しては Number.isInteger の判定ぐらいでいいのかもしれないな http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isinteger
93 :デフォルトの名無しさん :2015/02/23(月) 05:03:25.31 ID:m2dP1v8u.net 別に整数かどうかの判定は要らないだろう。 「"5"」だったら「5」、「true」だったら「1」になるのがJS流だし。 整数の長さが欲しければ「len = obj.length|0」とするのがJS流。
94 :デフォルトの名無しさん :2015/02/24(火) 00:54:33.32 ID:XD7S4Fuq.net try catchって頻繁に呼び出す関数では最適化できなくて遅くなるから使っちゃいけないのか? 知らなかった…Chromeのプロファイラに出ていた警告を見て初めて知った
95 :デフォルトの名無しさん :2015/02/24(火) 11:35:35.42 ID:SsySdaPd.net >>94 ループで、独自につくったルーチンなどを頻繁にそれつかって回すと激遅になる ので、なるべく、どこかで検証用の別ルーチンで対処させるようにしてる。
96 :デフォルトの名無しさん :2015/02/24(火) 12:16:53.92 ID:lFZ8d0+y.net 関数全体を覆わなければ問題ない。 一番ベストな使い方は関数呼び出しの部分だけに使用する。 try{ func() } そうでなくても全体で使用しなければ、tryの掛かっていない部分はfor文等一定のブロックごとに最適化が働く。
97 :デフォルトの名無しさん :2015/02/24(火) 12:32:14.82 ID:6vv1mCHr.net >>94 try catchの使い方を間違えてるんでしょ。 try catchを正しく使うということは try catchを使わないことを意味するw 何を行っているかわからないと思うが、 基本的に、windowのerrorイベントを使えばいいんだよ。 errorイベントは、誰もcatchしない時に呼ばれる所。 ここでまとめて処理すればいいし、普通はここで処理するもの。 例外的に途中でcatchしなくちゃいけない時だけcatchをする。 だからtry catchを正しく使う = try catchを使わないということになる。 逆に間違った使い方をしていると、catchしてalert()とかreturn falseとかするから、 間違った使い方 = try catchが多くなる。
98 :デフォルトの名無しさん :2015/02/24(火) 12:48:11.36 ID:wY5F80Ar.net >>94 try-catch は例外を捕捉しなければエラー処理出来ない場合に使うもの 例外が発生する条件は確定しているのだから、 try-catch を使わなくても対応出来る場合が大半を占める try-catch を使うのは new ActiveXObject() で対応する引数に応じて処理を分ける等の例外的なケースに限られる
99 :デフォルトの名無しさん :2015/02/24(火) 16:54:22.71 ID:gLNZIunY.net netbeansを使ってるんだけど最初にテンプレが出ますよね?あれを編集する方法ないですか?
100 :デフォルトの名無しさん :2015/02/25(水) 22:58:43.24 ID:JtIRtORE.net 現行スレ + JavaScript の質問用スレッド vol.123 + [転載禁止](c)2ch.net http://peace.2ch.net/test/read.cgi/hp/1423915644/
101 :デフォルトの名無しさん :2015/02/25(水) 23:20:48.35 ID:JFD+ngFs.net >>99 [ツール]-[テンプレート] [エディタで開く]
102 :デフォルトの名無しさん :2015/02/27(金) 18:16:56.06 ID:6eP810Kn.net >>101 テンプレのタグが分かりません・・・
103 :デフォルトの名無しさん :2015/02/27(金) 19:56:27.10 ID:Wvtuv0/g.net >>102 それは自分で努力すればいいよね?
104 :デフォルトの名無しさん :2015/03/13(金) 19:23:10.11 ID:UBRcUR4y.net jsonの日
105 :デフォルトの名無しさん :2015/04/05(日) 02:51:05.42 ID:Obp0DJ+Th VBAがある程度できるようになったから、 JavaScriptを始めたんだけどデバックがわけわかめ。 Google ChromeのJavaScriptコンソールを使っているんだけど、 一行ずつ実行とかどうやればいいかわからない…。
106 :デフォルトの名無しさん :2015/04/12(日) 11:08:10.55 ID:7j69OB5F.net 『関数型プログラミングに目覚めた! IQ145の女子高校生の先輩から受けた特訓5日間』 http://www.amazon.co.jp/dp/4798043761/ せっかくだからJavaScriptで関数型プログラミングを学んでみるのも面白いかもしれないな。
107 :デフォルトの名無しさん :2015/04/12(日) 17:02:14.80 ID:PVRHL1t5.net >>106 Qiitaアカバンされたポエマー、毛の壁先生じゃんw
108 :デフォルトの名無しさん :2015/05/18(月) 15:33:55.56 ID:lIw4CyOJ.net JavaScriptが20周年。開発者のBrendan Eich氏が過去と未来についてのスライドを公開 ttp://www.publickey1.jp/blog/15/javascript20brendan_eich.html
109 :デフォルトの名無しさん :2015/05/18(月) 17:37:17.88 ID:rf0kuBu1.net >>108 たった10日で書いたのか。 通りでクソなはずだ。
110 :デフォルトの名無しさん :2015/05/19(火) 14:42:25.57 ID:k4tzDQ/5a >>108 (円環はいま閉じた)と表しています。
111 :デフォルトの名無しさん :2015/05/20(水) 01:48:48.87 ID:zDiYcCDM.net 言語としてはかなりシンプルだったからな。 LexとYacc使っただろうし、スタックマシンな バイトコードインタープリタはSchemeのインタープリタを Cで書いたことがあれば難しくない。 コードを10日で書いたからクソというよりは、 書く前に言語仕様をきちんと練らなかったからクソなんだろう。
112 :デフォルトの名無しさん :2015/05/20(水) 05:27:02.66 ID:iajmjkjM.net 10日で書いたにしては良くできてるけど、もともとVBAみたいなものなのに、 後からいろいろ理屈を考えて素晴らしいものみたいに言いくるめようと したのがいけなかったんじゃないの。 アプリに付属させるマクロだと思えば、納得の仕様だと思うけど。 元々そういうものなんだし。
113 :デフォルトの名無しさん :2015/05/20(水) 11:19:23.20 ID:0vsGwB+G.net >>111 すまないが、ゴミをシンプルって言う風潮やめてくれるか?
114 :デフォルトの名無しさん :2015/05/20(水) 12:06:13.47 ID:D22K7RGs.net ClojureScript使い始めたらJSのクソさが 気にならなくなってきた。
115 :デフォルトの名無しさん :2015/05/20(水) 12:18:11.33 ID:qzEPJuIN.net 誰でも10日で出来る作業なら クソだろうさw 10日でとても出来ないような作業を 10日で作ったのならば、それは優秀ってことだよ。 優秀な人が作ったのだから、とても良く出来ている。
116 :デフォルトの名無しさん :2015/05/20(水) 14:27:44.16 ID:0vsGwB+G.net >>115 ←こういうの権威主義の馬鹿っていうんだよねぇ。日本人に実に多い。
117 :デフォルトの名無しさん :2015/05/20(水) 15:12:28.11 ID:qzEPJuIN.net どれだよ権威ってw 権威じゃなくて実力だろw
118 :デフォルトの名無しさん :2015/05/23(土) 05:06:34.47 ID:aWFfanUl.net jsスレでdisるのもアレだけど 権威主義以外の何物でもない 10日で作ったのは凄いかもしれんが別に洗練されてもないしシンプルでもない 初期のjsって文字列演算、暗黙変換とか無駄に長いfunctionとか、 中途半端にvbやC++の真似もしてて、バージョン違いの挙動もあって普通にクソ 初期のを優秀とか言う奴はES6使わないで欲しい 本人はサブセット言語嫌いとかlisp嫌いとか好き勝手言ってるみたいだけど 素直にパクリ元のselfのサブセットを素直に実装すりゃよかったと思うわ
119 :デフォルトの名無しさん :2015/05/23(土) 08:57:54.91 ID:3bf42BAL.net だいたい名前からしてクソだよ。 全然関係無いJavaパクってるんだし。
120 :デフォルトの名無しさん :2015/05/23(土) 10:54:12.24 ID:vTpQyjFi.net >>118 お前こそ権威主義じゃねーかw オリジナルは偉いんだ?w
121 :デフォルトの名無しさん :2015/05/24(日) 00:11:51.40 ID:hZNW9MV5.net >>120 日本語読めないならそう言ってくれよな 噛み砕いて話してやるからさ
122 :デフォルトの名無しさん :2015/05/24(日) 13:15:55.75 ID:bCeKXRbu.net >>121 じゃあどこが権威主義なのか 噛み砕いて説明してください。 その前に前提として権威主義とは何かを書いておきますね。 http://ja.wikipedia.org/wiki/%E6%A8%A9%E5%A8%81%E4%B8%BB%E7%BE%A9 > 権威主義(けんいしゅぎ)とは、権威に服従するという個人や社会組織の姿勢、思想、体制である[1][2]。権威主義の反対は個人主義や民主主義である。 > 政治学上の用法では、権威主義体制とは非民主的な体制の総称であり、通常は独裁、 > 専制、全体主義などを含むが、権威主義体制を民主主義体制と全体主義体制の中間とする立場もある[5][6]。 http://d.hatena.ne.jp/keyword/%B8%A2%B0%D2%BC%E7%B5%C1 > 権威(人を服従、強制させる力)に価値をおき、それに対して自己卑下や盲目的服従をする態度のこと。 > また逆に人にそれを要求する態度のこと。心理学的には、権威や伝統、社会的に価値のあると > されているものを無批判に承認し、これに服従、依存し、融通が利かないパーソナリティを指す。
123 :デフォルトの名無しさん :2015/05/24(日) 15:11:00.39 ID:9Q9ph3Hr.net オリジナルがえらいのではなくて パクリ損ないでオリジナルより劣化してるのがクソ、 っていう単純な話だと思うのだが……
124 :デフォルトの名無しさん :2015/05/24(日) 18:48:24.27 ID:hZNW9MV5.net >>122 10日で作業したというだけで優秀として 優秀な人、その人が作ったからスバラシイ 全然中身に言及してねえじゃんw どこに権威主義以外の要素があるんだよw
125 :デフォルトの名無しさん :2015/05/24(日) 22:02:35.19 ID:bCeKXRbu.net >>124 権威はどこにいったの?w
126 :デフォルトの名無しさん :2015/05/25(月) 17:36:12.90 ID:2/V0nnt+.net >>123 まさかここまで使われるとは思ってなかったんだろうな
127 :デフォルトの名無しさん :2015/05/25(月) 18:03:08.64 ID:MD5bLCSX.net >>118 ユーザが100万人ほどの言語を10日で作ってから言え
128 :デフォルトの名無しさん :2015/05/25(月) 21:15:36.88 ID:Pr0+1HdK.net >>127 権威主義万歳!
129 :デフォルトの名無しさん :2015/05/25(月) 21:28:29.13 ID:Pr0+1HdK.net 流石に初期JSの規模で大変とか言ってるのは インタプリタの作り方もわからない初心者だけだよな? クソ言語でも普及したPHPと違って言語そのものの需要で使われたわけでもなし JSが普及したのはウェブブラウザが先進的だったから そもそも本人も公開してるのに何マンセーしてんだかw
130 :デフォルトの名無しさん :2015/05/25(月) 21:29:17.23 ID:Pr0+1HdK.net 公開 -> 後悔
131 :デフォルトの名無しさん :2015/05/26(火) 00:12:46.62 ID:xYtlptqc.net >>129 オレもそう思うんだけどねえ。 Schemeのインタープリタ書いたことがあればさまえ難しくはない。
132 :デフォルトの名無しさん :2015/05/26(火) 15:21:59.38 ID:jJpgaPYe.net 学部レベルのインタプリタよりエロ動画サイト作る方が難しい
133 :デフォルトの名無しさん :2015/05/26(火) 18:58:13.73 ID:CP1OCp5D.net JavaScriptライブラリのスレにも書いたのですが,過疎っていたのでこちらで質問させてください openlayers3についてです http://openlayers.org/en/v3.5.0/examples/kml-timezones.html をそのままコピーして ローカルで実行したのですが,サンプルのようにTimezonesが表示されません(地図は表示されます) kmlファイルはhttps://github.com/openlayers/ol3 にあるdataフォルダをhtmlと同じ階層に設置しました 他のkmlファイルを読み込むサンプルも同様に動かないのですが何が原因でしょうか
134 :デフォルトの名無しさん :2015/05/27(水) 11:16:44.16 ID:XkCb2CMh.net 馬鹿には無理
135 :デフォルトの名無しさん :2015/05/28(木) 07:16:02.03 ID:4DphScwy.net >>134 だからあなたには答えられないんですね。なるほど。
136 :デフォルトの名無しさん :2015/05/28(木) 07:59:14.48 ID:616UB9cr.net >>135 ←答えられない上にコードも書けないアホ
137 :デフォルトの名無しさん :2015/05/28(木) 13:22:35.68 ID:E8n2j0BJ.net var vector = new ol.layer.Vector({ source: new ol.source.Vector({ url: 'timezones.kml',//url: 'data/kml/timezones.kml',
138 :デフォルトの名無しさん :2015/05/28(木) 17:23:07.74 ID:4ci5OfPn.net >>133 普通に動く。timezones.kmlをhtmlと同階層に置いて>>137 を書き換えても動く。
139 :デフォルトの名無しさん :2015/05/28(木) 19:02:19.37 ID:V96RG34r.net >>137 >>138 ありがとうございます IE,Opera,Chromeだと動かないのですが,firefoxだとサンプル通り動きました これってコードにブラウザ依存の部分があるのでしょうか? それともブラウザの設定の問題でしょうか?
140 :デフォルトの名無しさん :2015/05/29(金) 07:06:31.36 ID:hjMnAajE.net >>139 firefox以外はデフォルトではローカルファイルへのアスセスが制限されているからでは? http://tmlife.net/programming/javascript/how-to-chrome-ajax.html
141 :デフォルトの名無しさん :2015/05/30(土) 07:45:51.67 ID:xVK15s94.net ローカルテストはサーバ立ててやるものだと思うが、fileスキームで実行してるのか
142 :デフォルトの名無しさん :2015/05/30(土) 08:33:00.97 ID:Rpgfw2oh.net >>140 >>141 サーバたててやったらどのブラウザでも動きました ありがとうございました
143 :デフォルトの名無しさん :2015/05/30(土) 10:26:22.21 ID:3Gf/DalK.net 最近やたらめったらモジュールに切り分けてたら共通部分の重複が酷いことになってた 現在のスコープ内にimport,requireできれば便利なんだが
144 :デフォルトの名無しさん :2015/05/30(土) 12:21:21.30 ID:skc6DNlZ.net 現時点でもやはりES3で書くべきですか? ES5出てからもう何年も経ってるしObject.create()とか配列まわりの関数とか色々追加されてるのに使えないのが歯がゆいです。 ネット見てると結構ES5の機能使ってる人が多いですが、そういう方々はIE8とか切り捨ててるんですかね?
145 :デフォルトの名無しさん :2015/05/30(土) 13:40:15.04 ID:HkfQYaI5.net >>144 サポートサイクルを見たらどうでしょう? 2016年1月まではIE8対応は切れません。
146 :デフォルトの名無しさん :2015/05/30(土) 13:41:11.94 ID:HkfQYaI5.net IE8 でもpolyfillで何とかなる場面が多いとは思いますが
147 :デフォルトの名無しさん :2015/05/30(土) 14:06:06.57 ID:ebcCMrL3.net >>144 lodash使ってる。なんとIE6以上から対応してる。 実装不可能なものを除いて、ES5で提供されている関数が提供されてる。 Object.create相当のメソッドもある。 https://lodash.com/docs#create どうしてもES5だけでやりたいってわけじゃなく ES5で提供された便利な関数を使いたいならlodashオススメ。 lodashにはES5よりも多くの機能が追加されてる。
148 :デフォルトの名無しさん :2015/05/31(日) 02:38:34.37 ID:474JDHci.net >>145 ありがとうございます。 ぐぐってみたら2016年1月以降は最新版のIEしかサポートされないんですね。 こういうのを境界にして考えるのですね。勉強になりました。 polyfillというのはes-shimsとかのことですよね?Object.createに対応してないので選択肢から外れました。 >>147 ありがとうございます。今回は素のJSでやりたかったのでlodashは使えません><
149 :デフォルトの名無しさん :2015/05/31(日) 02:41:25.56 ID:474JDHci.net でももうすぐES6が出るしキリが無いですね ブラウザ対応状況とか考えるの諦めてlodashとかunderscoreとかそういうのに完全依存する方が正しいのかも
150 :デフォルトの名無しさん :2015/05/31(日) 08:20:05.87 ID:6IDXNIVy.net >>148-149 Object.create はES3の範囲内で完全実装は出来ない為、制限付きを理解した上で polyfill を書く必要がある lodash は forEach 等で ES5 互換でないコードが見受けられるので ES 標準を目指すのであればお勧めしない コードを読む限りでは 仕様に忠実なライブラリではなく、独自の世界を構築するタイプのようだから
151 :デフォルトの名無しさん :2015/06/01(月) 15:26:03.49 ID:dTiEpsP/.net underscoreって可読性低下しない? _から始まるってのがそもそも論外なんだけど… 知らない人間が見たら何だコリャ?ふざけてんのか? これを考えた奴は保守性を考慮しないオナニー馬鹿なのか?って思うだろ。
152 :デフォルトの名無しさん :2015/06/01(月) 16:19:05.72 ID:fqMWxMza.net >>151 ま、普通使わない。 オナニーって言えばその通り。少なくとも個人的に使うのだったら文句言う アレはないが、プロジェクトなんかでこんなもの使ってる奴いたら、排除する。
153 :デフォルトの名無しさん :2015/06/01(月) 16:49:15.47 ID:4t8ilUI7.net >>151 > 知らない人間が見たら何だコリャ?ふざけてんのか? それを言い始めたら、$.hogeってなんだ?ってことにもなる。 >>152 > ま、普通使わない。 以外と使われてるよ? http://www.infoq.com/jp/news/2015/04/lodash-utility-library > JavaScriptユーティリティライブラリのlodashがバージョン3.5に達して,npmパッケージリポジトリの中で > 最も多く参照されるライブラリになった。もはや代用品などではなく,信頼できる選択肢のひとつだ。 http://matsukaz.hatenablog.com/entry/2014/04/09/082410 に上げられてるようなよく使う機能は、 オレオレ実装されるより、既知のライブラリのメソッド使って欲しい。
154 :デフォルトの名無しさん :2015/06/01(月) 17:05:38.13 ID:dTiEpsP/.net javascript使いってエンジニアとして未成熟なのか文系が多いのか、 保守性を考慮しないのばっかりだよな。 多言語では保守性において禁忌とされている事を平気でやる 先人が築きあげたバグを排除するコツのようなものをを完全に無視してる たぶん将来はjavascriptの仕様が整理されて、 jQueryとかunderscoreみたいな非直観的で腐ったキーワードを使うライブラリは完全非推奨になる。
155 :デフォルトの名無しさん :2015/06/01(月) 17:20:57.79 ID:4t8ilUI7.net Javaの人かな
156 :デフォルトの名無しさん :2015/06/01(月) 17:24:57.76 ID:TGyjCQFp.net hagedo
157 :デフォルトの名無しさん :2015/06/01(月) 19:51:34.16 ID:lFnhdSIE.net >>154 だってJataScriptが使いにくいクソ言語じゃん。 細かいこと気にしてられないって、クソだから。
158 :デフォルトの名無しさん :2015/06/01(月) 19:59:11.62 ID:9HWSCI34.net >>154 こういう関数の部分の保守性とかどうでもいいよw 単純に自分実装のライブラリに入れ替えれば済む話なんだから。 それより問題なのはフレームワークだ。 馬鹿が使うとフレームワークにガッチリ組み込まれて 別のものに変えるのがすごく大変になる。
159 :デフォルトの名無しさん :2015/06/01(月) 20:00:16.98 ID:9HWSCI34.net >>153 > > ま、普通使わない。 > 以外と使われてるよ? だよな。Node関連では一番使われているライブラリだったはず。 何処かにデータが有ったはずなんだが。 好き嫌いは個人の好みとして、一番使われているという 事実を知らないとしたら、モグリだろうw
160 :デフォルトの名無しさん :2015/06/01(月) 20:02:41.82 ID:9HWSCI34.net あったあった。この記事だ。 lodash, あなたが既に使っているJavaScriptライブラリ http://www.infoq.com/jp/news/2015/04/lodash-utility-library JavaScriptユーティリティライブラリのlodashがバージョン3.5に達して, npmパッケージリポジトリの中で最も多く参照されるライブラリになった。 もはや代用品などではなく,信頼できる選択肢のひとつだ。 何の根拠もない「使われてない」は無視していいよ。 だって、本人が無知だから、使われていることを「知らない」という 状態でも、自分の知ってる小さな経験だけから 使われてないって発言するだろうからさw
161 :デフォルトの名無しさん :2015/06/01(月) 20:33:19.40 ID:qMAgmJxR.net そんなことよりもNode.jsのREPLでアンダースコアが使えないのはどうすればいいの? REPL単体で使うぶんには別の名前を使っても気にならないけど、.loadで読み込むファイルでアンダースコアが 使われていた場合は、ファイルを書き換えなければならず、かなり気持ちが悪い こんな定番のライブラリで、Node.jsのことを考慮していない名前をデフォルトにするとも思えないから、 何か解決策はあると思うんだけど…
162 :デフォルトの名無しさん :2015/06/01(月) 20:42:18.22 ID:e+Q3qVuq.net >>151 perlのデフォルト演算子($_)の名残だと思ってた
163 :デフォルトの名無しさん :2015/06/01(月) 20:49:28.66 ID:9HWSCI34.net >>161 グローバル変数とローカル変数の違いわかってる? REPLで使うのはグローバル変数の_。 ローカル変数の_(lodash)が名前かぶっても 何の問題もないんだが。 名前かぶってわかりづらいというのなら、 var i だってずいぶん被ってるはずなんだが。
164 :デフォルトの名無しさん :2015/06/01(月) 20:52:38.62 ID:9HWSCI34.net >>162 いやー、普通、_で思い出すのは、 C言語などで広く使われてる多言語の仕組みである GetTextの_関数でしょw あれだって、_で始まる関数なわけだけど、 何だこりゃの前に、普通GetText思い出すよね? >>151 は無知なんじゃないかって思うだけなんだが。
165 :デフォルトの名無しさん :2015/06/01(月) 21:51:26.69 ID:dTiEpsP/.net >>164 _で始まるって言い方はおかしかったな。 C言語系の_は名前が続くから識別に問題ないが、_だけというのがクソだって話 これを初めて拝んだとき、_だけを変数名にするなんて一体このバカはどんな教育を受けているんだと思ったわ。
166 :デフォルトの名無しさん :2015/06/01(月) 22:48:12.23 ID:VQX8/s75.net >>165 うん。それでgettextは、_ だけの 関数名なんだが、恥の上塗りしてどうするの?
167 :デフォルトの名無しさん :2015/06/01(月) 22:56:29.23 ID:qMAgmJxR.net >>163 流石にそれくらいは分かってるけど、UnderscoreやLodashは普通グローバルに読み込むものじゃないの? まさか関数ごとにrequireを書くわけでもあるまいし、少なくともvar iとは次元が違うものだと分かると思うんだけど…
168 :デフォルトの名無しさん :2015/06/01(月) 22:59:26.58 ID:VQX8/s75.net lodash使うアプリでグローバルなんて聞いたことがない。 普通nodeでライブラリを使うときは、 ローカル変数に、略 いわんでもわかるだろ? 知ってるならなw
169 :デフォルトの名無しさん :2015/06/01(月) 23:00:05.05 ID:VQX8/s75.net 訂正 lodash使うアプリでグローバルなんて聞いたことがない。 node使うアプリでグローバル変数なんて聞いたことがない。
170 :デフォルトの名無しさん :2015/06/01(月) 23:01:04.60 ID:e+Q3qVuq.net CakePHPなんかの__()ならともかく、underscore.jsでGetTextの方の_を、 どうすれば連想できるのかわからない
171 :デフォルトの名無しさん :2015/06/01(月) 23:01:38.04 ID:dTiEpsP/.net >>166 そんなどうでもいい知識はどうでもいい
172 :デフォルトの名無しさん :2015/06/01(月) 23:03:51.00 ID:dTiEpsP/.net _を変数名にするのはゴミだってのは100人に聞いて99人が納得する話。 ほんとjQueryといい、javascriptのライブラリ作ってる奴は基地外だわ。
173 :デフォルトの名無しさん :2015/06/01(月) 23:06:02.95 ID:qMAgmJxR.net >> 166,167 何が言いたいのか分からんのだけど、ファイルの頭で var _ = require('lodash'); // またはunderscore とするのは十分、一般的な使い方じゃないか? 適当に検索したサンプルコードでも、ファイルの頭でrequireをしているものがほとんどだし
174 :デフォルトの名無しさん :2015/06/01(月) 23:08:20.48 ID:e+Q3qVuq.net >>172 デフォルトに近い機能を誰もタイプしたくないから
175 :デフォルトの名無しさん :2015/06/01(月) 23:08:27.29 ID:VQX8/s75.net >>173 はい、だからファイルの頭で var _ = require('lodash'); // またはunderscore とローカル変数に代入してるって言ってるわけですが。
176 :デフォルトの名無しさん :2015/06/01(月) 23:12:31.08 ID:qMAgmJxR.net >>175 それで>>161 に戻るんだが、そのファイルをREPLから.loadで読み込むと名前が衝突して困るという話なんだが 何かおかしいこと言ってるかな?
177 :デフォルトの名無しさん :2015/06/01(月) 23:16:47.51 ID:VQX8/s75.net >>176 それは作り方が悪いだけだろう。 自分で作ったものを自分でロードして 問題が起きたって騒いでいるだけ。
178 :デフォルトの名無しさん :2015/06/01(月) 23:18:28.56 ID:e+Q3qVuq.net >>176 はqiitaのポストへの巧妙なステマ
152 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200
本文 スレッドタイトル 投稿者