5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

+ JavaScript の質問用スレッド vol.131 + [無断転載禁止]©2ch.net

1 :Name_Not_Found:2016/11/02(水) 11:26:39.44 ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。次スレは>>950>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください
(前スレでワッチョイ化の提案がありましたが、Web制作板のSETTING.TXTでBBS_USE_VIPQ2が2以上でない為、使用できないようです)

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)。
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の話題は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

28 :lookuda:2016/11/27(日) 09:30:46.23 ID:Er3ITcxf
HTML/JavaScriptのiframeタグについてご教授下さい。

■実施したい事
iframeでhtmlを取得したいが、
取得したhtmlの中身(cssや画像)は取得させたくない。

29 :Name_Not_Found:2016/11/27(日) 09:31:15.14 ID:Er3ITcxf
>>28
■詳細イメージ
@
<iframe src="http://xxxx/sample.html"></iframe>

A
WEBブラウザがhttp://xxxx/sample.htmlへGETリクエストを投げて、
レスポンスが返ってくる

B
WEBブラウザが返ってきたレスポンスをDOMツリーにロードする

C
WEBブラウザがhttp://xxxx/sample.htmlに記載されているcssや画像を取得する

@Aは実施させて、
Bの前後で処理を中断させて、
Cを実施させたくない。

30 :Name_Not_Found:2016/11/27(日) 09:31:33.75 ID:Er3ITcxf
>>28
>>29
■質問事項
上記を実現させるためにはどのようなHTML/JavaScriptの実装が必要でしょうか?
ご教授下さい。

■思うところ
Bのタイミングでイベントを発生させて、
Cを無効にするような処理が可能かな?と調べてみましたら、
「DOMContentLoaded」というDOM読み込み完了後に呼ばれるイベントがあったのですが、
うまく使えますでしょうか。

また、<xmp>タグ等を動的に発行して、
取得したhtmlを無効に出来るかな?と思っています、
うまく使えますでしょうか。

また、ブラウザで発生するHTTPリクエストを全てキャッチして、
http://xxxx/sample.htmlに記載されているcssや画像のHTTPリクエストを遮断できないかな?と思っています、いかがでしょうか。

その他、手段は問いません。
実現できる方法をヒントだけでも良いのでご教授下さい。

31 :Name_Not_Found:2016/11/27(日) 09:38:41.02 ID:???
よくわからんがソース読み込んでstyleタグとimgタグを除去したのを出力すりゃいいだけじゃないの

32 :Name_Not_Found:2016/11/27(日) 09:40:02.22 ID:???
>>30
Ajaxかfetchで読み込む

33 :Name_Not_Found:2016/11/27(日) 14:00:41.54 ID:Er3ITcxf
>>31
具体的に別ドメインからソースを読み込む方法は?

>>32
Ajaxの場合、クロスドメインに対応していないのでNGです。
fetchはクロスドメイン可能でしょうか?
fetchはService Workersをクライントで明示的に実行しなくても使用できるものでしょうか?

34 :Name_Not_Found:2016/11/27(日) 15:08:19.46 ID:???
クロスドメインってことは当然ローカルでの話なんだろうな

35 :Name_Not_Found:2016/11/27(日) 15:41:05.96 ID:Er3ITcxf
>>34
ローカルではなく一般公開している私のサイトです。
本体のドメインもhttp://xxxx/sample.htmlも両方私のサイトですが、
色々用途があり使い分けているのでこの質問をしています。
具体的な解決手法持ってるんだろうな?教えてください。

36 :Name_Not_Found:2016/11/27(日) 15:44:40.46 ID:???
馬鹿か
一生方法探してろ

37 :Name_Not_Found:2016/11/27(日) 16:05:24.76 ID:???
ID:Er3ITcxf はマルチだから相手にしなくていい

+ JavaScript & jQuery 質問用スレッド vol.7 +
http://echo.2ch.net/test/read.cgi/hp/1478002550/22

38 :Name_Not_Found:2016/11/27(日) 16:33:33.64 ID:Er3ITcxf
>>36
具体的な解決手法持ってないって事ですか?

39 :Name_Not_Found:2016/11/27(日) 17:35:57.90 ID:???
>>35
自分のサイトならどうにでもなるだろ?w

40 :Name_Not_Found:2016/11/27(日) 18:54:33.93 ID:???
相変わらずこっちはギスギスしてんなw

41 :Name_Not_Found:2016/11/27(日) 20:45:44.85 ID:???
fetchは宣言することでクロスドメイン可能でフェッチするとこまでは問題なくできる。
が、相手先が許可していないとbodyが読めないのでCacheStorageに入れるか、img等のリソース用に使うくらいしかできない。

42 :Name_Not_Found:2016/11/27(日) 21:43:10.48 ID:???
解決手段というよりも構築手段だろw

43 :Name_Not_Found:2016/11/27(日) 23:12:32.31 ID:???
>>28-30
マルチポスト先が多すぎ、わろた
https://teratail.com/questions/56712
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14167299299
http://qiita.com/dounatte/items/fd400503ab7aeea7e317
http://w3q.jp/t/11699
http://ja.stackoverflow.com/questions/30700/
http://echo.2ch.net/test/read.cgi/hp/1478002550/20-

44 :Name_Not_Found:2016/11/27(日) 23:50:34.37 ID:???
さすがにワロタ
3回ぐらい死んでいいよ

45 :Name_Not_Found:2016/11/28(月) 05:40:51.10 ID:???
2のGETで、取得しないファイルの拡張子を、指定できないの?

Aなど、丸囲み文字は、Windowsだけの環境依存文字だから、使うな

マルチポストも禁止。
どこのスレに返事するか、わからないから、他のスレでの質問を取り下げろ

46 :Name_Not_Found:2016/11/28(月) 09:35:53.44 ID:???
> Aなど、丸囲み文字は、Windowsだけの環境依存文字だから、使うな
断るwww

47 :Name_Not_Found:2016/11/28(月) 11:18:23.55 ID:???
別に使ってもいいけど、質問が他の人に分かりにくくなるんだから、損するのはお前自身だぞ

48 :Name_Not_Found:2016/11/28(月) 14:39:01.52 ID:???
この掲示板って未だにshift-jisなんだな

しかしブラウザはページがshift-jisだろうが内部的には必ずUnicodeで処理するし、
フォーム入力もUnicodeで受け付けた上で必要なら shift-jis に変換して送信する
だろうから、文字化けが発生するとしたらどこで起こるのかな?

49 :Name_Not_Found:2016/11/28(月) 15:32:52.56 ID:???
変換対応文字が存在してないとどうなるん?

50 :勉強し始め ◆oE2hrP9CY2 :2016/11/28(月) 16:27:35.25 ID:???
button がサファリでは押せますがChromeでは押せません。
何が問題でしょうか?

51 :Name_Not_Found:2016/11/28(月) 16:49:21.71 ID:???
謎かけじゃないんだからw
再現できるソース貼ってね

52 :Name_Not_Found:2016/11/28(月) 22:28:54.55 ID:???
>>45
普通にUNICODE文字ですがw

53 :Name_Not_Found:2016/11/28(月) 22:30:48.01 ID:???
>>47
MacでAが正常に見えてるのに、何が問題?

54 :Name_Not_Found:2016/11/28(月) 23:07:04.14 ID:???
今時丸文字で文字化けwと思ったけど、スマホ版だと文字化けするみたいだね
http://i.imgur.com/ceeoXVr.jpg

55 :Name_Not_Found:2016/11/28(月) 23:28:20.60 ID:???
それは2ちゃんねるのバグ
Windowsでも同じように化けてるのだから
"環境依存"の問題ではない

56 :Name_Not_Found:2016/11/28(月) 23:43:10.34 ID:???
じゃあもう自由に使えよw

57 :Name_Not_Found:2016/11/29(火) 00:04:18.95 ID:OhNqSe55
>>45
2のGETってブラウザが自動的に行ってるものなんですが、
ブラックリストの拡張子って指定できるんですか?
具体的にどうやってやるのでしょうか?

58 :Name_Not_Found:2016/11/29(火) 01:33:08.84 ID:???
>>56
だからWindowsでもMacでも化けないんだから
自由に使うって。

59 :Name_Not_Found:2016/11/29(火) 07:11:49.09 ID:???
ところで君は>>28?それとも別の人?

60 :Name_Not_Found:2016/11/29(火) 07:34:41.35 ID:???
>>57
RFC2616 日本語訳の複製 (HTTP/1.1)
https://triple-underscore.github.io/RFC2616-ja.html

9.3 GET
条件付き GET メソッド

14.1 Accept

漏れはいつも、ブラウザの設定で、動画・画像などを表示していないから、
取得したくないファイル種別を、拡張子で指定できるのかと思っていた

61 :Name_Not_Found:2016/11/29(火) 11:20:56.89 ID:???
このようにテキストノードを分割して挿入するのは、特に問題ないのでしょうか?
それとも、ひとつのテキストノードにまとめた方がいいですか?
var span = document.createElement("span");
span.appendChild(document.createTextNode("hoge"));
span.appendChild(document.createTextNode("fuga"));
console.log(span.childNodes); // [#text, #text]

62 :Name_Not_Found:2016/11/29(火) 11:32:09.28 ID:???
>>61
appendChildでDOM操作しているんだから
まとめて一回でappendChildする方がいいよ

63 :Name_Not_Found:2016/11/29(火) 11:37:22.31 ID:???
>>62
確かにそうですね
ありがとうございます

64 :Name_Not_Found:2016/11/29(火) 12:57:03.15 ID:???
create系は処理速度がとても落ちる

65 :Name_Not_Found:2016/11/29(火) 16:19:31.56 ID:???
>>64
clone系はどうっすか?

66 :Name_Not_Found:2016/11/29(火) 18:03:05.60 ID:???
createよりcloneのが速いよ

67 :Name_Not_Found:2016/11/29(火) 20:17:20.81 ID:???
× createTextNode("hoge"))
○ new Text("hoge")

68 :Name_Not_Found:2016/11/29(火) 21:51:44.60 ID:???
※ただしIE/Edgeを除く

69 :Name_Not_Found:2016/12/01(木) 08:51:34.18 ID:???
var attrs = [
[nodeName, nodeValue]
for each({nodeName, nodeValue} in Array.prototype.slice.call(node.attributes))
if (!/^(?:id|class)$/i.test(nodeName))];

このコードが SyntaxError : missing ] after element list となってしまいます
どう書き直せばよいでしょうか?

70 :Name_Not_Found:2016/12/01(木) 09:34:07.71 ID:???
動かない理由を調べて、動くように修正すればいい

71 :Name_Not_Found:2016/12/01(木) 11:35:52.34 ID:???
>>69
基礎から勉強する

72 :69:2016/12/01(木) 12:05:27.97 ID:???
このコードは今年の頭〜中頃までのFirefoxではエラーとみなされず動作していました
エラーとみなされるようになったのは最近のFirefox(確認したのは50)からです
原因がわかりません

73 :Name_Not_Found:2016/12/01(木) 12:14:19.17 ID:???
[ ] は配列だろ。
配列は、[a, b, c] のように使う

なぜ、配列の中で、for each とか使えるのか?

基本から、勉強すれば?

74 :Name_Not_Found:2016/12/01(木) 13:02:23.40 ID:???
テスト

75 :69:2016/12/01(木) 13:19:17.95 ID:???
>>73
では何故今まで動いていたんでしょうか

76 :Name_Not_Found:2016/12/01(木) 13:36:12.79 ID:???
>>69
それは前置型のArray comprehensionsと言ってFirefox独自の書き方。
一時期ECMAScriptのドラフトに入ってたけど削除された(けど今後復活するかも)。
それに倣ってFirefox50ぐらいで削除した。
http://kangax.github.io/compat-table/non-standard/
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Array_comprehensions
後置型のArray comprehensionsはまだ使えるみたいだけど、他のブラウザを考えたら使うべきでないだろう。

書き直すとしたら、
var attrs = [];
for({nodeName, nodeValue} of Array.prototype.slice.call(node.attributes)) if(!/^(?:id|class)$/i.test(nodeName)) attrs.push([nodeName, nodeValue]);
みたいな感じ。

77 :76:2016/12/01(木) 13:54:09.90 ID:UViDoao9
ついでに、あまり推奨しないけど、Firefox限定でまだ使えるArray comprehensionsの書き方はこんな感じ。
var attrs = [for(attr of Array.prototype.slice.call(node.attributes)) if(!/^(?:id|class)$/i.test(attr.nodeName)) [attr.nodeName, attr.nodeValue]];

78 :Name_Not_Found:2016/12/01(木) 13:56:54.24 ID:???
Array.prototype.reduce を使えば for-each-in も for-of も不要な気がする

79 :Name_Not_Found:2016/12/01(木) 13:59:21.34 ID:???
>>76-77
見たことのない書き方でググってもわからず、正直面食らっていました

ご指摘のやり方で見事にエラーが消えました
助かりました
ありがとうございました

80 :Name_Not_Found:2016/12/01(木) 15:00:55.95 ID:???
>>76
今後復活するかもとか言わないほうが良い。
今や誰も支持していないのだから。

81 :Name_Not_Found:2016/12/01(木) 15:26:54.64 ID:???
配列内包の歴史や近況を知らない奴にも驚くが
それを質問する質問者が一番悪いわ
何度も言っているが古い情報には気をつけないといけない

それこそまともに新しい情報を常に追っていたならば
ES2015騒動の前後で配列内包に関する出来事も知っていなければおかしいね

82 :Name_Not_Found:2016/12/01(木) 15:37:44.99 ID:???
質問スレで何言ってんだこいつ

83 :Name_Not_Found:2016/12/01(木) 18:11:45.84 ID:???
後置forはPythonぽいな

84 :Name_Not_Found:2016/12/01(木) 21:05:52.16 ID:???
>>76
もうブラウザ間の互換性は大丈夫だと思っていたけど
やっぱりこんな問題があるんだね。
新しい機能は安易に使えないな。

85 :Name_Not_Found:2016/12/01(木) 22:01:23.64 ID:???
大丈夫どころじゃないぞ・・・
Chromeの不自由さは辟易する

86 :Name_Not_Found:2016/12/02(金) 01:30:33.60 ID:???
>>84
問題とか新しい機能とか、お前勘違いしてるぞ。

87 :Name_Not_Found:2016/12/02(金) 08:26:35.63 ID:???
>>84
Firefox独自拡張なfor-each-inを使っておいてその感想はないと思うな
一つのブラウザで動くことで満足しないでいろんなブラウザで試しておいで
ES7の仕様書も読むといいよ

88 :Name_Not_Found:2016/12/02(金) 08:33:37.27 ID:???
for-each-inと言うと通常のfor-each-inを指す
ここで使われてるのは配列内包のうちの一つとしてのfor-each-inだから
それを独自拡張なfor-each-inと言うとおかしい
(特に前置型の)配列内包自体が独自拡張なのだから
そしてもはや昔からの拡張機能のためだけに存在する非標準な機能を
今更持ち上げるってとこが最もおかしな点なのだから

89 :Name_Not_Found:2016/12/02(金) 16:46:00.08 ID:???
持ち上げるも何も
そういうのに遭遇してわからんから聞きに来たってだけの話だろ

90 :勉強し始め ◆oE2hrP9CY2 :2016/12/02(金) 18:26:45.70 ID:???
xというクラス名のついたimg(画像)のheightが300px以上ならwidthを50%にするというjsを書きたいのですが、
var x = document.getelementsbyclassname('x');
の後 heightや
ifを、使ってやるやり方がわかりません。
教えていただけませんでしょうか?

91 :Name_Not_Found:2016/12/02(金) 18:45:30.36 ID:???
>>88
「独自拡張=非標準」でブラウザの互換性を重視する>>84は非標準なAPIを使うべきではない、という話なんだけど何かおかしい?

92 :Name_Not_Found:2016/12/02(金) 18:48:59.33 ID:???
>>90
computedStyle から width, height を算出するとか、clientWidth, clientHeight とか

93 :Name_Not_Found:2016/12/02(金) 19:52:30.78 ID:???
>>90
var xクラスの画像のノードリスト
for xクラスの画像のノードリスト {
 var 画像の高さ
 var 画像の幅
 if 画像の高さが300以上なら {
   画像の幅 = 画像の幅/2
 }
}

94 :Name_Not_Found:2016/12/03(土) 05:00:00.61 ID:???
>>91
何がおかしいかは書いたとおり、言い方が非常におかしい。

95 :Name_Not_Found:2016/12/03(土) 08:15:40.51 ID:???
>>94
>>88はFirefoxの中の閉じた世界で語っている印象
>>84の「ブラウザの互換性」に関していうなら的外れに読めた

96 :Name_Not_Found:2016/12/03(土) 13:18:11.44 ID:???
Firefoxでもfor-ofのカッコ内にconstが使えるようになるらしいですし、
将来的にはイテラブルなオブジェクトにforEachを使っていた場面では
なるべくfor-ofを使ったほうがいいのでしょうか。
パフォーマンスとか、可読性とかどう思われますか?

97 :Name_Not_Found:2016/12/03(土) 14:02:45.56 ID:???
>>96
Array#forEachがなくなるわけでもなし
無理にfor-ofに統一する必要はないと思うが、for-ofが便利に感じる場面は多くなるだろうな

98 :勉強し始め ◆oE2hrP9CY2 :2016/12/03(土) 15:09:09.61 ID:???
>>93
ありがとうございます。

var mix = document.getElementsByClassName("x");
for mix = document.getElementsByClassName("x"){
var y = mix.height();
var x = mix.width();
if ( y >= 200) {
mix.width = x/2
};
};

これでうまくいかないんですが何が間違ってるでしょうか?

99 :Name_Not_Found:2016/12/03(土) 15:26:34.81 ID:???
お前覚える気ないだろ

100 :Name_Not_Found:2016/12/03(土) 16:02:02.25 ID:???
お前教える気ないだろ

101 :Name_Not_Found:2016/12/03(土) 18:09:19.31 ID:???
金払うんなら教えてやるよ
金が惜しいなら時間を費やせ

102 :Name_Not_Found:2016/12/03(土) 18:33:38.53 ID:???
つD

103 :Name_Not_Found:2016/12/03(土) 18:39:16.32 ID:???
>>98
height(), width() は誰かが直してくれるのを期待していい加減に書いている感が否めない
>>92に答えが書いてあるわけだが

104 :Name_Not_Found:2016/12/03(土) 18:46:01.26 ID:???
>>92みたいなことをするなら
jQueryを使ったほうが良さそうだな。

105 :Name_Not_Found:2016/12/03(土) 18:47:23.38 ID:???
clientWidthを使うのにjQueryは不要

106 :勉強し始め ◆oE2hrP9CY2 :2016/12/03(土) 18:47:52.68 ID:???
おっしゃる通りですm(_ _)m
勉強し始めで基礎がわからず
学ぶ気もあまりないため
できれば答えを教えて欲しいですm(_ _)m

107 :Name_Not_Found:2016/12/03(土) 18:53:47.89 ID:???
>>106
勉強する気がなくてその名前(勉強し始め)は詐欺だと思う
制作依頼ならお金を払って専門の業者に依頼して下さい
このスレで質問するなら>>1-2のルールを守って質問し手下さい

108 :Name_Not_Found:2016/12/03(土) 18:57:12.35 ID:???
>>106
ほれ
var x = document.getElementsByClassName('x');
for (var i = 0; i < x.length; i++) {
x[i].height > 300 ? x[i].width = x[i].width / 2 : void 0;
}

109 :Name_Not_Found:2016/12/03(土) 19:22:39.81 ID:???
.modal-scroll {
overflow-y: auto;
max-height: 400px;
}

これでbootstrapのモーダルウィンドウにスクロールバーを追加しているのですが、
このスクロールバーの位置を読み込み時に一番下までスクロールさせるにはどうすればよいでしょう?

110 : ◆oE2hrP9CY2 :2016/12/03(土) 19:24:57.77 ID:???
>>108
ありがとうございます。
ifは使わないのですね。
入れてみたのですがうまくいかないのでまたいろいろ試してみます。
ちなみにclass名は箱のようなものですよね?
箱の中のimgのサイズを操作しなくてもうまくいくのでしょうか?

111 :Name_Not_Found:2016/12/03(土) 19:40:45.75 ID:???
var zipCode = {
 東京都: {
  新宿区: {
   片町: "160-0001",
   四谷坂町: "160-0002"
  }
 }
}

console.log(zipCode.東京都.新宿区.片町);

ちょっと例は悪いのですが日本語プロパティ名は生理的に嫌なので
これをもっといい感じのオブジェクトにしたいのですが
何かいい書き方ありますでしょうか?

112 :Name_Not_Found:2016/12/03(土) 19:44:09.19 ID:???
jQueryでかけばこんな感じかね?

$('.x').width(function() {
  return this.height > 300 ? this.width / 2 : void 0;
});

113 :Name_Not_Found:2016/12/03(土) 19:45:36.44 ID:???
>>111
日本語が嫌ならローマ字にでもしたら?w

114 :Name_Not_Found:2016/12/03(土) 19:52:25.18 ID:???
>>110
ifを使いたいなら
for (var i = 0; i < x.length; i++) {
if (x[i].height > 300) {
x[i].width = x[i].width / 2;
}
}
条件 ? 真の時 : 偽の時;
if (条件) { 真の時 } else { 偽の時 }
同じこと

115 :Name_Not_Found:2016/12/03(土) 19:54:07.43 ID:???
>>109
レイアウトが完了しないと「一番下までスクロール」できないので CSS だけでは無理っぽい
一番下のダミーの要素を置いて、レイアウト完了時に scrollIntoView() を呼び出すくらいか

問題はレイアウト完了がいつになるかどうやって知るかだが
onload と同じと考えていいのだろうか?
そうでなければ、適当に時間を空けながら数回くらい呼び出す、という原始的な方法しかないのかな

最初は内容全体を position:absolute;(または fixed) bottom:0
で下端揃えに配置した上で
(残念ながら上側の切り取られた部分へはスクロールできなくなる)、
後から js でスタイルを変えるというのはあるかも

116 :Name_Not_Found:2016/12/03(土) 20:14:58.74 ID:???
>>115

$('.modal-scroll').scrollTop(99999);

一応これで動作はしたのですが、もっとキレイで軽いコードにできないでしょうか

117 :Name_Not_Found:2016/12/03(土) 20:21:55.94 ID:???
ifもわからん奴に三項演算子突き付けるのはオナニーでしかないわ

118 :Name_Not_Found:2016/12/03(土) 20:46:46.01 ID:???
>>116
キレイで軽いコードってどういう意味?

それが汚くて重いって言いたいんだと思うけど、
それは何に比べて?

どうもあんたの経験が少ないように思えてならない。

119 :Name_Not_Found:2016/12/03(土) 20:47:31.37 ID:???
>>117
あんたはifよりも三項演算子が
難しいって思ってるの?

120 :Name_Not_Found:2016/12/03(土) 21:47:55.10 ID:???
>>118
何が言いたいんだコイツ

121 :Name_Not_Found:2016/12/03(土) 21:59:07.16 ID:???
>>109
elm.scrollTop = elm.scrollHeight;
じゃダメなのか?

122 :Name_Not_Found:2016/12/04(日) 00:17:31.94 ID:???
if (document.xxx !== "undefiend") {
xxx = document.xxx;
} else if (document.mozXxx !== "undefined") {
xxx = document.mozXxx;
} else if (document.webkitXxx !== "undefined") {
xxx = document.webkitXxx;
}

これを短く書きたいのですがどうしたらいいですか?

123 :Name_Not_Found:2016/12/04(日) 00:26:30.62 ID:???
>>122
var d = document;
var u = "undefiend";
if (d.xxx !== u) {
xxx = d.xxx;
} else if (d.mozXxx !== u) {
xxx = d.mozXxx;
} else if (d.webkitXxx !== u) {
xxx = d.webkitXxx;
}

124 :Name_Not_Found:2016/12/04(日) 00:27:58.72 ID:???
xxx = document.xxx ? document.xxx : document.mozXxx ? document.mozXxx : document.webkitXxx ? document.webkitXxx : '';

125 :Name_Not_Found:2016/12/04(日) 00:52:09.01 ID:???
お前らマジで技術力低すぎだろ・・・ってかやっぱりこっちのスレだな。
普段から短い書き方をしてるjQuery使いには敵わないか。

"undefiend" は undefiend の間違いだろ?
そうでなければ、その例でベンダープレフィックスを使ってるはずがない。

undefinedが正しいとして、普通に書けばこうだろ
xxx = document.xxx || document.mozXxx || document.webkitXxx;

126 :122:2016/12/04(日) 00:52:36.28 ID:???
>>123-124
ありがとうございます
やっぱりこれを短くするには三項演算子使わないとだめですか
クロスブラウザ問題かかえてるJSなので
なんかそのへん考慮した書き方提供してるのかなと思ったのですが

127 :122:2016/12/04(日) 00:57:25.96 ID:???
>>125
ありがとうございます
自分もそのコードなのかなと思ってやったのですが
そのコードではundefinedが返ってきてしまったので>>122のようなコードをかきました
本来はfalseが返ってくるのですがfalseだからまた事情が違うのでしょうか?

128 :Name_Not_Found:2016/12/04(日) 01:00:42.60 ID:???
三項演算子にしてもor使うにしても
元のコードと意味が変わるからダメじゃないかね

xxx=false,mozXxx=true,webkitXxx=trueの場合にfalseになって欲しいんでしょ?

129 :Name_Not_Found:2016/12/04(日) 01:01:31.95 ID:???
あとはもし本当に"undefined"であるというならこうだな。
まずないと思うが

var name = ['xxx', 'mozXxx', 'webkitXxx'].find(function(i) {
return document[i] !== "undefined"
})]
xxx = document[name]

もしくはこうとかな。

xxx = ['xxx', 'mozXxx', 'webkitXxx'].filter(function(i) {
return document[i] !== "undefined"
})][0]

アロー関数使えばもうちょっとだけ短くなる。

130 :Name_Not_Found:2016/12/04(日) 01:02:29.38 ID:???
>>125
m9(^Д^)プギャー

131 :Name_Not_Found:2016/12/04(日) 01:03:23.28 ID:???
>>128
説明不足ですみません
定義されていて、かつundefined以外ならその値をとりたいです
Firefoxで見た場合に
xxx=undefined mozXxx=false webkitXxx=undefinedならfalseが欲しいです

132 :Name_Not_Found:2016/12/04(日) 01:11:00.75 ID:???
>>126
> クロスブラウザ問題かかえてるJSなので

クロスブラウザを考えてるなら、jQueryとかクロスブラウザに
対応したライブラリがどうなっているかを考えたほうがいい。

答えを言うと、この場合は短く書くことを目指すんじゃなくて、
クロスブラウザであることを意識させないようにするんだよ。

その前に、まずすでに誰かが作ったポリフィルがないかを探す。
次にその問題に対してクロスブラウザを吸収してくれるライブラリがないかを探す。
それでもなければ、ブラウザ間の違いを吸収するためのライブラリを自分で作る。

自分で作る場合は、例えば、getXxx()という関数を作れば、
コアの部分はgetXxx()という呼び出しで済むだろ?

コードを短くすることには意味があるからやるべきだが、
クロスブラウザを理由にしてはいけない。そんな考えでいると
「短くしたがそれでも残ってしまうブラウザ間の互換性を吸収するためのコード」が
あちこちに散らばってしまうぞ。

クロスブラウザに対応するならば、その違いを吸収して見えなくしてしまう
ライブラリを作るべきだ。そのライブラリの中は多少長くても問題はない。

133 :122:2016/12/04(日) 01:11:11.96 ID:???
というかプロパティ名隠す必要なかったですね、すみません
isFullScreen = document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen;
ちょっとコードが難しくてついていけないので
いただいた解答整理してまた出直してきます
答えていただいた方ありがとうございました

134 :Name_Not_Found:2016/12/04(日) 01:13:28.71 ID:???
>>130
少しレスが遅かったようだなw

135 :Name_Not_Found:2016/12/04(日) 01:16:34.32 ID:???
ぶっちゃけコード短くするメリットなんかなんもないぞ
難読コードは半月も触らなければ確実に何やってるか忘れるからな
メンテの時に思い出す時間が無駄になるだけ
というか読むのが面倒だとメンテする気すらなくなる

長くてもパッとみてすぐ思い出せるのが一番の正解

136 :Name_Not_Found:2016/12/04(日) 01:18:00.63 ID:???
>>133
それだったら、>>129の "undefined" を undefined にするだけだな。
他にもキーが有るかどうかで調べる方法もある。
例えば i in document とかな

137 :Name_Not_Found:2016/12/04(日) 01:19:31.59 ID:???
>>135
難読コードっていうのは、変数名を極端に短くしたり
意味がないコードを割り込ませたりして、
可読性を低くすることであってすることであって
短いコードのことではない。

短いコードは可読性が高い。

138 :Name_Not_Found:2016/12/04(日) 01:28:08.06 ID:???
それはねーわ
省略しまくりのブックマークレットとか読むのめんどくせーし

139 :Name_Not_Found:2016/12/04(日) 01:29:04.80 ID:???
>>138
それは>>137でも書いたように
変数名を極端に短くしているのと
改行とインデントがないのが原因なんだが?

140 :Name_Not_Found:2016/12/04(日) 04:56:22.31 ID:???
短くしてるのが原因?
適当なこと言ってんじゃねーよ……
変数名の長さは関係ないから。
1000文字だったら読みやすいのか?
適切な文字数でも意味不明な乱数列だったら同じくらい読みにくいだろ。
それが原因だよ。
それにまだその中ではできるだけ短い方が読みやすい。

141 :Name_Not_Found:2016/12/04(日) 04:57:29.60 ID:???
他人を否定する事に重きを置いちゃって
真のない駄論を展開するのはもう辞めろ!”!

142 :Name_Not_Found:2016/12/04(日) 23:25:38.41 ID:???
>>111
普通は、DBで操作するから、DBのレコードにする。
O/Rマッパーで言えば、クラス・構造体

構造体{
code; // キー
pref;
city;
address;
}

郵便局のサイトに、郵便番号データの説明がある

143 :Name_Not_Found:2016/12/05(月) 01:10:36.28 ID:???
>>111はzipcode(郵便番号)に住所が格納されている事にとても違和感がある

144 :Name_Not_Found:2016/12/05(月) 01:23:36.40 ID:???
そもそも郵便番号っていうのはPostal Codeだからな。
Zip Codeっていうのはアメリカ限定だ

145 :Name_Not_Found:2016/12/05(月) 01:48:22.47 ID:???
>>144
日本郵便はURLにzipcodeと書いてる
http://www.post.japanpost.jp/smt-zipcode/
Postal Code(postcode)は英国でよく使われるそうだが、対象の国によって英訳が変わるだけなのでは…
http://ejje.weblio.jp/content/郵便番号

146 :Name_Not_Found:2016/12/05(月) 03:30:44.32 ID:???
リンダ「郵便番号ってなにかしら?」→花子「日本のzip codeよ」
マイケル「郵便番号ってなんだい?」→太郎「ちょっと待ってね・・・辞書辞書・・・postal codeだね」

147 :Name_Not_Found:2016/12/05(月) 05:39:06.28 ID:???
今時リンダとかいう名前の女子はいない
花子も太郎もそうだが、なぜマイケルだけ違う?

148 :Name_Not_Found:2016/12/05(月) 09:57:55.17 ID:???
山田花子と木村太郎に謝れ!

149 :Name_Not_Found:2016/12/05(月) 19:34:37.26 ID:???
GoogleでLindaで画像検索してみろよw

150 :Name_Not_Found:2016/12/05(月) 19:58:15.17 ID:???
Linda は、並列プログラミング言語であり、Prolog、C言語、Javaなどの他の(逐次的)言語上に拡張として実装される。

151 :Name_Not_Found:2016/12/06(火) 12:16:14.53 ID:???
正規表現って一度で済ませた方が良いのでしょうか

 文字列.match(/パターンA|パターンB|パターンC|パターンD|パターンE/)

それとも小分けにする方が良いのでしょうか

 文字列.match(/パターンA/)
 文字列.match(/パターンB/)
 文字列.match(/パターンC/)
 文字列.match(/パターンD/)
 文字列.match(/パターンE/)

152 :Name_Not_Found:2016/12/06(火) 12:19:20.55 ID:???
ケース・バイ・ケース
つまらんこと質問するなよw

153 :Name_Not_Found:2016/12/06(火) 13:08:09.21 ID:???
>>151
一度に処理したいなら一つの正規表現にするし、分岐処理するなら複数に分ける
画一的に考えるべきではない

154 :Name_Not_Found:2016/12/06(火) 17:54:56.49 ID:???
ありがとうございます
セオリーがあるかどうか知りたかったので助かりました

155 :Name_Not_Found:2016/12/07(水) 20:49:28.70 ID:???
そんな事を聞こうと思う奴はお前しか居ない。

156 :Name_Not_Found:2016/12/07(水) 23:50:54.48 ID:???
あるインライン要素が自動改行されているかどうかを調べる方法はありますか?
例えば
<p>あいうえお<span id="test">かきくけこ</span>さしすせそ</p>
みたいなソースがあったとして、#span内で自動改行されているかどうか調べたいです。

157 :Name_Not_Found:2016/12/08(木) 01:24:28.68 ID:???
var o = {
333: "a",
222: "b"
555: "c",
111: "d",
444 "e"
}

これをfor inで順番に出力すると
111 "d"
222 "b"
333 "a"
444 "e"
555 "c"

このようにご丁寧にソートされたかのような順番になりますが
このオブジェクトのまま入れた順番のまま出力することは可能でしょうか?
下のように配列にすれば可能なのですが変更しなくていいなら変更したくないので

var o = [
[333, "a"],
[222, "b"],
[555, "c"],
[111, "d"],
[444, "e"]
];

158 :Name_Not_Found:2016/12/08(木) 04:15:58.96 ID:???
for-inで配列に突っ込んでforでオブジェクトに戻すまでの処理を間に挟めば
変更とか考える必要なくね

159 :157:2016/12/08(木) 04:54:47.45 ID:???
不可能ということでいいでしょうか?

160 :Name_Not_Found:2016/12/08(木) 07:47:58.20 ID:???
>>157
無理。オブジェクトに順番の概念はないと思った方が良い。
代わりに new Map がある。

161 :Name_Not_Found:2016/12/08(木) 09:31:34.60 ID:???
>>157
var o = {
0: { 333: "a" },
1: { 222: "b" },
2: { 555: "c" },
3: { 111: "d" },
4: { 444 "e" }
};

162 :Name_Not_Found:2016/12/08(木) 11:07:40.72 ID:???
>>159
厳密にいえば、
非負整数に変換できるキー(1, 5, 10, 9999 など)なら不可能。
非負整数に変換できないキー(a, b, a123, -1 など)なら可能。

つまり
var o = {
a333: "a",
a222: "b",
a555: "c",
a111: "d",
a444: "e"
};
みたいにしてやればできる。

163 :Name_Not_Found:2016/12/08(木) 13:18:05.24 ID:???
>>162
その挙動は実装依存ではなくて?

164 :Name_Not_Found:2016/12/08(木) 13:30:03.21 ID:???
実装依存だね
for-inは順番は保証されないと仕様に明記されてる
ちなみにObject.keys()なら順番は保証されるよ

165 :Name_Not_Found:2016/12/08(木) 14:43:16.50 ID:???
>>164
MDN (日本語)の記述は誤りってこと?
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
「for...in ループで提供されるものと同じ順番で返します」

166 :Name_Not_Found:2016/12/08(木) 15:05:40.21 ID:???
実装依存だが、挿入された順、ただし配列インデックスは先に列挙するというデファクトがある。

167 :Name_Not_Found:2016/12/08(木) 15:17:14.90 ID:???
>>165
ECMAScript5では、
for-in と Object.keys() の順番は実装依存だけどお互いに同じ順序であることが保証されている。
ECMAScript6では、
for-in の順番は実装依存。Object.keys() の順番は>>166の言う通り。
(しかし実際には for-in も>>166の順番で回るよう実装しているブラウザがほとんど)

168 :Name_Not_Found:2016/12/08(木) 15:20:27.70 ID:???
だからMDNは情報が古いか、事実上の実装に基づいて記述していると思われる。

169 :Name_Not_Found:2016/12/08(木) 15:37:33.78 ID:???
メンテするボランティアが皆細部の変更まで網羅できてると思ったら大間違い
MDNは昔から賞味期限切れと独自実装の塊でしょうが

170 :Name_Not_Found:2016/12/08(木) 20:50:30.92 ID:???
<DIV id="A">
AAA
</DIV>

<DIV id="B">
BBB
</DIV>

<DIV id="C">
CCC
</DIV>

と3つのブロックがあって、
A, B, Cの順序が一定期間で変わる(但しランダムではない、決まった順序がある 例えば、ABC→BCA→CAB とローテーション)ようなスクリプトはどう書けばいいでしょうか?

171 :Name_Not_Found:2016/12/08(木) 21:23:54.08 ID:???
>>170
一番上の要素をappendChildし続ける

172 :167:2016/12/08(木) 21:26:05.40 ID:???
ごめん、嘘ついてた…。
ECMAScript5でも6でも、for-in, Object.keys() は同じ順序だけど、その順番は実装依存とされている。
一方 Object.getOwnPropertyNames() は、ECMAScript6で>>166の通り順番が定義されている。(こっちと勘違いしてた、ごめん。)

だから、MDNの Object.keys() の説明は正しい。
ただ、Object.getOwnPropertyNames() のページにも同じことが書いてあるけど、こっちはたぶん間違い。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames

http://kangax.github.io/compat-table/es6/ の own property order の欄にサンプルコードがあるから、それを見ればわかると思う。
というか俺も自信ないから後は自分で仕様書見て確かめてください。

173 :Name_Not_Found:2016/12/08(木) 23:28:06.70 ID:???
>>172
フラフラ言うこと変えずに仕様見てから言え。
O.keysもO.getOPNも同じく[[OwnPropertyKeys]]を叩いて、>>166の挙動になってる。
for-inだけ違う。

174 :Name_Not_Found:2016/12/09(金) 06:58:39.42 ID:???
お前こそ仕様を見ろ

175 :Name_Not_Found:2016/12/09(金) 07:58:57.04 ID:3AkeVjLh
> 12.6.4 The for-in Statement
> The mechanics and order of enumerating the properties (step 6.a in the first algorithm, step 7.a in the second) is not specified.
> http://ecma-international.org/ecma-262/5.1/#sec-12.6.4
(和訳) プロパティを列挙する機構と順序(1番目のアルゴリズムのステップ6a、2番目のステップ7a)は示されない。

> 15.2.3.14 Object.keys ( O )
> If an implementation defines a specific order of enumeration for the for-in statement, that same enumeration order must be used in step 5 of this algorithm.
> http://ecma-international.org/ecma-262/5.1/#sec-15.2.3.14
(和訳) 実装においてfor-in文の列挙順序が具体的に定義されている場合は、それと同じ列挙順序をこのアルゴリズムのステップ5でも使用しなければならない。

176 :Name_Not_Found:2016/12/09(金) 08:28:37.82 ID:???
>>174
口の悪い赤ちゃんだな
手取り足取り教えてやらないと分からないのか?
https://tc39.github.io/ecma262/#sec-object.keys
https://tc39.github.io/ecma262/#sec-enumerableownproperties
https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots-ownpropertykeys

177 :Name_Not_Found:2016/12/09(金) 09:41:08.08 ID:???
ちょろいなw

178 :Name_Not_Found:2016/12/09(金) 09:42:16.40 ID:???
つまりfor-inとkeysの順番は同じってことか

179 :Name_Not_Found:2016/12/09(金) 10:06:08.44 ID:???
keysも[[OwnPropertyKeys]]を叩いてるけど、その後にfor-inの順番に並び替えろって書いてあるな(7.3.21EnumerableOwnProperties の ステップ5).
なんちゅー面倒な仕様なんだ

180 :Name_Not_Found:2016/12/09(金) 13:29:38.90 ID:???
面倒だから、実装するときは for-in の順番を [[OwnPropertyKeys]] に合わせることにしちゃえ、ってことになるだろうな

181 :Name_Not_Found:2016/12/09(金) 13:32:28.01 ID:???
>>172は ES5, ES6 に言及しているのでES8(ES2017)を持ち出す>>176と話が食い違って当然。
それなら「仕様見てから言え」ではなく、「ES8(ES2017)では〜」と指摘すべき。
まだ承認されてもいない先行仕様であるES8(ES2017)を持ち出されてもブラウザがそれに従う理由はないし、仕様は後で変わる可能性があるが。

ES6 (ES2015)

> 19.1.2.14 Object.keys ( O )
> If an implementation defines a specific order of enumeration for the for-in statement, the same order must be used for the elements of the array returned in step 4.
> http://www.ecma-international.org/ecma-262/6.0/#sec-object.keys

ES7 (ES2016)

> 19.1.2.14 Object.keys ( O )
> If an implementation defines a specific order of enumeration for the for-in statement, the same order must be used for the elements of the array returned in step 3.
> http://www.ecma-international.org/ecma-262/7.0/#sec-object.keys

for-in, Object.keys の列挙順は ES5, ES6, ES7 において全て同じ。
ES8(ES2017)は承認されてから読めば良い。

182 :Name_Not_Found:2016/12/09(金) 18:23:56.02 ID:???
>>181
承認されてもいない先行仕様にブラウザが従う必要がない???
なーに言ってんだよ君
ESの仕様はもはやリビングスタンダードだから。
それにこの仕様、だれかが思いつきで日々変更してるとでも思ってるの?

2ヶ月に一回のミーティングで主にブラウザベンダー達が持ち込んだ案が
主にブラウザベンダー達によって承認されて仕様になってるんだけど?
そのミーティングで決定した瞬間から、それは立派な仕様でブラウザはそれに従うのよ。

君、その発言は、ECMAScript、そしてコミュニティやブラウザを舐めてると取られても仕方ないぞ。
「後で変わる可能性がある」じゃない。
変わった後の仕様がそれなのよ。なぜ分からない?

183 :Name_Not_Found:2016/12/09(金) 21:40:13.25 ID:???
> >>172は ES5, ES6 に言及しているのでES8(ES2017)を持ち出す>>176と話が食い違って当然。
まあ、そうなんだろうな

184 :Name_Not_Found:2016/12/10(土) 11:44:39.15 ID:???
ES8(ES2017)でもないでしょ
最新のドラフト
いい加減バージョンでしか考えられないのはよくないね

185 :Name_Not_Found:2016/12/10(土) 12:18:12.89 ID:???
もはやバージョンは各機能ごとのレベルからなる多次元空間であり、役に立たないので、
「特定のブラウザの特定の日付リリースが達しているレベル」
で分類した方が実用的かもな

186 :Name_Not_Found:2016/12/10(土) 12:30:50.53 ID:???
でこうやって先行実装なんか使うから、
将来仕様が変わって、互換性なくなったりするんやで?
そうしてでてくるのが、非互換性を吸収するライブラリ

187 :Name_Not_Found:2016/12/10(土) 14:45:28.47 ID:???
ドラフトでも何でもいいが、ECMAScript6を読んでいる人に「仕様を見ろ」で済ますのはあまりにもナンセンス
相手の文章は読まず、自分の意見はいわなくても伝わると思っているのだろうかね

188 :Name_Not_Found:2016/12/10(土) 15:45:02.74 ID:???
適当なことを言って仕様を見ろって言えば楽じゃん?

それでそいつが仕様を見るだろ?
何も言わなければ俺が正しいってことだし、
ムキーってなって何か言い返してくれば、
俺は調べずに正しい情報を得られる

189 :Name_Not_Found:2016/12/10(土) 16:14:33.70 ID:???
そもそもECMAScript6を読んでいるっているのが変なのでは?
今W3CのHTML5.0の仕様を見てるようなもんでしょ

190 :Name_Not_Found:2016/12/10(土) 18:43:57.27 ID:???
>>189
そう思うなら、そういえばいいい

191 :Name_Not_Found:2016/12/10(土) 18:52:42.70 ID:???
どうして仕様を見ろって言うか分かる?
どうしようもないからなんだよw

192 :Name_Not_Found:2016/12/10(土) 18:55:46.97 ID:???
>>190
何が言いたいのか分からない
今W3CのHTML5.0の仕様を見てるようなものだと思うのか思わないのか
今W3CのHTML5.0の仕様を見てるようなものは悪いと思うのか思わないのか
それを簡単な理由つけて述べてくれるとよく分かる

193 :Name_Not_Found:2016/12/10(土) 19:02:02.98 ID:???
仕様を読んで仕様を理解していても
実装されてなかったら
どうしようもないんだよね

194 :Name_Not_Found:2016/12/10(土) 19:04:45.49 ID:???
>>192
元はと言えば>>173が発端
>>173が「最新のESドラフトを見ろ」といったならそれはそれで一つの意見だと思う
蓋を開けてみれば「フラフラ言うこと変えずに仕様見てから言え」は「ESドラフトを見ろ」だったわけで>>172がそれに気が付けというのは無理な話

195 :Name_Not_Found:2016/12/10(土) 21:52:34.05 ID:???
久々に来たが相変わらず荒れてるなw

196 :Name_Not_Found:2016/12/11(日) 00:13:52.43 ID:???
javascriptって手軽だなら、間違った、あるいは昔は問題なかったが、
今のダメなやり方とかネットに山のように玉石混交状態情報があるからな
さらにブラウザごとの挙動とか、言語自体の仕様とか、個人の好みとか
荒れる要素がいっぱいある。
オレは、とりあえず、javascripの書籍の内容が正しいとして覚えて、
いろいろと自分で手を動かして勉強していっている。

197 :Name_Not_Found:2016/12/11(日) 05:38:38.76 ID:???
>>193,194
確かに他の件ならそうかもしれないが、今回の件は例外だ。
これは新しい機能というわけでもないし、ぶっちゃけ既存の実装に影響を与えるものでもない。

本件未定義動作を無くそうというES4の頃から存在した草案からの長い流れと、
デファクトを仕様に落とし込もうというES6-7からの勢いが生み出してる動きなんだから、
最新の結論を参照しないということはありえないことだろう。

それと、「フラフラ言うこと変えずに仕様見てから言え」
は別にドラフト見ろ!と言いたかった気持ちは微塵も含まれていない。
それとこれとは全く関係ない話。
自分だけで確信が持てないなら、根拠となった仕様の部分を提示しろと言ってる。

そうでなければ>>172が何をどういう流れで見てそういう考えに至った(しかも曖昧)のかわからないだろう。
批判して当然。この部分に関しては俺の非は小さい。

198 :Name_Not_Found:2016/12/11(日) 09:15:52.05 ID:???
hoge.addEventListener("click", foo, false);
window.addEventListener("resize", foo, false);

これをまとめて書く方法ないですか?
(hoge.onclick|window.onresize).addEvent(foo);
イメージ的にはこんな感じで
ないですよね?さすがに

199 :Name_Not_Found:2016/12/11(日) 11:23:11.75 ID:Tn2z+E9L
【質問】JSのDOMContentLoadedが発火しません。

■事象
iframeを動的に作成(createElement)して、
addEventListenerに「DOMContentLoaded」を追加しているが、
iframeのsrc先のDOM読み込み完了時にイベントが発生しません。

200 :Name_Not_Found:2016/12/11(日) 11:24:13.41 ID:Tn2z+E9L
>199
■コーディング
var parent_obj = document.getElementById("top");
var obj = document.createElement('iframe');

if(obj.addEventListener){
obj.addEventListener("DOMContentLoaded",xxx);//★これが発火しない
//obj.addEventListener("load",xxx);//☆遅い
}else if(obj.attachEvent){
obj.attachEvent("onload",xxx);
}else{
obj.onload = xxx;
}

parent_obj.appendChild(obj);
obj.src = "URL";

function xxx(e){
alert("発火");★これが発火しない
}

201 :Name_Not_Found:2016/12/11(日) 11:24:32.43 ID:Tn2z+E9L
>>199
>>200

■やりたい事
addEventListener("load",xxx)だと画像読み込み後にイベントが発生するので、遅いです。
iframeのソースが返ってきた直後にイベントを呼びたいのです。

■質問
なぜDOMContentLoadedが発火しないのでしょうか。
コーディングが悪いのでしょうか?

それともcreateElement('iframe')はDOMContentLoadedのイベントに対応していないのでしょうか?
その場合、上記【やりたい事】の代案はございますでしょうか?

202 :Name_Not_Found:2016/12/11(日) 12:14:07.53 ID:???
君、マルチしてるね
マルチURLをすべて明記してくれたら答えてあげよう

203 :Name_Not_Found:2016/12/11(日) 12:34:18.51 ID:???
>>197
話が噛み合ってないようだが、俺がいいたかったのは「相手の立場で物事を考えろ」と言うことだ
最新仕様を常に見ているあなたにとって当たり前の事でもES5,ES6を読み始めた>>172にとっては「最新の結論を参照しないということはありえない」は当然のように考えつく事ではない
>>176の存在すら知らなかったかも知れん

> 自分だけで確信が持てないなら、根拠となった仕様の部分を提示しろと言ってる。
それなら、始めからそういえばいいだろう
「仕様を読め」といわれれば「仕様の解釈が間違っている」と指摘されたと考える
ところが、>>175,181で示されているように ES5, ES6 では for-in, Object.keys の列挙順は同じで>>172に矛盾はない
「ECMAScript5でも6でも」と172で明言してあったので他の仕様書を読むことには思い至らない
172はさぞ困った事だろう

204 :Name_Not_Found:2016/12/11(日) 12:39:35.22 ID:???
>>199-201
そもそも、マルチポスト先で答えとなる回答が寄せられているようだが
https://teratail.com/questions/58409
http://qiita.com/dounatte/items/fcd295d52124e0b5d795
http://ja.stackoverflow.com/questions/31078/

205 :Name_Not_Found:2016/12/11(日) 18:50:10.32 ID:???
>>203
だからもう一度言うが、
俺は>>172やその他の者にドラフトを当たり前に読むことを期待してもいないし、ましてや押し付けてはいない。
これはあくまで俺の中の基準であり、だから俺は俺として発言してるだけ。
例えば「あり得ない」「当たり前」などと言ってるのは、知ってて当たり前ということではなく、
そういう前提があってこういう考えがあるなら、俺が言ってきたこの結論や意見が出て「当たり前」ということ、
つまり俺の考えを(わざとしっかりと)説明してるに過ぎない。

『「仕様を読め」といわれれば「仕様の解釈が間違っている」と指摘されたと考える』
つまりなんだ、
>>172は一生懸命長い時間をかけて色々調べ考え直し、
(おそらく)読み慣れていない仕様書まで読んで答えを出したのに、
読み間違ってると思わせたら、混乱させるし、自身をなくさせるじゃないかということだな

君は>>172のお母さんかなにかか?
俺は知ってる立場、>>172は知らない立場、だから俺が全面的に>>172のような存在を考慮して
傷つけないようにすべきだと言いたいのだろう?
すまないが、俺はそこまでここで優しい問答をしようとは思っていない。
自分が正しいと思ったら、しっかり主張したり言い返さなきゃ。
俺はそれには正面から付き合う。
俺はここの住民をある程度尊重してるし、それが俺にとっての誠実さだ。

206 :Name_Not_Found:2016/12/11(日) 19:27:51.45 ID:???
>>198
イベント追加するのは2つだけ?
なら普通に書くのが一番短いと思う

207 :Name_Not_Found:2016/12/11(日) 21:00:41.32 ID:Tn2z+E9L
>>202
>>204

クロスオリジン、クロスドメインがやりたい事の前提です。
その場合、DOM系のイベントが使えないのですね。
それでは上記【やりたい事】の代案はございますでしょうか?

208 :Name_Not_Found:2016/12/11(日) 21:04:44.04 ID:???
>>207
代案はある
けどお前には教えない
せいぜいいっぱいマルチして頑張れよ

209 :Name_Not_Found:2016/12/11(日) 22:09:16.13 ID:???
質問です。
なんとなくjQueryを使わずにdocument.body.append("test")と入力したら実際にページに文字が追加されたのですが、これって標準の仕様なのでしょうか?
検索するにも、jQueryやappendChildの方がヒットしてしまい、うまく検索できません。
ちなみに、ChromeとFirefoxで表示されました。

210 :Name_Not_Found:2016/12/11(日) 22:27:05.01 ID:???
>>209
ほらよ。新しい非互換性の種だ。
IE、Safari、殆どのスマホでつかえねーから気をつけな

http://stackoverflow.com/questions/39839270/new-append-method-on-dom-elements

https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/append

211 :Name_Not_Found:2016/12/11(日) 22:35:17.08 ID:???
>>209
そんな仕様は有りません、明確に記述して下さい
var n = document.createTextNode("test");
document.body.appendChild(n);

212 :Name_Not_Found:2016/12/11(日) 22:35:45.90 ID:???
>>205
お前の中の基準でしか物事を捉えられないのならお前にとってはそれでいいのだろう
だが、他人にアドバイスや注文をつけるべきではないな
他人と前提条件が食い違ってもすり合わせようと思わず、我が道を行くだけなのだから

213 :Name_Not_Found:2016/12/11(日) 22:36:36.72 ID:???
>>210
ありがとうございます!
カンマで一気に追加できるのは便利そうですね。
使えないブラウザが多いとのことなので、気をつけて使いますm(_ _)m

214 :Name_Not_Found:2016/12/11(日) 23:56:48.49 ID:???
>>211
                        ∩___∩
     __ _,, -ー ,,             / ⌒  ⌒ 丶|     今、どんな気持ち?
      (/   "つ`..,:         (●)  (●)  丶        ねぇ、どんな気持ち?
   :/       :::::i:.        ミ  (_●_ )    |
   :i        ─::!,,     ハッ  ミ 、  |∪|    、彡____
     ヽ.....:::::::::  ::::ij(_::●    ハッ    / ヽノ      ___/
    r "     .r ミノ~.      ハッ   〉 /\    丶
  :|::|    ::::| :::i ゚。            ̄   \    丶
  :|::|    ::::| :::|:                  \   丶
  :`.|    ::::| :::|_:                    /⌒_)
   :.,'    ::(  :::}:                    } ヘ /
   :i      `.-‐"                    J´ ((

215 :Name_Not_Found:2016/12/11(日) 23:59:39.96 ID:???
>>213
> カンマで一気に追加できるのは便利そうですね。
あれ? DOM APIのくせになんでそんな ”本質的には必要ないけどあれば便利" という
機能をつけたの? 珍しいじゃん。って思ってたら

jQueryのappendでもできたんだな。今まで気づいてなかったw
http://api.jquery.com/append/

まあ大抵の便利な機能はjQueryのパクリw

216 :Name_Not_Found:2016/12/12(月) 03:01:19.60 ID:???
Chromeはdocument.headすら解釈できないゴミ

217 :Name_Not_Found:2016/12/12(月) 04:59:51.45 ID:???
>>212
すり合わせも何もない。
まずはこちらが自分の意見をハッキリ言わないと始まらないということだ。
それと何度も言わせるな、アドバイスや注文をしつこくしてはいない。
自分の主張を客観的にみての良い、正しい、そうであるべき、を述べたまで。

218 :Name_Not_Found:2016/12/12(月) 12:19:37.76 ID:???
>>217
自分のレス(>173)が客観的にどう受け取られるかを考えた方がいいんじゃない?

219 :218:2016/12/12(月) 12:26:47.33 ID:???
>218は言葉足らずだったので補足

> それと、「フラフラ言うこと変えずに仕様見てから言え」
> は別にドラフト見ろ!と言いたかった気持ちは微塵も含まれていない。
> それとこれとは全く関係ない話。
> 自分だけで確信が持てないなら、根拠となった仕様の部分を提示しろと言ってる。
>172だけ読んでも「自分だけで確信が持てないなら、根拠となった仕様の部分を提示しろ」とは読めないよ
簡単にまとめれば、「正しい日本語を使いなさい」って話でしょ

220 :218:2016/12/12(月) 12:29:07.80 ID:???
× >172だけ読んでも
○ >173だけ読んでも

221 :Name_Not_Found:2016/12/12(月) 16:04:44.81 ID:???
以下のcrewsリストから
maleがtrueならgenderがmaleだけを、femaleがtrueならfemaleだけを
両方trueなら全ての配列を返す方法はどうすればよいでしょう?

const crews = [
{
name: 'a',
gender: 'male'
},
{
name: 'b',
gender: 'male'
},
{
name: 'c',
gender: 'female'
},
{
name: 'd',
gender: 'female'
}
];

222 :Name_Not_Found:2016/12/12(月) 16:10:42.48 ID:???
>>221
一体何のために関数が有るんだ?

223 :Name_Not_Found:2016/12/12(月) 16:14:35.73 ID:???
>>221
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

224 :Name_Not_Found:2016/12/12(月) 21:48:02.92 ID:???
>>221
maleとfemaleの両方がtrueなら
ホモを返すべき

225 :Name_Not_Found:2016/12/12(月) 22:06:39.76 ID:???
じゃあmaleとfemaleの両方がfalseだったらどうするのさ

226 :Name_Not_Found:2016/12/13(火) 01:02:45.14 ID:???
undefinedで…

227 :Name_Not_Found:2016/12/13(火) 02:43:56.24 ID:???
under constructionかも

228 :Name_Not_Found:2016/12/13(火) 04:08:57.50 ID:???
var flag = 1;
function changeFlag() {
  if (flag) {
    flag = 0;
  } else {
    flag = 1;
  }
}

このflag変数をstaticにしてchangeFlag()内に閉じ込めたいのですが可能でしょうか?
可能であれば見本をご提示いただけるとありがたいです。
それと、いつのまにかclassが実装されてるようですが、もう普通に使っちゃっても大丈夫でしょうか?

229 :Name_Not_Found:2016/12/13(火) 09:32:55.37 ID:???
flag = flag ? 0 : 1;

230 :Name_Not_Found:2016/12/13(火) 09:33:31.38 ID:???
flag = 1 - flag

231 :Name_Not_Found:2016/12/13(火) 09:37:07.87 ID:???
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

Chrome 42.0[1] 49.0
Firefox (Gecko) 45 (45)
Edge 13
Internet Explorer No support
Opera No support
Safari 9.0

スマホ・タブレット
Android No support
Safari Mobile 9
Chrome for Android 42.0[1] 49.0

232 :Name_Not_Found:2016/12/13(火) 09:38:31.78 ID:???
IEなどを切り捨てる訳にはいかないプロはbabelを使っている。
babelを使えばclassなどが普通に使える

233 :Name_Not_Found:2016/12/13(火) 10:13:51.77 ID:???
flag = flag===1 ? 0 : 1

234 :Name_Not_Found:2016/12/13(火) 10:33:04.65 ID:???
>>230
これが一番すき☺

235 :Name_Not_Found:2016/12/13(火) 10:56:18.73 ID:???
>>219
君の言っていることは分からないでもないが、もはやイチャモンに等しいよ。
俺は最初から自分は完璧だとか、自分に非が全く無いとは主張してはいない。
しかしそれがここまで突っ込まれるほどのことだとも思わない。

逆に俺が一度でも君の不勉強を批判したか?
俺は君の立場がわかるし、俺の適当さと君の無知さの罪の大きさはそう変わらないと思ってるから君を批判しない。
君は他人の立場云々言うけれど、一番自分の事しか見えていないのは君自身だよ。

そもそも君は>>172の一体何なんだ?
>>173>>172への効果を期待して書いたもので、仮に問題があったとしても
俺と>>172との問題に、君がそこまで口出してくるのはおかしい。

236 :Name_Not_Found:2016/12/13(火) 11:33:46.04 ID:???
>>235
君は徹頭徹尾「自分は悪くない」と主張していたように読めたけどね
俺は>>172と何のゆかりのない者だけど、このスレは>>172以外も読む公共の場だから一読者として口を出したまで
>>173>>172だけが参考にすると思っているなら掲示板じゃなく、個人チャットでも使うべきだよ

> 君は他人の立場云々言うけれど、一番自分の事しか見えていないのは君自身だよ。
俺が君の立場なら>>173のような言い方はしないってだけだよ
仕様でいい加減な事は言いたくないし、ES6とESドラフトのURLを出して簡単な説明を添えるぐらいはやるよ
記憶で仕様の内容を発言すると、「それは違う」云々で無駄にスレを伸ばすのは過去の経験から分かり切っているからね

237 :Name_Not_Found:2016/12/13(火) 18:37:23.69 ID:???
ブラウザがCSSのflexに対応しているかどうかで処理を分岐させたいのですが、JavaScriptでどうやったら調べられますか?

238 :Name_Not_Found:2016/12/13(火) 18:43:49.76 ID:???
それはcss側でハックすべきじゃ

239 :Name_Not_Found:2016/12/13(火) 19:34:45.83 ID:???
>>236
すまないが、俺は君の性格の悪さを起因する被害妄想にはこれ以上ついて行けない。
>>197でも「この部分に関しては俺の非は小さい」ときちんと回りくどく書いている。
ただ性根の曲がった君が俺の発言の一部をネガティブに解釈することは俺にはどうしようもできない。

正直言って君と俺とは同じくらいひねくれてて間違っている。
だから先にも言ったようにお互いこの件に関して非難できる立場ではない。
そんなことを言ってもキリがないし、イチャモンにしかならないから。

俺の今回のツッコミは皆にとっていい効果を産んだが、
このツッコミ合いは産まない。それだけのこと。

240 :Name_Not_Found:2016/12/13(火) 20:46:44.55 ID:???
>>237
これを使うのが標準的な手法。今時ハックを使うとか自力で判定するとかやらない。
https://modernizr.com/

https://modernizr.com/download?setclasses
使うのは Flexbox あたりかな。なんか4つもあるけどw

これを利用するとCSSからでもJavaScriptからでも
容易にサポートされているかどうかを判定できる。

241 :Name_Not_Found:2016/12/13(火) 20:47:57.93 ID:???
>>239
> 俺の今回のツッコミは皆にとっていい効果を産んだが、

自意識過剰すぎ

お前の話なんか当人以外はうぜーとしか見てない。
中身読んでねーから

242 :Name_Not_Found:2016/12/13(火) 20:51:39.86 ID:???
俺良いこと言ったよな?
つまりみんなにとっていい効果を産んだんだ。
みんな俺に感謝しろよ。
俺の言葉がみんなを成長させたのだ。

243 :Name_Not_Found:2016/12/13(火) 21:10:40.43 ID:???
>>238
ありがとうございます。その方法も考慮に入れます。
>>240
ありがとうございます。まさにこれでした。

244 :Name_Not_Found:2016/12/14(水) 07:52:03.82 ID:???
>>241
いや、デファクト含む仕様の話がここまで盛り上がったのは事実だ。
最初以降の殆どの駄文について言ってるんじゃないぞ?
まあこの流れも殆ど駄文だが、少しは得られるものも合った。
俺が一石投じた効果は期待通り、いやむしろそれ以上に合った。

一番悪いパターンは、完全にスルーされて事実が伝わらないことだからな。
それほど皆にとって悪いこともない。

>>242
>>みんな俺に感謝しろよ。
どうしてそんな勘違いをしてしまうのかが分からない。

ここでいう「皆」には、当然俺自身も含まれてる。
仮にウゼーと思われようが、話をより正しい方向に拡大、発展させたのだから、
客観的に見て俺の発言の功罪は功の方が大きい。
一方あなたは何をしているのですか?ということを言っている。

なぜ俺に感謝しろよと言ってるのと思うのかが疑問。
むしろ流れ的には、実際俺自身もいい体験、勉強ができた、
皆(特に>>236)一緒に話題盛り立てて色々議論してくれてありがとうなという
俺からの社交辞令的感謝の側面が強いのだが。

どうしてポジティブに受け取ってくれないのかね?
俺はずっとポジティブに話してるのに。

245 :Name_Not_Found:2016/12/14(水) 08:10:46.45 ID:???
まあでも俺も成長しないといけなかったか。
ここにいる人らはネガティブだということは分かっていたから、合わせるべきだった。
そういう意味では俺に対する指摘はもっともだ。

でも、一度考えてみて欲しい。
もし俺と実際顔向かい合わせて会話していたら、
そんな曲がった解釈をし、そんな返答ができるのかを。

あとこれ以上勘違いされないために俺の目的を整理しておく。
ECMAScriptの正しい事実を広め、ここに間違った記録を残さないことだ。
間違った記録というのは、それだけでJSにとって負の遺産になるからな。

従って難しい問題が出てきたときは、簡潔に終わらすのではなく、
わざと対立案を出して、読む人に多くの情報を与え、混乱させて、
一部の情報を鵜呑みにするのではなく自分で考えさせないといけない。

だから今回でももし先にドラフトの話が出てきていたら、
俺は歴史的な話をしていた。そうやってバランスを取ることが
「皆」にとって良いことだと信じているから。

246 :Name_Not_Found:2016/12/14(水) 09:15:53.08 ID:???
まーた独りよがり君が
長文書き込んでるぜwww

247 :Name_Not_Found:2016/12/14(水) 10:51:10.05 ID:???
ネガティブに受け取られるのは自業自得だろ
>>173の口の悪さを見てネガティブに受け取らない人がいたらよっぽど心の広い人だわ
>>176では自分の口の悪さを棚に上げて暴言吐いてるし、自分のネガティブ発言の自覚症状がないのが質が悪い

248 :Name_Not_Found:2016/12/14(水) 11:27:34.34 ID:???
>>239
> >>197でも「この部分に関しては俺の非は小さい」ときちんと回りくどく書いている。
ひょっとしてそれかなとは思っていたけど、それで非を認めているつもりなのね
非を認めていないとはいわないけど、わざわざ「小さい」というのは例えば「非を認める: 3割、非を認めない: 7割」のような割合になっているだろうから、どちらかといえば「非を認めていない」方向に傾いているように読めるんだよね
レトリックによる誤魔化しも大概にしなよ、としかいえない
この主張も「捻じ曲がった性根の被害妄想」扱いされるんだろうけど、どういう理屈で「俺の非は小さい」を使ったのか、を知りたいものだね

> 俺の今回のツッコミは皆にとっていい効果を産んだが、このツッコミ合いは産まない。それだけのこと。
俺は質問スレが質問スレとして機能する事を願ってるよ
君のツッコミが質問スレに相応しくないと思ったから注意しただけ
最も君は「なぜ君がネガティブに受け取られるか」をわかってないし、君自身の被害妄想が強くて聞く耳を持ってないようだけど
自分の考えをいうのは得意でも他人の考えを読み取る技能が足りてないようだね
「共感的理解」って理解できる?

249 :228:2016/12/14(水) 12:11:08.03 ID:???
おそくなりましたが、レス頂いた方ありがとうございました。
関数名とflag変更だけの処理を書いたのがまずかったですね。
実際はそれ以外のこともしていて、関数内で静的変数を使いたかったのですが、
面倒なのでこだわらないことにしておきます。
classはやっぱIEには対応してないんですね。
Windows10でも未だに使う人がいるようなので、まだ時期尚早でしょうか?
babelの情報ありがとうございます。早速調べてみます。

250 :Name_Not_Found:2016/12/15(木) 06:47:23.98 ID:???
>>247
それはだいぶ過去のコメントでしょ。
何度も言ってるようにそれは(ボケと)ツッコミだし、
それはそうとしても、その後ずっと俺の言いたいことはそんなんじゃないよと説明してるじゃん。
それなのにずっとネガティブに引っ張るのは間違いなく君の性根が悪いから。

>>248
君も君で全く話の流れを考えないね。最初からやり直す気なの?
非に関しては、君にそこまで責められる程ではないということ。
言った彼との問題はまた別、って言ったでしょ?
人の話全く聞かないでな〜にが共感だよ。
俺も君もそんな善人じゃないよ。

251 :Name_Not_Found:2016/12/15(木) 15:00:33.00 ID:zX0z7hYk
tumblrの本文に貼り付けたリンクが
http://sports.yahoo.com/wojから
http://t.umblr.com/redirect?z=http%3A%2F%....と書き換わるようになりました。
これを元に戻すスクリプトをご存じないでしょうか?
こういうのを見つけましたが機能せず。
function decodeTumblrURL(url) {
url = decodeURIComponent(url.replace('http://t.umblr.com/redirect?z=', ''));

var amp = url.search('&');
if (amp != -1) {
url = url.substr(0, amp);
}
return url;
}

252 :Name_Not_Found:2016/12/15(木) 15:16:51.26 ID:???
>>251
そのリンクのパスが変わっただけじゃないの?

253 :251:2016/12/15(木) 15:24:55.53 ID:zX0z7hYk
>>252
説明不足でした。パスを元のリンクのまま表示させたいんです。
たとえばhttp://kids.yahoo.co.jp/がこうなります。リダイレクト=元URL%変数となるようです。
http://t.umblr.com/redirect?z=http%3A%2F%2Fkids.yahoo.co.jp%2F&t=NjU1MmMxMDQ2ODM4NWFmMzY4ODQ2ZGZmYWVlNjBiYWVlMTA3YWJlZCxxUmlqRWg3dw%3D%3D&b=t%3AG-MMjchyVS6xRT6FDrZ_ow&m=1 👀
Rock54: Caution(BBR-MD5:4f47cb395d934044217f3cdff1199b37)


254 :Name_Not_Found:2016/12/15(木) 16:05:32.86 ID:???
if (/\?z=([^&]+)/.test(url)) {url = decodeURIComponent(RegExp.$1);}

255 :251:2016/12/15(木) 16:58:10.89 ID:zX0z7hYk
>>254
ありがとうございます。しかし置換されません。やはりタンブラー側で置換されないようにしてるのでしょうか。
function decodeTumblrURL(url) {
url = decodeURIComponent(url.replace('http://t.umblr.com/redirect?z=', ''));

var amp = url.search('&');
if (/\?z=([^&]+)/.test(url)) {url = decodeURIComponent(RegExp.$1);}
return url; }

256 :Name_Not_Found:2016/12/15(木) 17:18:18.88 ID:???
何をしとんじゃ…

257 :Name_Not_Found:2016/12/15(木) 17:37:29.71 ID:???
>>255
コード直す前に確認だが
function decodeTumblrURL(url) {
alert(url);
}
これでちゃんとアラート出るか?

258 :251:2016/12/15(木) 19:06:41.42 ID:zX0z7hYk
>>257
記述してみましたが何も反応ありません。。
ちなみに例えばタグにクラスを付ける等の他に書いてあるスクリプトは動いてます。

<script language="JavaScript">
function decodeTumblrURL(url) {
alert(url);
</script>

259 :Name_Not_Found:2016/12/15(木) 19:10:15.95 ID:???
マジでそのコード書いてるの?

260 :251:2016/12/15(木) 19:14:43.01 ID:zX0z7hYk
>>259
コードの書き方でしたか。。
functionの場合は前後に何か書かないと行けないんですね。調べてみます。

261 :251:2016/12/15(木) 19:19:54.64 ID:zX0z7hYk
>>254さんのコードを頂き前後をしっかりと調べて使わせて頂きます。
有り難うございました。

262 :sage:2016/12/15(木) 21:33:50.85 ID:iH3BGXie
https://www.youtube.com/watch?v=xHx5MbIGEoY

https://www.youtube.com/watch?v=8fPmkq1CkCU

https://www.youtube.com/watch?v=PR6r40GbIfk

263 :Name_Not_Found:2016/12/15(木) 21:51:33.24 ID:sE9BkbR9
var a = document.createElement('a');
var blob = new Blob(['Hoge\r\nHoge']);
var url = window.URL || window.webkitURL;
a.href = url.createObjectURL(blob);
a.download = name;
a.click();
Hoge
Hoge
として改行されてほしいんだが
Hoge\nHogeと改行コードがまんま出力される原因が不明

調べてみたが不明、仕様?どなたかご存知ありませんか?

264 :Name_Not_Found:2016/12/15(木) 21:56:40.44 ID:???
コピペプログラマ現るw

コピペばかりして、動いた!動かない!で
一喜一憂。仕事の完成は運で決まるw

265 :Name_Not_Found:2016/12/15(木) 22:21:11.72 ID:sE9BkbR9
>>264
君は文章を作る時に辞書から一単語ずつ探して作るのか?
馬鹿だろう?

俺としてはcreateObjectURL()が怪しいと思ってる。で、その仕様を探したがどうにも
見つからないんだよ。挙動がウェブブラウザ毎に違うという場合もあるしここで聞いた方が
確かな情報を最短で得られると思った。それと、仕事じゃないぞ思い込みでレスして楽しいか?

266 :Name_Not_Found:2016/12/15(木) 22:26:21.57 ID:sE9BkbR9
>>264
それと一応幾つかのサイトにあるサンプルコード上は改行を含むコードがあった。
あと、俺は一応回答者が答えやすいように一番シンプルなコードを書き込んでいる
シンプルなコードが似通うのは仕方ないことだと思うが何か文句があるのか?

文句を言うだけってのはコピペプログラマより最悪だと思うが?
性格的にさ

267 :Name_Not_Found:2016/12/15(木) 22:28:23.95 ID:sE9BkbR9
>>264
仕事で聞いていると思っているのか?
俺がウェブ系のプログラマだと思っているのか?
馬鹿なのか?お前って奴はここに書き込んでいる奴らを何に想定しているんだ?

相当ストレスが溜まり込んでいてネットでしか吐き出せない屑野郎なら失せろよ邪魔だよお前

268 :Name_Not_Found:2016/12/15(木) 22:29:28.52 ID:???
ID:sE9BkbR9
図星で顔真っ赤ワロタ

269 :Name_Not_Found:2016/12/15(木) 22:30:44.40 ID:???
煽る奴はほっとけばいいよ
それより>>263のコードだけど、俺の手元のGCでは普通に改行したぞ
どんな環境でテストしてる?

270 :Name_Not_Found:2016/12/15(木) 22:53:14.48 ID:???
>>268
はぁ、お前って人間は本当に詰まらないな。
でもお前がそうやって煽ることしか出来ずに言い返せないでいる様をみると心底気持ちがいいよ

>>269
GoogleChrome Version 52/Mac
JsFiddleでも試したが、実行環境同じだから意味ないな。

271 :Name_Not_Found:2016/12/15(木) 22:55:51.26 ID:sE9BkbR9
ああ、多分わかった

272 :Name_Not_Found:2016/12/15(木) 22:55:52.42 ID:???
>>263
> 調べてみたが不明、仕様?どなたかご存知ありませんか?
特別仕様じゃないの?w

273 :Name_Not_Found:2016/12/15(木) 22:56:41.11 ID:???
>>271
へぇじゃぁお前の言う特別仕様ってのを具体的に提示しろよURLでもいいぞ

>>269
option + vの\か

274 :Name_Not_Found:2016/12/15(木) 22:56:48.16 ID:???
>>263
HTMLでの改行は、<br> タグだろ

275 :Name_Not_Found:2016/12/15(木) 23:00:49.22 ID:???
>>269
しくった
option + \だ

>>272
お前本当具体的な事言わないよな。屑

なぁ272お前も判らなかったんだよなぁ?どうした?上司にいじめられて仕事でも退職したか?
ここでストレス発散してるんだろ実行環境について聞いてきた>>269を見てみろよ。

276 :Name_Not_Found:2016/12/15(木) 23:03:48.93 ID:???
>>274
デフォルトの挙動はtext/plainだと思ってたが、HTMLで保存するならtext/htmlを書いていると思わないのか?
お前はtype:指定をしてコードを試したのか?

277 :Name_Not_Found:2016/12/15(木) 23:04:34.75 ID:???
>>272
お前の言う特別仕様って何?まず俺が見つけなかったURLを教えなよ屑

278 :Name_Not_Found:2016/12/15(木) 23:04:54.03 ID:???
>>275
普通に>>263のソースでテストしたらOKだったんだよ
そうなのに仕様?と言ってるから特別仕様じゃないの?
と言っただけだよw

279 :Name_Not_Found:2016/12/15(木) 23:08:07.24 ID:???
ここでお前らに教えてやるか
煽ってきた脳内御花畑で明らかに煽りしか出来ない糞野郎もな。まぁこいつの分だけ現実の糞やろうをぶっ殺すけど

まず実行環境について聞いてきた奴、よかったぞお前流石、
それと、仕様について聞いたのはお前らを煽るため、仕様って言葉を聞くと煽ってくる奴は設計者が糞で苦労した奴だなご苦労さん
 type:に対してtext/plainなのかtext/htmlなのかを聞けば相手がテキストとして改行されてほしいかレンダリング上か判るよね?
 それをせずにあおり立てた屑と>>274お前ら失格

あー楽しかったwwwww今日は盛大に釣れたわwwwww
どう?何も言わずに煽るだけしか出来なくて仕様の件にしか突っ込まなかった>>272、思い込みで話を進めようとしたただの屑>>274
お前らは所詮回答できる立場の人間じゃないな

それと,irc 2chにいるlin。お前一回死んどけ

280 :Name_Not_Found:2016/12/15(木) 23:11:09.60 ID:???
>>278
なぁ、ここってさぁウェブ制作管理板じゃないの?

>>挙動がウェブブラウザ毎に違うという場合もあるしここで聞いた方が
って俺のレスを見て気付かなかったか?お前は俺がウィンドウズで作業していると思ったのか?
OSを聞いて文字コードレベルから学んだ方がいいんじゃないか?なぁ屑

お前らwwwwwウェブ制作の連中は本当に面白いよwwwww
お前ら組み込みの世界に来るなよ。


>>普通に>>263のソースでテストしたらOKだったんだよ
>>そうなのに仕様?と言ってるから特別仕様じゃないの?

今日一番の釣り、阿呆丸出しwwwww
お前の環境でテスト通ったら俺の環境で動くそれは特別仕様なのか?
こっちが聞いているのにお前はそれを質問者に調べさせようとした時点で話長くなる〜お前は屑以下失格

中途半端に手出して解決できないとなると相手のせいにする奴だろ屑すなぁ^^

281 :Name_Not_Found:2016/12/15(木) 23:15:12.50 ID:???
>>280
ウェブ制作管理板の奴らは色んな依存関係を知っていてIEだろうがFireFoxだろうがChromeといった
ウェブブラウザ間のレンダリングの違いやら差異を意識した連中だと思っていたが、所詮、OSレベルになるとこれかよ

全然意識できてぇコピペで記事を読んでOSというウェブブラウザ外の差異は全然意識出来てない糞共だってことがわかった
コピペなんたらと言ってきた屑wwwwwwお前らを煽るのにコピペ以外のコードが必要なのか?こんなに大量に釣れたんだからよ

ウェブ制作管理の連中は出来ると思ってが、案外糞だなwwwwwそれともお前らが糞以下なだけか?


ほら証明しろよ屑wwwwどうした質問者から煽られる気分はよ!?>????
底辺を這いつくばってフレームワークに頼るだけのゆとりマはとっとと死んだ方が身の為ってなぁ!!!!

あー楽しかった。

282 :Name_Not_Found:2016/12/15(木) 23:16:10.46 ID:???
>>280
なんか嫌なことでもあったのか?w

283 :Name_Not_Found:2016/12/15(木) 23:18:29.38 ID:???
>>278
>>普通に>>263のソースでテストしたらOKだったんだよ
>>そうなのに仕様?と言ってるから特別仕様じゃないの?
>>と言っただけだよw

わざわざ文字コード\r\nにしたのが何のためか判ってないんすか?(Macって答え書いてあんだろ?
ウェブブラウザの差異は意識出来てもOSの差異なんてコード上から意識して質問し返すとかできましぇえええんってか?w
屑が、それともフレームワークたよりで差異なんて知らないし統合開発環境がないと何もできましええええんのど素人か?
あと、HTMLで<br>指摘してきた奴、HTML初心者がjavaScript使ってファイル保存するコード書くと本気で思ったの?
疑念はあったろうが聞かないと駄目でしょ?お前仕事でも思い込みで進めてプロジェクト炎上させてんじゃないの?なぁ屑?w
だってお前はそう思われても仕方ないレスのレベルwwwwwはは笑えるぜ


お前ら本当に笑えるなぁ。

284 :Name_Not_Found:2016/12/15(木) 23:20:46.25 ID:???
>>282
いや、とりあえず煽りと糞不適切な回答しか出来ない屑共をいっそうしようと思って
そっちの環境は?とかわざわざ単発で回答してきて質問者と永遠一つの問題解決するのに何十レスするこいつら屑の愚かさを教えたくてな
どうせこいつら気付かないだろうから、あほだし。

コード一行書く度にF5キー押すゆとり共にちっと回答の質あげろ屑って伝えに来た。

285 :Name_Not_Found:2016/12/15(木) 23:21:58.31 ID:???
>>263
> 調べてみたが不明、仕様?どなたかご存知ありませんか?
>>272
> 特別仕様じゃないの?w

誂われてることに気付けよw

286 :Name_Not_Found:2016/12/15(木) 23:24:25.66 ID:???
>>285
誘い込んでると思ってるだろ?だがお前が誘い込んでいるのは店のオーナーだ
お前が誘い込もうとしている店のオーナーなんだよ

現実を思い知らせてやろうと思って

287 :Name_Not_Found:2016/12/15(木) 23:25:24.04 ID:???
最初から全てを判っていながら煽りと糞めいた回答しか出来なかった奴が
今更吠え面書いてレスしてきやがったら高笑いしちまうぜwwwwwwwww
今どんな気分だよ屑

288 :Name_Not_Found:2016/12/15(木) 23:29:35.65 ID:???
楽しかったぜぇ〜wwwwwお前ら本当にカスだなぁおいwwwwwwww
店のオーナーに招待されたんだよ。目の前に美味しい御馳走を用意したらフード被ったお前らが
その汚い歯と臭い口臭まき散らしながら食うだけ食って文句しか言わねぇのな。いや、それ以外の屑もいたか

まぁいいwwwwwwwフードっていうのはIDを出さない屑共な。煽ってきた奴
それと中途半端に回答した奴の頭掴んでぐちゃぐちゃのスパゲッティ食わせてやろうかと思ったわ無理にでも
お前らの書くそれも仕様も確認せずに実装する屑なんだろ?

なぁwwww俺が仕様って言葉をなぜ使ったか判るか?この質問の糞小さなコードと小さなレベルのお話に
お前らはGCでは動くんだがとかいう見当はずれな回答と煽りだけwwwww笑えたよwwwwwwww

仕様って言葉のレベルとコードが合致してないもんなwwwwwだから突っ込んできたんだろ?屑wwwww
だがお前ですらOSの差異だと気付かなかったあたり本当にまぬけだわwっwwwwあーおもれぇなぁお前ら

289 :Name_Not_Found:2016/12/15(木) 23:31:52.36 ID:???
なあchromeのdev toolでさ
他人のサイトのスクリプトにブレークポイント置いてコンソールからスコープにある変数変えられるじゃん
このときリテラル変える方法ってないの?
取り込み中すまんが

290 :Name_Not_Found:2016/12/15(木) 23:32:08.87 ID:???
それとコピペで突っ込んできた奴wwwwww
コピペコードのほとんどは\nで足りるけど?\r\nになんで突っ込まなかったの?wwwwww
笑えるwwwwww言っとくけどさぁ。わざわざ個々で質問するってことは俺が畑違いの男だとは思わなかったわけ?

どうしてここで聞くかって調べるより早いからって判らない訳?仕事レベルで2ちゃんに来ているお前らと一緒にすんなよ
おっと...失礼、ウェブって底辺でしたねwwwwお前らは是非ハード部門に来てほしいなぁwwwwこき使ってやるよwwwww

291 :Name_Not_Found:2016/12/15(木) 23:35:06.33 ID:???
ほんとこっちはよく荒れるなw
常駐してるやつが頭おかしいんじゃねーの?

292 :Name_Not_Found:2016/12/15(木) 23:35:42.33 ID:???
www

293 :Name_Not_Found:2016/12/15(木) 23:42:14.11 ID:???
>>289だけど誰か答えてね!すぐでいいよ!

294 :Name_Not_Found:2016/12/15(木) 23:45:58.96 ID:???
>>289
「リテラル変える」ってどういうこと?
ソースを書き換えるってこと?

295 :Name_Not_Found:2016/12/15(木) 23:50:43.67 ID:???
>>294
まあ、そういうことになるかな
foo(20); ←ここでブレークして20を40にしたい

296 :Name_Not_Found:2016/12/15(木) 23:55:23.08 ID:???
ソースコードを40に変えて再実行すればいいだけだろ

297 :Name_Not_Found:2016/12/15(木) 23:59:19.68 ID:???
>>296
他人のサイトだって言ってるでしょおおお

298 :Name_Not_Found:2016/12/16(金) 00:01:47.31 ID:???
>>295
Sourceタブで直接コードを書き換えてCtrl+Sとかで保存すればok
保存したら勝手に再読み込みして書き換えたコードで実行してくれる

299 :Name_Not_Found:2016/12/16(金) 00:09:41.22 ID:???
>>298
できたサンキュー

300 :Name_Not_Found:2016/12/16(金) 02:37:37.52 ID:???
>>291
質問者も相当おかしい気はする
精神的に子供な負けず嫌いが多い

301 :Name_Not_Found:2016/12/16(金) 09:34:39.23 ID:???
マジレスすると、アホのふりして馬鹿言い合うのが2chという場でしょ

302 :Name_Not_Found:2016/12/16(金) 13:40:08.67 ID:???
質問掲示板ではそれは要らないんだよな…

303 :Name_Not_Found:2016/12/16(金) 18:13:51.93 ID:t25V5N+8
要る要らないじゃなくて文化だから
付いてこれない人は幾らでも他所に行けばいい
質問サイトなんて沢山有るのだからね

304 :Name_Not_Found:2016/12/16(金) 19:07:43.04 ID:???
JSの質問サイトだとどこがオススメ?

305 :Name_Not_Found:2016/12/16(金) 19:55:09.06 ID:???
日本人の正確は陰湿だから日本から脱すればいいよ割とマジで
stackoverflow英語版とかyahoo知恵遅れ英語版(yahoo answers)とか
日本語で質問したらいけない

306 :Name_Not_Found:2016/12/16(金) 20:52:53.02 ID:???
日本人はトラブルを避けることを優先的に考える温和で臆病な国民だから
感情や本音を素直にさらけ出すことを悪習とし建て前を使い分ける人が多い
匿名空間では普段抑えてるものがあるから箍が外れてはっちゃけることが多い、と言えるかもしれない

質問の仕方ひとつで質問者を区別する傾向がある一方、有用な質問であれば回答を残しておこうという理性的な人もいる

307 :Name_Not_Found:2016/12/16(金) 21:56:24.64 ID:???
日本人は知的なんだよ

308 :Name_Not_Found:2016/12/17(土) 07:08:21.19 ID:???
basic認証で認証してから操作するAPIがあるのですが
そういうことをクライアントサイドJavaScriptでやることは出来ますか?
おそらくJavaScriptで動いているであろうchromeアプリでは、
そういうことも出来ているように見えますが、
どうなのでしょうか?

309 :Name_Not_Found:2016/12/17(土) 07:59:52.28 ID:???
>>308
認証先が必要だが、「どこ」と認証するつもり?
クライアントJavaScriptはソースが丸見えなので認証先はユーザが分からない場所にする必要がある

310 :Name_Not_Found:2016/12/17(土) 08:56:26.21 ID:???
>>309
APIを提供しているwebサービスです
idとパスワードをソースに書くことになりますが、
個人的な使用なのでそれは問題ありません

311 :Name_Not_Found:2016/12/17(土) 11:30:26.57 ID:???
世界的にみて嫌儲文化があるのって日本ぐらいじゃね
広告貼ったりした途端批判コメやマイナス評価が増えるのも日本独自の文化だよなあ

312 :Name_Not_Found:2016/12/17(土) 12:03:05.71 ID:???
日本人は同一民族なんだからよそと違ってて当たり前

313 :Name_Not_Found:2016/12/17(土) 14:04:48.66 ID:???
<textarea>で改行のみしかされていない、というのを判定するにはどうすればいいでしょう?

.lengthではtrueされてしまいました…

314 :Name_Not_Found:2016/12/17(土) 14:11:05.45 ID:???
スペースのみはいいのか?

315 :Name_Not_Found:2016/12/17(土) 14:13:51.30 ID:???
>>313
if(value.match(/^(?:\r?\n)+$/)){
// 改行だけ
}

316 :Name_Not_Found:2016/12/17(土) 14:14:43.76 ID:???
スペースと言ってもいくつもあるからな
全角半角、 タブ、改行、
ノーブレークスペース、
狭い幅のノーブレークスペース、
ゼロ幅スペース

317 :Name_Not_Found:2016/12/17(土) 14:16:17.14 ID:???
\sでいいだろ

318 :Name_Not_Found:2016/12/17(土) 14:25:35.36 ID:???
>>310
APIによって実装が変わるから一概には言えない
APIリファレンスを読んでその通りに実装するだけだよ

319 :Name_Not_Found:2016/12/17(土) 14:35:33.86 ID:???
>>317
そやな

320 :Name_Not_Found:2016/12/17(土) 14:38:54.00 ID:???
>>310
jQuery で Basic 認証のかかったリソースにアクセスする
https://gist.github.com/torufurukawa/2723412

321 :Name_Not_Found:2016/12/17(土) 14:42:04.61 ID:???
javascript basic認証で検索したら一発で見つかったんだがw

322 :Name_Not_Found:2016/12/17(土) 14:42:09.58 ID:???
>>313
改行コードのみなら /^[\r\n]+$/
空白文字全般なら /^\s+$/
前後の空白文字が不要なら String#trim

323 :Name_Not_Found:2016/12/17(土) 18:54:50.31 ID:???
>>313
value.match(/^(\r|\n)+$/) && alert('改行のみ');

324 :Name_Not_Found:2016/12/17(土) 19:11:28.83 ID:???
>>313
実装法が変わるが、<textarea pattern="\S"> のようにpattern属性で許可するパターンを書いた方が汎用性が上がっていい気がするな

325 :Name_Not_Found:2016/12/17(土) 19:19:09.29 ID:???
textareaにpattern属性ってあったっけ?

326 :Name_Not_Found:2016/12/17(土) 21:32:45.65 ID:???
javascriptで特定のタブをアクティブにすることなんてできませんよね?

327 :Name_Not_Found:2016/12/17(土) 21:40:55.32 ID:???
window.open()とか、JavaScriptで生成したタブならできる

328 :Name_Not_Found:2016/12/17(土) 22:32:15.90 ID:???
.scroll {
overflow-y: auto;
max-height: 500px;
}

上のscrollクラスを含んだdivのスクロールバーを一番下にする方法はありますか?

329 :Name_Not_Found:2016/12/17(土) 22:54:11.45 ID:???
>>328
JavaScriptでscrollTopにscrollHeightをセットする

330 :Name_Not_Found:2016/12/17(土) 22:59:46.74 ID:???
>>328
var elm = document.querySelectorAll('.scroll');
for (var i = 0; i < elm.length; i++) {
elm[i].scrollTop = elm[i].scrollHeight;
}

331 :Name_Not_Found:2016/12/17(土) 23:05:35.82 ID:???
$('.scroll').each(function() {
  this.scrollTop = this.scrollHeight;
})

332 :Name_Not_Found:2016/12/18(日) 12:23:20.97 ID:???
>>325
ごめん、確かになかった
input要素と整合性をとるにはdata-pattern属性にでも入れて独自に関数を組むしかないな

333 :Name_Not_Found:2016/12/18(日) 12:42:17.24 ID:???
そもそも論外

334 :Name_Not_Found:2016/12/18(日) 14:58:03.78 ID:???
jsonのupdated_atを参照して最新順にソートしたいのですが、
そのデータ形式が「2016-12-18 12:43:10」のようになっています。

これはどのようにソートすれば良いのでしょうか?

335 :Name_Not_Found:2016/12/18(日) 15:18:20.57 ID:???
list.sort(function(a, b){return a.updated_at < b.updated_at ? 1 : -1; })

336 :Name_Not_Found:2016/12/18(日) 16:03:35.30 ID:???
>>335
日付が文字列でも動きますか?

337 :Name_Not_Found:2016/12/18(日) 16:28:26.97 ID:???
>>336
Date.parse('2016-12-18 12:43:10');
Date.parseしてからソート

338 :Name_Not_Found:2016/12/18(日) 17:14:19.15 ID:???
>>336
文字列が「yyyy-MM-dd HH:mm:ss」の形式を守ってる、つまり桁数が同じなら文字列のままで比較できる。
もちろん日付や数値に変換してもいいが、「yyyy-MM-ddTHH:mm:ss」形式にしてから変換した方がいいと思う(>>337のコードはSafariでエラーになった)

339 :Name_Not_Found:2016/12/18(日) 17:18:36.13 ID:???
>>338
神ですかありがとうございます

340 :Name_Not_Found:2016/12/18(日) 17:39:28.11 ID:???
>>338
Safariは対応していないだけ
'2016-12-18 12:43:10'.replace('-', '/')

341 :Name_Not_Found:2016/12/18(日) 18:54:43.81 ID:???
>>335
同値の時は 0 を返さんとあかん。
使えるなら localeCompare 使おう。

342 :Name_Not_Found:2016/12/18(日) 19:04:27.43 ID:???
list.sort(function(a) { return Date.parse(a.updated_at) } )

って書くだけで比較できるようになればいいのに

343 :Name_Not_Found:2016/12/18(日) 19:05:02.52 ID:???
ES2015ならこう

list.sort(a => Date.parse(a.updated_at) )

344 :Name_Not_Found:2016/12/18(日) 19:09:16.93 ID:???
sortBy あったらいいね

345 :Name_Not_Found:2016/12/18(日) 19:47:10.93 ID:???
>>344
そうか、sortByで行けるんだw

https://lodash.com/docs/4.17.2#sortBy

名前からオブジェクトの配列を渡したときに
ソートに用いるフィールドを決めるものだと思ってたよ。

プリミティブな値の配列を渡して
数値に変換するって方法もできるね。

346 :Name_Not_Found:2016/12/18(日) 19:55:09.54 ID:???
>>344
できた。ありがと。

["1", "2", "10", "100"].sort() // => ["1", "10", "100", "2"]

_.sortBy(["1", "2", "10", "100"], i => parseInt(i)) // => ["1", "2", "10", "100"]

347 :Name_Not_Found:2016/12/18(日) 21:19:45.44 ID:???
そんなこ一機能に一々ライブラリを使うのは馬鹿らしい。
数値化してソートしてもいいし、
["1", "2", "10", "100"].sort(new Intl.Collator(['ja-u-kn']).compare)
でOK

348 :Name_Not_Found:2016/12/18(日) 21:29:54.28 ID:???
>>347
うん。そのやり方はいいセン行ってると思うんだけどね。
汎用性が少ないかな。そこで言語ごとの比較順とかでてくるのも意味不明だし
70点ってところかな。

349 :Name_Not_Found:2016/12/18(日) 22:37:38.30 ID:???
>>338で十分だと思うな
桁数が保証されてないなら正規表現でパースして new Date(yyyy, MM, dd, HH, mm, ss) しても良い

350 :Name_Not_Found:2016/12/18(日) 23:55:20.06 ID:???
new Date()で安定してパースできる形式ってなんだろうな
YYYY-MM-DDTHH:mm:ss.sss+HH:mm系は安定してできると思うけど、他にどのような形式があるんだろう

351 :Name_Not_Found:2016/12/19(月) 00:28:07.39 ID:???
>>350
http://www.ecma-international.org/ecma-262/7.0/#sec-date-value
http://www.ecma-international.org/ecma-262/7.0/#sec-date.parse

> ECMAScript defines a string interchange format for date-times based upon a simplification of the ISO 8601 Extended Format.
> The format is as follows: YYYY-MM-DDTHH:mm:ss.sssZ
http://www.ecma-international.org/ecma-262/7.0/#sec-date-time-string-format

352 :Name_Not_Found:2016/12/19(月) 00:54:09.11 ID:???
仕様上は「ISO 8601 拡張形式」しか認められてない
他の形式は全て実装依存だな

353 :Name_Not_Found:2016/12/19(月) 05:07:09.56 ID:???
>>348
言語ごとの比較順?何言ってるんだ?
knオプションは言語ごとの比較順とは関係ないが。

354 :Name_Not_Found:2016/12/19(月) 08:04:25.94 ID:???
>>350
DATEのパースはSafariが頭固い
DBの吐く日付そのまま食わすと怒る

355 :Name_Not_Found:2016/12/19(月) 18:43:00.45 ID:???
arrayのsortメソッドは新しい配列を作成してソート後返すのではなく、
配列そのものをソートしてしまいますよね

なんとか元の配列(array1.sort()のarray1の部分)を保つままにできませんか?

356 :Name_Not_Found:2016/12/19(月) 18:48:30.46 ID:???
>>355
配列をコピーしてからソートすればいい。
よくやる方法は array1.slice().sort() とか。

357 :Name_Not_Found:2016/12/19(月) 19:13:50.91 ID:???
>>356
まさにそれですね!ありがとうございます

358 :Name_Not_Found:2016/12/19(月) 20:52:12.21 ID:???
中身の中身が参照でめんどくさい事になるのが嫌で、JSON.parse(JSON.stringify(array1)))するけど、中身によっては型が変わっちゃうし、
用途次第だな。

359 :Name_Not_Found:2016/12/19(月) 22:34:36.44 ID:???
シャローコピーとディープコピーでは用途が大分違う

360 :Name_Not_Found:2016/12/19(月) 23:40:05.17 ID:???
Rubyでも、参照の参照の参照... というオブジェクトの循環が切れなくて、困ったことがある。
大元を変更したら、それを参照している所が、すべて変更されてしまった

Rubyでは、すべてのものがオブジェクトだが、JSにはprimitive があるから、
参照の参照の参照... と遡っていけば、どこかでprimitive に突き当たり、循環の輪が切れる

primitive には参照がないから

361 :Name_Not_Found:2016/12/20(火) 08:08:05.87 ID:???
chromeアプリってwebストアに登録せず自分だけで使うことできますか?

362 :Name_Not_Found:2016/12/20(火) 08:29:33.68 ID:???
この手順通りで行けると思うけど。
https://support.google.com/chrome/a/answer/2714278?hl=ja

あとこれも参考にして開発するかどうかを決めてね。
「Google、WindowsやMacの「Chromeアプリ」終了へ、Chrome OSのみに」
http://news.mynavi.jp/news/2016/08/22/034/

363 :Name_Not_Found:2016/12/20(火) 10:30:35.31 ID:???
別に循環参照だらけのオブジェクト群でもディープコピーやシリアライズ化は容易にできる。
むしろ困難なのはビルトインオブジェクト、や内部プロパティ、ネイティブ関数の復元。

あんまりにもなときは、素直なディープコピーを諦めて、
プロキシによる代理参照とその参照に対応する読み込み・書き込みキャッシュで代替できることも多いと思う。

364 :Name_Not_Found:2016/12/20(火) 23:34:11.53 ID:???
ぶっちゃけ、シャローコピーで困ったことがない
ディープコピーにしなきゃならん設計に問題がある気がする

365 :Name_Not_Found:2016/12/20(火) 23:58:21.44 ID:???
>>360
> Rubyでは、すべてのものがオブジェクトだが

Rubyはメソッドがオブジェクトじゃない。
だからメソッドをオブジェクト化しなくてはいけないので、
JavaScriptの用にシンプルにメソッドを変数や引数に入れることができない。

366 :Name_Not_Found:2016/12/21(水) 00:48:03.62 ID:???
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice) | Dustin Boswell, Trevor Foucher, 須藤 功平, 角 征典 |本 | 通販 | Amazon
https://www.amazon.co.jp/dp/4873115655
ショートコーディングにしか目が向いていない人にこそ読んでほしい本

367 :366:2016/12/21(水) 00:48:52.70 ID:???
ごめん、誤爆した

368 :Name_Not_Found:2016/12/21(水) 01:08:34.16 ID:???
ary = "abcdefghijk".split("");

この配列の要素を、<p>タグの中に、順番にカンマ区切りで、表示していく際、

a, b, c, d...

交互に、または赤緑青のように、順番に色を変えて表示するには、どうするの?

369 :Name_Not_Found:2016/12/21(水) 01:30:50.81 ID:???
単純に配列をforで回す
中でspanをcreateして配列の要素はその中にぶち込んで、そのspanをpにぶち込む
2色なら i%2 === 0 が真の時にspanにclassを埋め込めばいいけど
3色ならどうするかな

370 :Name_Not_Found:2016/12/21(水) 01:35:38.96 ID:???
>>368
cssのnth-childで色を指定する

371 :Name_Not_Found:2016/12/21(水) 08:08:49.48 ID:???
大正解。
まあ汎用的に答えるなら
= ['','class1','class2'][i%3]

372 :Name_Not_Found:2016/12/21(水) 09:22:48.45 ID:???
日付をプロパティとして持ったオブジェクトの配列があります
ここから一番新しい日付を持ったオブジェクトを探したいのですが
どうするのが一番いいですか?

373 :Name_Not_Found:2016/12/21(水) 09:44:14.90 ID:???
find()

374 :Name_Not_Found:2016/12/21(水) 09:45:06.51 ID:???
日付がわからないんだからsort()か

375 :Name_Not_Found:2016/12/21(水) 10:48:07.59 ID:???
Math.max.apply(this,配列.map(function(e){return e.日付})

376 :Name_Not_Found:2016/12/21(水) 12:14:35.48 ID:???
>>372
配列のソースを示す

377 :Name_Not_Found:2016/12/21(水) 19:46:31.83 ID:???
>>372
もうちょっと日本語を頑張ってくれ感が否めない

var array1 = [], array1['2016-12-21T10:00:00.000Z'] = 1;
var array2 = [{'2016-12-21T10:00:00.000Z': 1}];
var object1 = {'2016-12-21T10:00:00.000Z': 1};

言葉通りに受け取るならarray1だが、「配列のオブジェクト->連想配列->オブジェクト初期化子」「配列->配列初期化子」に思っている可能性もある
([]も{}もObject型な事を理解してない可能性)
今出てるのは全て配列前提だからコードを出して質問した方がいいと思うぞ(>>1の(6)な)
最も、Object.keysを追加するだけでobject1に対応できるが、基礎が身についている人なら今までの回答で十分だが

378 :Name_Not_Found:2016/12/21(水) 20:10:14.19 ID:???
>>373
他の要素と値比較する都合上、findで上手く書く方法が思いつかなかったんだが、具体的にはどう書く?
どっちかというとreduceが向いてる気がする

379 :Name_Not_Found:2016/12/21(水) 22:57:47.25 ID:???
lodashを使うのなら、max または maxByだな

https://lodash.com/docs/#maxBy

var objects = [{ 'n': 1 }, { 'n': 2 }];

_.maxBy(objects, function(o) { return o.n; });
// => { 'n': 2 }

この return o.n を適切なものにすればできるだろう

380 :Name_Not_Found:2016/12/21(水) 23:01:01.72 ID:???
>>372で普通に内容は理解できるんだが
答える側の方がバカに思えてくるw
なんでそんな難しい話にしているのか。

381 :Name_Not_Found:2016/12/21(水) 23:01:56.35 ID:???
ary.find(callback[, thisArg])

find メソッドは、callback 関数が true を返す要素が見つかるまで、
配列内の各要素に対して callback 関数を実行します

そのような要素が見つかると、find はすぐにその要素の値を返します。
配列内に見つからなければ、find は undefined を返します

382 :Name_Not_Found:2016/12/21(水) 23:04:12.35 ID:???
maxByを使えばいいね。

383 :Name_Not_Found:2016/12/21(水) 23:07:24.19 ID:???
>>381
findだけではできないじゃんかw

384 :Name_Not_Found:2016/12/21(水) 23:08:38.14 ID:???
>>380
ルーズに覚えていたらそう感じるかもね

385 :Name_Not_Found:2016/12/21(水) 23:09:22.19 ID:???
オブジェクトの配列の中で一番新しい日付が何かわかっているという
前提にすればfindだけでできるだろ

386 :Name_Not_Found:2016/12/21(水) 23:11:11.97 ID:???
>>385
普通わからないだろw

387 :Name_Not_Found:2016/12/21(水) 23:13:10.61 ID:???
>>372には、一番新しい日付がわからないとは書いていない。
だから一番新しい日付がわかっているという前提にしても問題ない。
物事をルーズに考えているからそうなる。
だからしっかり曖昧さの余地がないように厳密に書けと言ってるのだ

388 :Name_Not_Found:2016/12/21(水) 23:13:46.47 ID:???
なんだ。アスペかw

389 :Name_Not_Found:2016/12/21(水) 23:15:02.52 ID:???
>>372を読むだけでmaxByの動きであると最初に気づいた人はすごい!

390 :Name_Not_Found:2016/12/21(水) 23:15:41.80 ID:???
>>389
普通わかるだろw
わからない方がおかしい。

391 :Name_Not_Found:2016/12/21(水) 23:17:26.31 ID:???
>>389
ギスギスしてきたところですまんが
俺でもわかった

392 :Name_Not_Found:2016/12/21(水) 23:21:59.36 ID:???
偉そうにしている>>377の書いたコードがアレだからなぁw

日付をプロパティとして持ったオブジェクトの配列っていうんだから
var a = [ {n: 1, d: 日付}, {n: 2, d: 日付}, {n: 3, d: 日付} ]
に決まってるだろ。

三つも例書いておきながら全滅とか馬鹿すぎる

393 :Name_Not_Found:2016/12/21(水) 23:23:40.57 ID:???
今頃、間違ったのは俺が馬鹿じゃない。正確に書かないからだ。
それをわからせるためにあえて間違いを書いたんだよ

とか言い訳してそうw

394 :Name_Not_Found:2016/12/21(水) 23:28:36.55 ID:???
>>389
文法的にもなんらおかしくないと思うんだが
わからない派はどの辺が理解しづらいの?

395 :Name_Not_Found:2016/12/21(水) 23:30:56.85 ID:???
>>387
「一番新しい日付を持ったオブジェクトを探したい」だからこれから探すオブジェクトの位置が分かっている前提はおかしいんじゃない?

396 :Name_Not_Found:2016/12/21(水) 23:35:07.88 ID:???
「プロパティ -> プロパティ名なのかプロパティ値なのか」とか
何となくは分かるが、構造が厳密には理解しがたいな
>>1の(6)にあるようにコードを出すのが間違いがないとは思う

397 :Name_Not_Found:2016/12/21(水) 23:42:40.17 ID:???
「日付をプロパティとして持った」は俺もプロパティ名に感じたな

398 :Name_Not_Found:2016/12/21(水) 23:56:40.32 ID:???
>>372
既出だが、reduceを使うのが手っ取り早いな
var array = [{n:1,d:'2016-12-21T10:00:00.000Z'},{n:2,d:'2016-12-23T10:00:00.000Z'},{n:1,d:'2016-12-22T01:00:00.000Z'}];
var maxValue = array.reduce((max, current) => max.d > current.d ? max : current, {d:''});
console.log(maxValue); // {n: 2, d: "2016-12-23T10:00:00.000Z"}

399 :Name_Not_Found:2016/12/22(木) 00:27:35.56 ID:???
どーせどこぞのスレではしゃいだちょっと脳みそにハンディキャップ持ったbabel推しの奴だろ

400 :Name_Not_Found:2016/12/22(木) 01:12:13.93 ID:???
maxByいいですね。

var array = [{n:1,d:'2016-12-21T10:00:00.000Z'},{n:2,d:'2016-12-23T10:00:00.000Z'},{n:1,d:'2016-12-22T01:00:00.000Z'}];

_.maxBy(array, i => i.d);
または
_.maxBy(array, 'd');

これが一番シンプルで可読性が高いと感じました。

401 :Name_Not_Found:2016/12/22(木) 08:57:38.90 ID:???
chromeで右下に出るメッセージウインドウみたいなものを表示したいのですが
どうすれば表示できますか?

402 :Name_Not_Found:2016/12/22(木) 09:11:37.83 ID:???
>>401
なんのことを指してるのかよく分からないが、デスクトップ通知のことならこれを参考にどうぞ。
http://qiita.com/kidatti/items/10a6a033ed0b84619d81
https://developer.mozilla.org/ja/docs/WebAPI/Using_Web_Notifications

403 :Name_Not_Found:2016/12/22(木) 09:34:49.04 ID:???
>>400
スレ違い

404 :Name_Not_Found:2016/12/22(木) 10:09:12.64 ID:???
>>402
それです
ありがとうございました

405 :Name_Not_Found:2016/12/22(木) 15:40:30.21 ID:???
FirefoxやEdgeでは動くけどChoromiumベースだと動かない場合、
何が疑われますか?
Consoleで見るとエラーは出ていません。

406 :Name_Not_Found:2016/12/22(木) 15:44:27.04 ID:???
エラーが出てないならHTML/CSSの問題が濃厚かなあ
ともかくソースを見ないと分からん

407 :Name_Not_Found:2016/12/22(木) 15:48:21.60 ID:???
もしjQueryを使ってるならそれもリスクになるな
jQueryはエラーを吐かないことが多いから

408 :Name_Not_Found:2016/12/22(木) 15:53:24.70 ID:???
>>405
お前誰?

409 :Name_Not_Found:2016/12/22(木) 21:48:47.45 ID:???
>>407
エラーを吐かなくてもいいんだよ。どのブラウザでも同じ挙動になることが重要

だからお前も本当は心の中で思ったんだろ?
>>405はjQueryを使っていれば、ブラウザ依存してなかったかもなって。
いきなりjQueryを出してきているところからわかるよw

410 :Name_Not_Found:2016/12/22(木) 22:15:53.81 ID:???
>>407
jQueryでも当然エラー吐くよw

君がエラーを吐かないと言ってる点は、まあ大体予想つくんだが、
それはjQueryの設計方針と関係している。

その設計方針のおかげで(動的な)HTMLは要素が存在したり
しなかったりするが、jQueryとしてはそれらの違いを
意識しないでコードを書けるようになってるんだよ。
だから条件分岐が減ってコードがシンプルになる。

この考え方に近い発想としてヌルオブジェウトという設計パターンがある。
ヌルオブジェクトを使うことで値がヌルかどうか?みたいな条件分岐を減らせる。

もう少し詳しい説明が欲しいなら言ってくれれば説明するよ。

411 :Name_Not_Found:2016/12/22(木) 22:28:24.16 ID:???
>>5の諸注意を参照する事を強く推奨

412 :Name_Not_Found:2016/12/22(木) 22:34:00.12 ID:???
>>410
ありがとう。
知ってる内容なので説明はいらないです。

413 :Name_Not_Found:2016/12/22(木) 23:13:46.68 ID:???
jQueryはよくできてると思うわ

414 :Name_Not_Found:2016/12/23(金) 01:43:51.69 ID:???
>>410
ライブラリ馬鹿とトランスパイラ馬鹿のご高説は結構です。

415 :Name_Not_Found:2016/12/23(金) 05:44:38.55 ID:???
JavaScriptで一番簡単にオブジェクト指向する方法はどういうものですか?
functionとprototypeを分けて書くのは見た目的にまとまりが悪いので好きじゃありません
面倒くさいので、jqueryでClassオブジェクトみたいなものを提供してくれればいいのですが

416 :Name_Not_Found:2016/12/23(金) 06:47:17.73 ID:???
>>415
ES6のclass構文(prototypeの糖衣構文)
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes
JavaScriptはprototypeの塊なのでprototypeの書き方に慣れるのが一番
jQueryもprototypeを使っているのでソースコードを確認してみるといい

417 :Name_Not_Found:2016/12/23(金) 08:44:00.75 ID:???
prototypeというのがどっちを指してるのかがわからないが、
.prototypeとnewはES6から捨てることも出来る
そして[[prototype]]だけを使って素朴なインスタンスベースプログラミングをするのが最も簡単

418 :Name_Not_Found:2016/12/23(金) 08:51:08.93 ID:???
開発はchromeでするのがベスト
firefoxは結構ガバガバでゆるいけどchromeはキッツキツでイキそう

419 :Name_Not_Found:2016/12/24(土) 00:24:18.94 ID:???
昨今、脱jQueryとよく言われるけど、

AngularJS でも、jQueryを使わないと、
Angular内蔵の、jQueryのサブセット、jqLite が使われるw

MVC を完全に分離して、宣言型にしている、Angularでも、結局、jQueryを使っている

420 :Name_Not_Found:2016/12/24(土) 00:35:01.92 ID:???
>>418
IE6に対応させられてた時代と何も変わってないな

421 :Name_Not_Found:2016/12/24(土) 00:43:03.78 ID:???
>>419
> 昨今、脱jQueryとよく言われるけど、

脱jQueryとか言ってるやつに、じゃあ代わりに何を使うの?
それでどうらくになるの?って聞いてみたらいいよ。
本末転倒な答えしか帰ってこないから。

jQueryよりも導入が大変で、ウェブサイトに導入するのには
どう考えても不適切。やりたいことはプログラミングじゃない。

422 :Name_Not_Found:2016/12/24(土) 02:55:40.10 ID:???
>>421
プログラマもデザイナも、どっちも独り善がりなんだよ、多分。

423 :Name_Not_Found:2016/12/24(土) 03:53:15.84 ID:???
>>419
読点の付け方ヤバイぞ

>>421
導入コストしか考えないのか?
作って終わりの世界ではないんだからパフォーマンスや運用コストまで含めて検討するものだと思うが
jQueryは便利だけど大人数で開発してると厳しい感じになってきがち

424 :Name_Not_Found:2016/12/24(土) 05:23:30.39 ID:???
lodashにはsetTimeoutの代替はありますが(delay)
setIntervalの代替は見当たりません
ないと判断していいでしょうか?

425 :Name_Not_Found:2016/12/24(土) 07:35:53.52 ID:???
>>423
> jQueryは便利だけど大人数で開発してると厳しい感じになってきがち

ほらなw 大人数で大規模な開発するって大げさな話になってる。

どこにそんなJavaScriptバリバリで作りましたなんてサイトある?
ほとんどはウェブサイトにちょこちょこっと動きをつけるだけだろ。

AngularとかReactとか大抵の用途に必要ない。
AngularやReactはウェブサイトがメインでjQueryで十分なときに、
jQueryを使うよりも楽な代替策にはなっていない。
導入することが目的となっていて、理由が伴っていない。

426 :Name_Not_Found:2016/12/24(土) 08:25:38.98 ID:???
>>419はjQueryに染まってjQueryの書き方しか出来なくなっているだけ

>>425
AngularJSを取り沙汰にしている>419にそのアドバイスはどうかと思うぞ

427 :Name_Not_Found:2016/12/24(土) 08:43:14.34 ID:???
たまに頭に_が付いていることがあります

例) const _products = {}

これは何を意味しているのですか?

428 :Name_Not_Found:2016/12/24(土) 09:03:49.69 ID:???
大抵は、プライベート変数として使いますよ〜 ってことを意味してる

429 :Name_Not_Found:2016/12/24(土) 10:34:37.85 ID:???
「ローカル変数とどう違うんですか?」

430 :Name_Not_Found:2016/12/24(土) 11:40:52.06 ID:???
再代入ができない

431 :Name_Not_Found:2016/12/24(土) 12:35:24.33 ID:???
>>427
ローカルルールに統一解はないから制コード作者が使っているコーディング規約を参照する事

432 :Name_Not_Found:2016/12/24(土) 12:46:23.39 ID:???
関数の中にその外の変数を封入する手法を何と言いましたか?
何か呼び名があったと思うのですが思い出せません

433 :Name_Not_Found:2016/12/24(土) 12:51:18.92 ID:???
>>432
束縛?クロージャ?
上記のいずれも「関数の中にその外の変数を封入する手法」を指すわけではない
漠然としすぎているからコードを示した方が良い

434 :Name_Not_Found:2016/12/24(土) 13:59:51.89 ID:???
ありがとうございます
クロージャでした
外部の変数を関数に持たせるための手法じゃないんですか?
他にメリットありますか?

435 :Name_Not_Found:2016/12/24(土) 20:52:02.22 ID:???
その程度の認識だとこのあと大変だぞ?      苦労するんじゃ?

436 :Name_Not_Found:2016/12/24(土) 22:04:52.32 ID:???
>>434
クロージャは「関数内包」
関数が入れ子になっている状態を指す

function foo () {
 function bar () {}
 bar();
}

これもクロージャ
関数スコープに変数を「閉じ込める」のがメリット

437 :Name_Not_Found:2016/12/24(土) 22:06:22.07 ID:???
間違えた、関数閉包か
まあ、「関数が入れ子のなっている状態」は間違いない

438 :Name_Not_Found:2016/12/24(土) 22:30:47.63 ID:???
クロージャでは、外のスコープから、取り込んだオブジェクトは、
コピーされたのではなく、同一オブジェクト・参照だから、

そのオブジェクトの更新・参照のタイミングによって、奇妙な挙動をするから、気を付けろ

439 :Name_Not_Found:2016/12/24(土) 22:36:03.23 ID:???
せやな。
それの最たる例が、for+varループとfor+letループの違い。

440 :Name_Not_Found:2016/12/25(日) 02:18:25.93 ID:???
いや、それは全く関係がない。
ただループ回毎に参照がリフレッシュされると言うだけで、
例えば同ループ内で2つクロージャを作って片方で変更するともう片方には影響するんだから、
全く別の話。

441 :Name_Not_Found:2016/12/25(日) 08:36:02.34 ID:???
関数が入れ子になるとは限らないのでは?

var hoge = "hoge";
var showHoge = function (){
console.log(hoge);
}

グローバル領域に書かれたこのようなコードは
関数が入れ子になってませんがクロージャですよね?
グローバル領域を巨大な関数と考えるという意味でしょうか?

442 :Name_Not_Found:2016/12/25(日) 08:58:08.51 ID:???
>>438
読点の付け方おかしすぎ
日本語ちゃんと勉強してこい

443 :Name_Not_Found:2016/12/25(日) 10:42:33.23 ID:???
>>441
それはクロージャではない
「関数閉包」でググれば分かる

444 :Name_Not_Found:2016/12/25(日) 11:12:48.68 ID:???
>>441
それは「グローバル関数」と呼ばれるものだね
グローバル変数に束縛されたユーザ定義関数と読み替えてもいい

445 :Name_Not_Found:2016/12/25(日) 11:25:32.97 ID:???
検索しましたが、やはりクロージャーというのは外の環境を閉じ込めた関数のことですよね
入れ子になった関数という謎定義はどこから出てきたのでしょうか?

446 :Name_Not_Found:2016/12/25(日) 11:33:48.06 ID:???
>>442
内容には同意するが、「が」や「を」を省略している君が偉そうなことを言える立場かとも思う
JSスレで正しい日本語講座を初めても仕方ないのだから意味が通るなら細かいことは気にするな

447 :Name_Not_Found:2016/12/25(日) 11:33:48.50 ID:???
たとえば関数オブジェクトのファクトリは入れ子になった関数ですが
ファクトリのことをクロージャーと呼んでいるわけではなく
ファクトリが返す関数オブジェクトがクロージャと呼ばれているわけです

448 :Name_Not_Found:2016/12/25(日) 11:45:25.53 ID:???
>>445
「外側の環境」がエンクロージャ内の変数を指すならその通りだが…、何度も言うが言葉による説明は行き違いが発生するのでコードを出した方がいい
万が一、あなたの認識する言葉の定義が間違っていたら混乱を招く
https://jsfiddle.net/jkh2mkd8/

449 :Name_Not_Found:2016/12/25(日) 12:40:31.02 ID:???
>>445
悪いけど、謎定義は君の方だよ
どこから「クロージャ」の定義を引っ張ってきたの?
https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3
http://qiita.com/mochizukikotaro/items/7403835a0dbb00ea71ae

450 :Name_Not_Found:2016/12/25(日) 14:34:34.81 ID:???
質問です
td { max-width: 12em; overflow: hidden } にてcssを適用しています
この状態でセル内のテキストがmax-widthの数値を超え、hiddenに
なっている事を確認するにはどのよにすれば良いのでしょうか?
よろしくお願いします。

451 :Name_Not_Found:2016/12/25(日) 15:22:40.78 ID:???
>>449
> どこから「クロージャ」の定義を引っ張ってきたの?

お前が持ってきたwikipediaに書いてあるじゃんw

452 :Name_Not_Found:2016/12/25(日) 16:13:49.70 ID:???
>>450
scrollWidth と clientWidth を比較するといい。
https://jsfiddle.net/1kk1m3hz/
(この例ではjQuery使ってるけど、実際に使うときは適当にしてね。)

簡単に言うと、scrollWidth は要素の中身の横幅を、clientWidth は要素の外側の横幅を示す。
つまり、overflow ではみ出すと scrollWidth > clientWidth になるので、それを確認すればおk。

453 :Name_Not_Found:2016/12/25(日) 18:42:49.53 ID:???
>>452
scrollWidth と clientWidth の比較で解決しました
有難うございました(_ _)

454 :Name_Not_Found:2016/12/25(日) 22:09:48.27 ID:???
>>451
Wkipediaを読んで>>445の解釈なら読解力が不足しているとしかいえない

455 :Name_Not_Found:2016/12/25(日) 23:41:48.61 ID:???
https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3 では
「クロージャはプログラム内で環境を共有するための仕組みである。レキシカル変数はグローバルな名前空間を占有しないという点でグローバル変数とは異なっている。」
とあるし、グローバル変数とは別概念であることが分かると思うんだがなあ
「外側の関数(以下、エンクロージャ)」にも言及されているし、なぜ関数の入れ子が関係ないと思ったんだろう?

456 :Name_Not_Found:2016/12/25(日) 23:45:48.72 ID:???
>>448
これがクロージャ

return で、内側の関数を返したもの

457 :Name_Not_Found:2016/12/25(日) 23:59:37.93 ID:???
ここから(外側の関数の外のスコープから)見て内側にあって、
本来アクセスできない、i にアクセスできる

var closure = function enclosure () { // エンクロージャ(外側の関数)
var i = 0;
return function closure () { // クロージャ (内側の関数)
return i++;
};
}();

クロージャは、クラス・オブジェクトと同じ仕組み。
obj.i

オブジェクトの外側のスコープから、メンバーにアクセスできる。
i がメンバ変数で、closure がメソッド

458 :Name_Not_Found:2016/12/26(月) 00:13:57.22 ID:???
クロージャは「仕組み」というより「現象」だよ。

459 :Name_Not_Found:2016/12/26(月) 00:29:00.27 ID:???
個人的に気になってるんだけど、これはなんて呼ぶ?
var f = function(obj){
// obj にアクセスできるのはこの中だけ
}.bind(null, { hoge: 1 });

460 :Name_Not_Found:2016/12/26(月) 01:00:39.70 ID:???
>>459
呼び方知らんが、
ほかにもapplyとcallでobjにアクセルできる

461 :Name_Not_Found:2016/12/26(月) 03:37:55.54 ID:???
>>459
引数束縛の事?

462 :Name_Not_Found:2016/12/26(月) 03:41:42.76 ID:???
>>456
一応、指摘しておくが、return で内側の関数を返さなくてもクロージャ
エンクロージャ(外側の関数)、クロージャ(内側の関数)の関係性さえ成立すればそれはクロージャと呼ばれる
>>436は「入れ子の状態 === クロージャ」と誤解されうるのが間違っているが、成立条件そのものは間違っていない

463 :Name_Not_Found:2016/12/26(月) 03:50:20.30 ID:???
>>459
bindで引数束縛されたら call, apply でも書き換えられないと思うが
(というか、this 値を書き換えないのに call, apply を持ち出すのはどうなんだ…)

var f = function(obj){
console.log(obj.hoge);
}.bind(null, { hoge: 1 });
f.call(null, {hoge:2}); // 1
f.apply(null, [{hoge:2}]); // 1
f({hoge:2}); // 1

464 :Name_Not_Found:2016/12/26(月) 10:57:44.71 ID:???
カリー化/部分適用/引数束縛/の違いを理解してない人は結構見るね
プログラム板でbindでthis束縛したコードに対して「コメントがなければ意味がわからないようなコードを書かないでください」と指摘した彼は部分適用すら知らなそう

465 :Name_Not_Found:2016/12/26(月) 11:06:24.47 ID:???
>>461,463,464
ありがとう。引数束縛だね。

466 :Name_Not_Found:2016/12/26(月) 12:53:38.74 ID:???
>>455
グローバル環境を閉じ込めた、グローバル空間のクロージャ、というか普通の関数と
「外側の関数」内で作られたクロージャに本質的な差違はないですよね?
「外部の環境を閉じ込めた関数オブジェクト」こそが本質的な定義なのは明らかです
理解出来ませんか?

467 :Name_Not_Found:2016/12/26(月) 22:28:37.83 ID:???
>>464
これか? 動かないコード書いてドヤ顔してたのお前か?

'use strict';
var foo = function foo () {
return this++; // ES5非対応ブラウザをサポートするなら this.i++;
}.bind(0); // 同上。{i: 0}

468 :Name_Not_Found:2016/12/26(月) 22:38:51.62 ID:???
>>467
訂正された後も使えないコードだから使うな、は意味不意だったな

469 :Name_Not_Found:2016/12/26(月) 22:46:42.31 ID:???
function foo () {
 return foo.i++
}
foo.i = 0

つーかこれでいいやん。
なんで回りくどいことしてんの?

470 :Name_Not_Found:2016/12/26(月) 22:51:15.15 ID:???
>>466
(function(){
"use strict"
〜処理
}); // または、})();

普通は、グローバル空間を汚さない。
ファイル全体を、function式で囲っている

471 :Name_Not_Found:2016/12/26(月) 23:40:40.78 ID:???
それが理想なんだけどなー
コンソールでデバッグするときにブレークするのが面倒だから、ついついグローバル空間に定義しちゃうわ

472 :Name_Not_Found:2016/12/27(火) 00:32:34.33 ID:???
こんな感じか
https://jsfiddle.net/o3qxmc2j/

>>471
そんなあなたにはブロックスコープがお勧め

473 :Name_Not_Found:2016/12/28(水) 20:28:45.03 ID:???
>>469
そもそもそれ何がしたいコードなのか分からない

474 :Name_Not_Found:2016/12/28(水) 22:21:00.44 ID:???
>>469
理由は http://echo.2ch.net/test/read.cgi/tech/1472426483/594 に書いてあったが、君は何を見ていたんだ?

475 :474:2016/12/28(水) 22:24:00.36 ID:+3EJ5r/z
ごめん、>473に釣られて反応したけど>>471で納得してるから今更感があるな…

476 :Name_Not_Found:2016/12/29(木) 11:11:31.79 ID:???
A.htmlからB.htmlへのリンク(同一サイト)があって、
両方を対象としたユーザースクリプトでbeforescriptexecuteを実行させてるんだけど、
Aを開くとちゃんと動作するのに、AからBへ飛ぶと動作しない
Aを経由せずにBを直接表示すると動作する

AB両方でbeforescriptexecuteを動作させるにはどうしたらいい?

477 :476:2016/12/29(木) 11:37:17.73 ID:???
原因だけわかった
AからBへのリンクはtarget="_blank"されてたんだが
こいつを除去するとAB両方で動作した

何故target="_blank"で開くと駄目なんだろう

478 :Name_Not_Found:2016/12/29(木) 13:50:20.01 ID:???
本題から逸れるけど、beforescriptexecuteは削除された仕様だからいずれは実装(Fx)からも削除されるんじゃない?

479 :Name_Not_Found:2016/12/29(木) 13:56:47.26 ID:???
>>477
ブラウザの仕様だね
FirefoxならGMでウインドウを開くようにすれば動くよ

480 :476:2016/12/29(木) 14:24:47.38 ID:???
>>478
個人的に動かしてるだけだからとりあえず今動けばいいや

>>479
仕様なのか・・・覚えとく

481 :Name_Not_Found:2016/12/30(金) 13:24:29.48 ID:???
ああいう同期系オブザーバーは全部非推奨で非同期APIを使ってねとなってる。

482 :Name_Not_Found:2016/12/31(土) 01:14:05.49 ID:???
あれを非同期でやって間に合うのか

483 :Name_Not_Found:2016/12/31(土) 15:44:10.02 ID:???
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

484 :Name_Not_Found:2016/12/31(土) 15:59:40.13 ID:???
束縛っていまいちどういうことかわからないのだけど

(function(){

})(koko);

kokoに書くと何かいいことがあるんですか?

485 :Name_Not_Found:2016/12/31(土) 16:02:54.74 ID:???
>>484
それは何も嬉しいことはない

486 :Name_Not_Found:2016/12/31(土) 16:03:52.34 ID:???
そかぁ〜

487 :Name_Not_Found:2016/12/31(土) 18:29:30.91 ID:???
>>484
kokoに関数式を書けば、即時関数内に関数内を置いた時より上位のスコープに関数を置くことが出来る

488 :Name_Not_Found:2016/12/31(土) 19:05:57.04 ID:???
そこに書いたところで誰も参照してない

489 :Name_Not_Found:2016/12/31(土) 22:20:16.44 ID:???
仮引数にも指定して使う

(function(foo){
foo();
})(function foo () { console.log('foo'); });

490 :Name_Not_Found:2016/12/31(土) 23:15:05.43 ID:???
>>489
スコープの外側でfoo関数が定義されてしまうのでこっちの方が良い

(function(foo){
foo();
})(function () { console.log('foo'); });


もしくはこっち

(function(){
function foo() { console.log('foo'); }
foo();
})();

491 :Name_Not_Found:2016/12/31(土) 23:21:01.68 ID:???
>>490
スコープの外側で関数が定義されるのは IE8- のバグぐらいだと思うのだが…

492 :Name_Not_Found:2016/12/31(土) 23:24:54.97 ID:???
>>490
あと、後半のコードは関数foo内コードのスコープが異なる
即時関数内でローカル変数が定義されるとクロージャで参照するが、>>489は参照不可能
実引数に関数式を指定するのはそのため

493 :Name_Not_Found:2016/12/31(土) 23:59:37.60 ID:???
> 即時関数内でローカル変数が定義されるとクロージャで参照するが、>>489は参照不可能

ん? どっちもクロージャーだよ。こう書けばわかるでしょ。

var foo = 'foo'
(function(foo){
foo();
})(function () { console.log(foo); });

494 :Name_Not_Found:2017/01/01(日) 06:42:59.89 ID:???
>>493
それはグローバル変数になっているからコードの意図が違う
こういう事(GCの挙動にも影響があるのできちんと使い分ける)

(function (foo) {
 var hoge = 1;
 foo();
}(function foo () {
 console.log(hoge); // ReferenceError
}));

(function () {
 var hoge = 1;
 function foo () {
  console.log(hoge); // 1
 }
 foo();
}());

495 :Name_Not_Found:2017/01/01(日) 08:18:11.06 ID:???
>>490
> スコープの外側でfoo関数が定義されてしまうのでこっちの方が良い
それは本当?
古いIEならともかく、現在のブラウザでは起こり得ないと思ってた

496 :Name_Not_Found:2017/01/01(日) 09:55:03.93 ID:???
javascriptカオス・・・

497 :Name_Not_Found:2017/01/01(日) 13:37:39.81 ID:???
>>494
> それはグローバル変数になっているからコードの意図が違う
グローバル変数とは限らないだろ。


(function() {
 var foo = 'foo'
 (function(foo){
  foo();
 })(function () { console.log(foo); });
})

だいたいグローバル変数だからって何の関係もないし

498 :Name_Not_Found:2017/01/01(日) 14:02:09.87 ID:???
>>497
スコープが一段深くなるので>>489>>494とは別物だと思うけどね
いずれにしても>>490で主張されていた「>>489より良い理由」はない

499 :Name_Not_Found:2017/01/01(日) 14:04:51.10 ID:???
こっちのほうがいいよ。なぜなら使わなくて冗長な関数名 foo がないから

(function(foo){
 foo();
})(function () { console.log('foo'); });

500 :Name_Not_Found:2017/01/01(日) 14:21:23.03 ID:???
>>492でいいたいことは>>494で伝わると思うのだが、なぜ>>497のような斜め上の反論が返ってくるのかね…
>>490の「スコープの外側でfoo関数が定義されてしまう」は明らかに誤りだと思うが、認める素振りすらない

501 :Name_Not_Found:2017/01/01(日) 14:26:41.36 ID:???
(function(i){
console.log(i);
})(i);

502 :Name_Not_Found:2017/01/01(日) 17:48:55.10 ID:???
なにそれエロい

503 :Name_Not_Found:2017/01/02(月) 08:11:41.35 ID:???
console.trace()を使えば関数名の重要性を理解出来るだろう

504 :Name_Not_Found:2017/01/02(月) 10:03:27.20 ID:???
行番号で特定できるからそれはどうでもいいかな

505 :Name_Not_Found:2017/01/02(月) 10:11:50.12 ID:???
それは観点がずれてる

506 :Name_Not_Found:2017/01/02(月) 14:30:32.99 ID:???
デバッグの為に関数名を付けるというのはよく聞く話だな

507 :Name_Not_Found:2017/01/02(月) 17:55:15.77 ID:???
無名関数の引数に渡した無名関数
って人間が言いづらいかもね

508 :Name_Not_Found:2017/01/02(月) 18:20:59.16 ID:???
単に引数に渡した無名関数でいいのでは?

509 :495:2017/01/02(月) 19:27:52.70 ID:tXPfEFvT
結局、>>490が指摘していた「スコープの外側でfoo関数が定義されてしまう」は間違いでいいの?
仕様書を見て確かめてるけど、そんな仕様見つからないし、490は黙りを決め込むし

510 :Name_Not_Found:2017/01/02(月) 20:49:06.95 ID:???
>>484
遅レスだけど、windowやdocumentを引数に落とし込んでやると、そうでない場合よりアクセス速度が速くなるらしいよ。
(function(){
window; // 遅い
})();
(function(window){
window; // 速い
})(window);

511 :Name_Not_Found:2017/01/02(月) 20:57:43.99 ID:???
>>510
それは別にローカル変数使っても同じなので

512 :Name_Not_Found:2017/01/02(月) 23:13:11.92 ID:???
>>489-490
関数の引数内は、関数の内側(関数スコープ)じゃないの?

513 :Name_Not_Found:2017/01/03(火) 03:36:27.61 ID:???
JavaScript初級者のためのコーディングガイド
http://qiita.com/raccy/items/bf590d3c10c3f1a2846b

514 :Name_Not_Found:2017/01/03(火) 03:51:16.04 ID:???
横暴過ぎて吹く

515 :Name_Not_Found:2017/01/03(火) 04:10:42.65 ID:???
> JavaScript初級者のための

なんで「初級者のため」って書いているかわかるかい?

これ、言い訳なんだよ。

これは自分が初級者のためのものしかかけないという言い訳
上級者にとって当てはまらない。初心者向けなんだから勘弁してください。
ということ

反論されたら、絶対言い出すって
「初心者は馬鹿だからこれぐらいしてやらないとだめなんだ」っていう
上から目線

516 :Name_Not_Found:2017/01/03(火) 06:01:26.30 ID:???
ほーらなw 言い訳始めたwww

> 私は「ここに書いている内容がわからない」レベルを想定しています。
> 冒頭でも書いていますが、初心者を脱した人、つまり、その内容を
> 理解している人には特に言うことはありません、わかってやっているはずなのですからね。

結局、自分が初心者向けにしかかけないってことなんだよ。
だって自分が初心者を脱してないのだから。

517 :Name_Not_Found:2017/01/03(火) 06:52:39.17 ID:???
別に言い分はわからんでもない

でも配列をforで回してるコードが読めないとか
varの意味すらわからんなんて奴がいたらそれはそれで嫌だろ

518 :Name_Not_Found:2017/01/03(火) 07:47:19.09 ID:???
コーディングガイドというのは初心者を押さえつけるためのものじゃなくて
上級者も含めたベストプラクティスなんだよね。
だから初心者と上級者でルールが変わるなんてのはありえないわけ

519 :Name_Not_Found:2017/01/03(火) 08:08:40.48 ID:???
ここにも「ゆとりの為に釣り発言して誘導してやったんだ」な言い訳しか出来ない上から目線の奴がいるな

520 :Name_Not_Found:2017/01/03(火) 08:11:31.50 ID:???
>>513
Airbnb JavaScript Style Guideからパクったやつは
問題ないけど、それ以外の独自部分は全部クソだなw

521 :Name_Not_Found:2017/01/03(火) 08:24:18.84 ID:???
>>518
それはちょっと違うと思う
いくらベストプラクティスと言ってもどれも限定条件下のものだし
それが初心者か上級者かの条件であってもいいと思う

522 :Name_Not_Found:2017/01/03(火) 08:26:38.84 ID:???
> それが初心者か上級者かの条件であってもいいと思う

ありえない。チームに上級者が加わるとそれぞれでルールが変わることになる。

523 :Name_Not_Found:2017/01/03(火) 15:15:49.13 ID:???
>>513
コメントで言い訳ばっかり&上から目線過ぎてワロタw

ほんと想定通りことしか言わんガキだったな。

524 :Name_Not_Found:2017/01/03(火) 18:55:58.00 ID:???
実務に全く即してないからな。
ほう、IEを捨てる、出来たらいいねー、
でも、会社で業務の為にフリーソフトを、それも結構な台数入れるって法務絡めて結構めんどくさいやりとり要るよ、とか
基幹システムはIEしか存在しない事になってるから使用禁止には出来ないよとか、狂気の沙汰が大量にあるのに。

525 :Name_Not_Found:2017/01/03(火) 18:58:31.17 ID:???
虎(Airbnb)の威を借る狐

526 :Name_Not_Found:2017/01/03(火) 19:05:03.88 ID:???
初心者向けというのなら初心者に説明するべき
なのに、初心者向けだからわざと書いていないとか言い出してるしなw

理由を書かないのが何故いけないのかって?
そりゃこのルールが妥当かを判断するためだろうが。

レビューする以前の問題なんだよ。
コメントで聞かれている & 答えている量が多ければ多いほど
このガイドラインには重要な事が書かれていない文章だってこと

527 :Name_Not_Found:2017/01/03(火) 21:29:13.85 ID:???
>>522
チームで上手くやっていくためのコーディングルールならそうだよ。
それは適応範囲を極めて限定してるのでそれだけの条件で成り立っているが、
より一般的に言う場合は別の条件を付けないといけない。
いくら主観とは言え、ありとあらゆる場合のベストプラクティスは誰も自身を持って主張できるものではないからね。
上で言い訳言う言葉があったけど、それがまさに正しい。
取り敢えず今回のチーム内ではこのルールにしておこうよ(本当にこれが最適とは言わないけど)、
という言い訳か、他の条件の言い訳かという違いだよね。

528 :Name_Not_Found:2017/01/04(水) 04:32:28.46 ID:???
>>527
チームなら全員一緒だろ。

初心者か上級者で変わるのがありえないって
いってんの。ばかじゃねーのか

529 :Name_Not_Found:2017/01/04(水) 04:38:18.41 ID:???
それからなんで一流のプロが仕事してる場に新人が入ってきたからって
新人のレベルに合わせなきゃいけないんだっつーの
合わせるならプロのレベルに合わせろよ。
包丁は危ないからって使用禁止にするのかよw

530 :Name_Not_Found:2017/01/04(水) 05:16:30.34 ID:???
そもそもベストプラクティスというのは
環境(言語のバージョンやOSなど)によって変わることはあっても、
能力によって変えるものじゃない。

言葉通りだ。上級者に当てはまらないのであれば
それはベストではない。

そういうのは補助輪であって、それが必要な初心者にとっては
ベストプラクティスというのはまだ達成できない目標という扱いだ。

補助輪をベストプラクティスにしてしまえば
ずっと補助輪をつけたままになる。チーム全員がな

531 :489:2017/01/04(水) 08:02:28.08 ID:Adtxa/kA
>>512
仮引数ならその通り
実引数なら即時関数外のスコープ
詳しくは>>494

532 :Name_Not_Found:2017/01/04(水) 09:37:56.93 ID:???
>>528
なにを言ってんだか。
チームで定めるコーディングルールと、
ネットで色んな人が書く、俺の考えたこの言語のベストプラクティスはこれだ、
って話は別物だって言ってるんだよ。

それと習熟度によって当然オススメのやり方というのは変わりうる。
小学生や中学生にあえて便利な公式をすぐに教えないのと同じように、
何が良い物で何が悪い物かは能力によって変わる。

色々な学問に比べて体系づけられてなく学習しにくいのが
プログラミング言語の欠点だとずっと思ってるが、
本来なら段階と言うものがきちんと存在するはずだ。

その段階に応じて指導の仕方も変わる。
本当はこうだけど、今の段階ではこうしなさいとか、
次の段階に進めば、以前の縛りは忘れて、本当はこうなのよとか。
何度も言うが、絶対的で完璧なベストプラクティスなど誰も主張できるものではない。

533 :Name_Not_Found:2017/01/04(水) 12:34:25.81 ID:???
>>513
初心者にトランスパイラ前提のコーディング勧めるって頭イカれてんな

534 :Name_Not_Found:2017/01/04(水) 14:42:38.34 ID:???
>>533
おい!引きこもり!

535 :Name_Not_Found:2017/01/04(水) 20:48:25.40 ID:???
>>533
最後の方だからノリで書いているんじゃないか
最後まで読めた人はもう初心者卒業とか

536 :Name_Not_Found:2017/01/04(水) 21:29:13.60 ID:???
>>532
> 小学生や中学生にあえて便利な公式をすぐに教えないのと同じように、
> 何が良い物で何が悪い物かは能力によって変わる。

お前は全員中学生のチームで仕事してんのか?
来年もお前のチームは全員中学生なんか?
それとも一年単位で学年が上がっていくんか?

仕事は学校じゃねーんだよ。チームの中には技術力が高い人から低い人まで様々いる。
技術力っていうのは一般的に経験とともに上がっていくものだが
そのスピードは人それぞれ違う。一年単位で変わるものでもない。

経験積んだらこの機能まで使っていいよ。みたいな
技術力に応じて変えるコーディングルールなんて聞いたことないだろ?
小学生はここまで、中学生はここまでみたいな学校と同じやり方はできない。

だから全員下のレベルに合わせるか全員上のレベルに合わせるかしかない。
その時下のレベル、成長が遅い人に合わせたら誰も上達しない。
ってか、なんで新人を甘やかすんだよ? 上のものが下に合わせるんじゃなくて
そこは「お前はこんなこともできないのか!」って叱咤すべき所だろ。

ベストプラクティスというのは技術レベルが高い人にとってのものだけでいい。
それが実現できないやつは「お前はまだ未熟者だ」の一言でいいだろ。
なんで甘やかすんだ。ほんと訳わからんわw

537 :Name_Not_Found:2017/01/04(水) 22:38:11.55 ID:???
>>536
妹とお風呂で…まで読んだ。

538 :Name_Not_Found:2017/01/04(水) 23:06:32.72 ID:???
なにそれエロい

539 :Name_Not_Found:2017/01/05(木) 00:24:20.66 ID:???
妄想もこじらせるとよくないからそのくらいにな

540 :Name_Not_Found:2017/01/05(木) 01:11:58.23 ID:???
というか、仕事なら他人が書いたコードを
修正するなんて普通にあるだろ。

人それぞれ書き方を変えるって、
書き方がめちゃくちゃになるだけだろ

これは上級者のコードです。習ってないから修正できません。
よくわからないので初心者用コードで書きなおしますとかな。

541 :Name_Not_Found:2017/01/05(木) 02:07:27.90 ID:???
中華の味付けの味覇使ったら、どんな奴が作っても75点のチャーハン作れる。
たとえ、全部自分で作ったら95点くらい付けても良い美味さのチャーハン作れるやつも、75点になる。

作り方の最低限の枠を決めるべきであって、
作り方すべてを決めると、結局全員が不幸な75点しか作れず、さらに何かの拍子でその構成要素が使えなくなると恐竜のように全員絶滅する。

ガイドラインや、ベストプラクティスは、マジで意識高いだけの奴が作らないでくれって典型。
できれば何もやりたくないアーキ屋が嫌々決めたくらいのルールが一番使える。

542 :Name_Not_Found:2017/01/05(木) 02:19:21.18 ID:???
JavaScriptを語るスレを立てて長文君達はみんなそっちに移った方がいいんじゃねーの
ム板の連中と一緒にさ

543 :Name_Not_Found:2017/01/05(木) 02:39:11.67 ID:???
>>536
考え方が狭いよ。
自分はこれがいいと思ってて基本的にそうしてるけど、人には勧められないとか、
慣れていない人には別のやり方をオススメするなんてどんな事においてもよくある事だろう。

特にJavaScriptはスクリプト言語であって、様々な場所で使われ色々な顔を持ち、多彩な書き方ができる言語なんだからさ。

544 :Name_Not_Found:2017/01/05(木) 02:51:38.84 ID:???
>>542
そこにもまた、babel君という滑稽なやつが居るんだよ。

545 :Name_Not_Found:2017/01/05(木) 02:52:44.55 ID:???
ショートコーディング重視かパフォーマンス重視かでベストプラクティスは変わるからなぁ

546 :Name_Not_Found:2017/01/05(木) 03:16:25.51 ID:???
>>544
言い合ってる奴らはお互いに楽しんでるんだから適切なスレでなら別に問題ないじゃん
ただここは質問スレだからさ

547 :Name_Not_Found:2017/01/05(木) 03:27:25.18 ID:???
スポーツの指導でさえ「いいからこうやれ」では通じなくなってうん十年だというのになあ

548 :Name_Not_Found:2017/01/05(木) 06:18:21.56 ID:???
つうかなんでひたすらチームで仕事する場面に拘ってるんだろうね?
チーム内で統率を取るために一時的に定めるルールと
ネットで独学する人に対してのアドバイスの文句は違って当然だろうに

549 :Name_Not_Found:2017/01/05(木) 21:45:42.74 ID:???
>>543
> 自分はこれがいいと思ってて基本的にそうしてるけど、人には勧められないとか、
> 慣れていない人には別のやり方をオススメするなんてどんな事においてもよくある事だろう。

お前、自分の書き方にこだわりがあるんだねw

俺はない。だから悪い書き方以外であればどれでもいい。
一人でやってるなら自分の好きにやればいいけど
仕事で普通は複数人でやる。だからどっちみち自分の好みを完全に選ぶことはできない。

だから、こういうのは有名なコーディングルールをどれか選んで採用すればいいんだよ。
JavaScriptであればAirbnbを採用しておしまい。有名なコーディングルールは
世界中の人からレビューされてる質がいいものだからね。


お前さ、自分で自分を苦しめてるだけだよね?
上級者と初心者で書き方を変える必要があるといってる。
お前の方がコードの書き方にこだわってる。(自分は)これでなければいけないと。
こだわってるから、人には勧められない〜とか言ってるんだよ。


おかしな話だね。俺は逆で書き方はいろいろあってそのどれでもOKと言ってる。
だからこそ仕事では一つのルールでいい。俺に言わせればそれで "も" OKなのだから。
お前のような悩みはまったくない。

550 :Name_Not_Found:2017/01/05(木) 21:59:02.81 ID:???
>>545
> ショートコーディング重視かパフォーマンス重視かでベストプラクティスは変わるからなぁ

こだわりあるんだねw

ショートコーディング か パフォーマンスか のどちらかを重視しないといけないの?

そんなものルールにするなよ。ルールにしなければどちらでもOKだろ

世の中の有名なコーディングルールを調べることをおすすめる。
何でもかんでも決めるんじゃなくて、決めるべきことだけを決めているから。

っていうか自分で決めないで、Airbnbとかを採用するだけにしておけば
こんなことに悩む必要もないのに。

551 :Name_Not_Found:2017/01/05(木) 22:21:56.51 ID:???
>>541
> ガイドラインや、ベストプラクティスは、マジで意識高いだけの奴が作らないでくれって典型。

意識は関係ない。どれだけレビューを受けているかどうかだ。

社内独自規約みたいなものは、社内でしかレビューされてないし、
社内の力関係で決められることがあるから、どれもろくな規約にならない。

オープンでgithubでプルリクを受け付けているような、ものであれば
制限がかかるようなルールは作られない。
75点未満のやつは75点に底上げされ。95点だせるやつは95点になるような
制限がかからないルールになってる

552 :Name_Not_Found:2017/01/05(木) 22:25:57.81 ID:???
で、>>513がAirbnbで決められているもの以外がだめなのは、
レビューされてない独自のルールを作ってるから。理由を書いてないから。
上級者にはあてはまらない初心者限定のルールを作ってるから

Airbnbよりも優れていると思うならAirbnbにPRを出せばいい

553 :Name_Not_Found:2017/01/05(木) 22:55:08.62 ID:???
>>550
お前バカだから分かんないのかも知れないが
その二つは両立不可能だからな

554 :Name_Not_Found:2017/01/05(木) 23:54:37.94 ID:???
> その二つは両立不可能だからな

わかってるじゃないかw

両立可能だって言われる前に先手打ったんだろ?

じゃああえて言うわ。両立可能

555 :Name_Not_Found:2017/01/06(金) 00:17:34.78 ID:???
ずっぎゃぁーーーん

556 :Name_Not_Found:2017/01/06(金) 00:45:50.10 ID:???
>>553 の言う両立と >>554 の言う両立は同じなのかな?

557 :Name_Not_Found:2017/01/06(金) 01:10:06.69 ID:???
俺はjsの質問と回答が見たいだけでお前らの宗教には興味ないんだが

558 :Name_Not_Found:2017/01/06(金) 01:10:22.33 ID:???
>>551
お前頭弱いの?

559 :Name_Not_Found:2017/01/06(金) 01:41:07.68 ID:???
>>557
俺もだよ。だからこういうどこぞのガキが考えた
コーディングルールなんかいらない。
会社独自とかオレオレで作ったものなんかいらない。
Airbnbなどの有名なのを導入して終わらせろって言ってる。

560 :Name_Not_Found:2017/01/06(金) 13:42:07.76 ID:???
コーディング・ルールということだが、
ローカル・ルールなんだよな
アホ

561 :Name_Not_Found:2017/01/07(土) 00:27:19.86 ID:???
なんでそこまでしてローカルルール作りたいんだろうな。時間の無駄だろ。
たかがコーディングルールに独自性をだそうと手間隙かけるなって
できあいのものをつかえばいい

562 :Name_Not_Found:2017/01/07(土) 12:33:39.16 ID:???
>>561
短い時間でクオリティ保つためにはある程度は仕方ないんじゃね?

563 :Name_Not_Found:2017/01/07(土) 12:45:46.38 ID:???
それもローカル・クオリティ

564 :Name_Not_Found:2017/01/07(土) 12:51:11.08 ID:???
ん?
複数社でまたがるような仕事ってよくあるじゃん?
ウェブの仕事は一時受けが代理店なことが多いし

565 :Name_Not_Found:2017/01/07(土) 13:20:01.72 ID:???
ローカルクオリティじゃだめだなw

566 :Name_Not_Found:2017/01/07(土) 14:17:28.20 ID:???
なんかGoogleが作ったJavaScriptのコーディングルールあったよね?
2013年くらいのだったと思うけど

567 :Name_Not_Found:2017/01/07(土) 14:29:29.03 ID:???
>>566
これかな?

Google JavaScript Style Guide
https://google.github.io/styleguide/jsguide.html

568 :Name_Not_Found:2017/01/07(土) 14:45:57.21 ID:???
日本語に訳せよ

あったわ
ttp://cou929.nu/data/google_javascript_style_guide/

569 :Name_Not_Found:2017/01/07(土) 14:48:07.41 ID:???
>>568
それ古い
Revision 2.93ってかいてあるだろ

570 :Name_Not_Found:2017/01/07(土) 14:55:00.55 ID:???
なら最新版をJapanizeで訳してくれや

571 :Name_Not_Found:2017/01/07(土) 14:56:33.30 ID:???
このコミットだな。 3年以上も前だ

https://github.com/google/styleguide/commit/7b24563e08b7e6a6477eed22bca2eb4e6ac093fa#diff-45bd843b0d7647017672882356fdcdce
Update C++ style guide to 3.274: …
mark@chromium.org committed on 26 Sep 2013

いまメンテされてるのはこっち
https://github.com/google/styleguide/commit/8f254427d96220ce86250b0e55da09dfa082765d#diff-b6656ccb410bf33904f03042f8376cd9
Update and replace JavaScript style guide. …
shicks committed with shicks on 3 Nov 2016

572 :Name_Not_Found:2017/01/07(土) 14:58:24.73 ID:???
>>570
はいどうぞ

https://translate.google.com/translate?sl=en&tl=ja&js=y&prev=_t&hl=ja&ie=UTF-8&u=https%3A%2F%2Fgoogle.github.io%2Fstyleguide%2Fjsguide.html&edit-text=

573 :Name_Not_Found:2017/01/07(土) 15:07:41.48 ID:???
論外

574 :Name_Not_Found:2017/01/07(土) 15:08:24.07 ID:???
ローカルルールがだめなのは、
それに対応したツールを探す or 設定するのが大変なんだよな。

コーディングルールを守っているかを人間がチェックするのでは時間がかかる。
そんなコード(悪くないのであればどれでも良い)に時間を取られたら本末転倒

だからツールを使って自動チェックするわけだが、有名どころであれば
ツールがあるし設定もある。だからすぐに使える。

でもローカルルールなんか作るとツールをそのまま使えない。
また時間がかかる。本末転倒。

575 :Name_Not_Found:2017/01/07(土) 15:09:29.52 ID:???
これくらいの平易な英語ぐらい読まないとこの先生きのこれないぞ

576 :Name_Not_Found:2017/01/07(土) 19:15:14.48 ID:9kYWaPPw
splitについて質問です
aとbの連続する部分で区切って配列にしたいのに

var str = 'あいうaabbえおあいaうえおbbbbあいうえお';
str.split(/(a|b)+/)

で実行すると
["あいう", "b", "えおあい", "a", "うえお", "b", "あいうえお"]
のように本来消えるはずの"b"や"a"が混ざった配列になってしまいます

577 :Name_Not_Found:2017/01/07(土) 19:23:28.70 ID:???
>>576
str.split(/(?:a|b)+/) あるいは str.split(/[ab]+/)
正規表現でキャプチャすると配列に紛れ込むので、キャプチャしなければok

578 :Name_Not_Found:2017/01/07(土) 19:48:34.87 ID:9kYWaPPw
>>577
なるほどsplitの仕様だったんですね
余談ですがどうしても/(ab|de)+/のように2通りの文字列を扱いたい場合はどうすれば良いんでしょうか?

579 :Name_Not_Found:2017/01/07(土) 20:12:11.79 ID:???
変数aがtrueの場合アラートを実行という記述は以下でもできますが、

let a = true;
a && alert('a is true!')

これはバッドプラクティスですか?
きちんと

if ( a ) {
alert()
}

と記述した方が良いのでしょうか?

580 :Name_Not_Found:2017/01/07(土) 20:17:33.04 ID:???
>>578
577にも書いたけど、(?:)とすればキャプチャしない。
つまり /(?:ab|de)+/ にすればok

581 :Name_Not_Found:2017/01/07(土) 20:26:55.52 ID:9kYWaPPw
>>580
ありがとうございます!
splitについての知識が増えました

582 :Name_Not_Found:2017/01/07(土) 22:07:49.18 ID:???
>>579
チーム内の取り決めによると思うけど。俺なら一行で if(a) alert(); と書くよ。
理由1: ifでも文字数がさほど変わらない。
理由2: ifの方が(俺は)読みやすい。
理由3: &&だと書けない構文がある(a && b = 1; とか a && return; とか)。
書けない構文の時にif()を使うくらいなら、全部if()に統一した方がいい。

583 :Name_Not_Found:2017/01/07(土) 23:33:53.47 ID:???
>>582
ty

584 :Name_Not_Found:2017/01/07(土) 23:35:46.93 ID:???
>>579
構文として
if ( a ) {
alert();
}
と記述した方が間違いないよ

585 :Name_Not_Found:2017/01/08(日) 00:01:40.73 ID:???
https://github.com/airbnb/javascript#blocks--braces

// bad
if (test)
 return false;

// good
if (test) return false;

// good
if (test) {
 return false;
}

586 :Name_Not_Found:2017/01/08(日) 00:04:52.98 ID:???
a && alert('a is true!')
if (a) alert('a is true!')

長さでいうなら、上の書き方をする理由はないな。

587 :Name_Not_Found:2017/01/08(日) 11:44:22.44 ID:???
カッコなんかいらん
ただしlet-forじゃ必須だし、他との兼ね合いによる
短いほうが見やすいことは確かだが、一貫性も大事

と言っても比較的どうでもいい部類のことではある

588 :Name_Not_Found:2017/01/08(日) 11:59:18.95 ID:???
a && は個人的には使いたいけど
ifをエディタで強調させた方がどうやっても見やすい

589 :Name_Not_Found:2017/01/08(日) 12:01:25.39 ID:???
お作法関係では偉そうな書き方する奴が多い
結果として受け入れられないんじゃなんのために書いてるかわからないじゃない
上でリンク貼られてた理由すら書かずに「こう書け」「これは駄目」みたいなのは論外
むしろ理由説明できない程度の理解しかしてないのではないかと思う

590 :Name_Not_Found:2017/01/08(日) 13:04:00.21 ID:???
そう。だからコーディングルールは重要。
重要というのは自分で作るなという意味も含まれている。
自分で作ると余計なルールまで作る傾向にある。

有名所のコーディングルールであれば、
どちらでもいい書き方を制限されることはない。

591 :Name_Not_Found:2017/01/08(日) 13:14:23.00 ID:???
所詮は言語、同じ日本語でも方言というモノがある
自分の属するローカルグループでは通用しても、
他のローカルグループでは100%通用しません
きちんと標準語を使いましょうね

592 :Name_Not_Found:2017/01/08(日) 13:53:55.97 ID:???
switch(hoge()){
case
case
}
文の場合caseの数だけhoge()を実行しているのでしょうか?

593 :Name_Not_Found:2017/01/08(日) 14:41:25.31 ID:???
>>592
試してみればわかるだろ

594 :Name_Not_Found:2017/01/08(日) 14:49:58.58 ID:???
ソフトウェアなんかPC上で鼻くそほじりながら全ての作業ができるってのに
なぜ実際にやってみないのか
謎である
そんなやつにはハードウェア設計なんか到底無理だな

595 :Name_Not_Found:2017/01/08(日) 15:12:50.14 ID:???
ハード屋さんとはちょっと付き合いがあるが
何でこんな仕様にしたんだろうと思うことはソフト屋ならないとは言わせない

596 :Name_Not_Found:2017/01/08(日) 16:26:45.34 ID:???
規格で複数回評価が許されてるか確認するのに実行結果を見るのは意味ない。

>>592 がどっちの話をしたいのかは分からんが。

597 :Name_Not_Found:2017/01/08(日) 16:41:44.99 ID:???
>>596
> 規格で複数回評価が許されてるか確認するのに

じゃあ1分で確認してきて。
俺は1分で実行結果を見たからさ

598 :Name_Not_Found:2017/01/08(日) 16:52:39.75 ID:???
>>594
これ言うやつはだいたいキチガイだからな。
システムエンジニアって座ってカチャカチャキーボード触ってたらお金もらえるんだから良いねーwwww
なんでそんな奴らの給料が俺らより高えのか全然わからねえよww
あーパソコンの先生はすげえなぁ!
って、ヤジる土方と全くレベルが変わらん。

599 :Name_Not_Found:2017/01/09(月) 11:50:33.71 ID:???
>>596
「規格===仕様」ならわからないでもないが、それなら>>592に「仕様書を読め」と回答して終わり
http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/12_Statements.html#section-12.11
http://www.ecma-international.org/ecma-262/7.0/#sec-switch-statement

600 :Name_Not_Found:2017/01/09(月) 13:54:47.31 ID:???
規格だの仕様の以前に個人的な方針の違いだと思うが

601 :Name_Not_Found:2017/01/09(月) 14:00:43.97 ID:???
>>600
>>579と取り違えてないか?
>>592のどこに「個人の方針」が入り込むというのか

602 :Name_Not_Found:2017/01/09(月) 17:38:31.36 ID:???
仕様が読めないなら動かして試せ。というのは当たり前。
それが間違いだというのは綺麗事。
それは何か疑問に思う度に分かってる人に質問すれば良いと言ってるのと同じ。
このスレ含む2chの質問スレではそれは許されていない。
出来る限り自分で試行錯誤し、それでもどうしようもないときだけ頼って良いところだ。

603 :Name_Not_Found:2017/01/09(月) 17:54:49.80 ID:???
>>602
それは仕事やってる人間のセリフじゃないな。
仕事というのは合法である限り
いかなる手段を取ってでも早く仕事を終わらせることだ

試行錯誤するよりも聞いたほうが早い。
自分だけで調べるよりも、他人を利用したほうが早い。
自分だけで頑張るとか時間がかかるだけだよ

604 :Name_Not_Found:2017/01/09(月) 17:55:47.74 ID:???
いくら仕様があっても確実性のあるのは実装

605 :Name_Not_Found:2017/01/09(月) 18:37:21.05 ID:???
文字列.split(/\d+/)でmatchした\d+の部分をgetする方法ありますか?

606 :Name_Not_Found:2017/01/09(月) 18:41:07.35 ID:???
>>605
ヒント
>>576-577

607 :Name_Not_Found:2017/01/09(月) 18:45:08.58 ID:???
>>603
他人に聞いた内容を鵜呑みにして嘘を教えられても知らんよ
自分で調べられない奴は必ず失敗するだろうな

608 :Name_Not_Found:2017/01/09(月) 18:48:16.01 ID:???
>>607
はは、他人のこと簡単に信じるわけないじゃないですかー

609 :Name_Not_Found:2017/01/09(月) 18:53:38.62 ID:???
>>602
「動かして試せ」は正論なんだが、「仕様と実装の違い」を言及している人(>596)への反論としては適切ではないな
動かして試した結果が「実装依存」なのか「仕様準拠」なのかは仕様書を読まなければ分からん
まあ、「>592 がどっちの話をしたいのかは分からん」といってる通りだと思うし、どうせ質問者はこのまま雲隠れするだろうけどな

610 :Name_Not_Found:2017/01/09(月) 18:55:05.87 ID:???
>>608
自分で調べられないから質問してるんじゃないのかね?

611 :Name_Not_Found:2017/01/09(月) 18:56:25.47 ID:???
>>605
var s = 文字列;
var n = s.match(/\d+/);
s.split(n);

612 :Name_Not_Found:2017/01/09(月) 19:03:47.50 ID:???
>>605
var string = 'abc012def345ghi678901jkm234';
string.match(/\d+|\D+/g); // ["abc", "012", "def", "345", "ghi", "678901", "jkm", "234"]

>>611
複数の数値文字列が存在した時に期待通りに動作しない

613 :Name_Not_Found:2017/01/09(月) 19:33:10.03 ID:???
他人を信用しないから他人に聞いたとしても自分でも調べ直して正しい内容を確かめる
だから、「他人に聞く場合」は「自分一人で調べる場合」の2倍の時間がかかる
他人に聞いて時間短縮できるのは「自分が調べる時間を省略してもいい」と思える程度に信頼している人に聞く場合に限る
勿論、2chにそれは求めない

614 :Name_Not_Found:2017/01/09(月) 20:00:52.58 ID:???
ある程度の経験者ならそうかもしれないけど。
初心者だったら自分で一から調べるよりは、誰かにアドバイスをもらってから調べた方が圧倒的に早いよ

615 :Name_Not_Found:2017/01/09(月) 20:12:33.23 ID:???
>>614
それは「他人に聞いた方が早い」じゃなくて「他人に聞くしか手段がない」が正しい
情報源がない以上、アドバイスした人を盲目的に信じるしかない

616 :Name_Not_Found:2017/01/09(月) 21:29:39.14 ID:???
まさにその通り。初心者はまず「他人に聞くしか手段がない」。
だから初心者はどんどん他人に聞くべき。

617 :Name_Not_Found:2017/01/09(月) 21:47:05.38 ID:???
> 文字列.split(/\d+/)でmatchした\d+の部分をgetする方法ありますか?
/\d+/ で複数の文字列がどうやってmatchするの?

618 :Name_Not_Found:2017/01/09(月) 21:50:43.72 ID:???
>>612
>>617

619 :605:2017/01/09(月) 22:00:36.50 ID:???
>>612
これです!サンクス!

620 :Name_Not_Found:2017/01/09(月) 22:06:57.05 ID:???
>>617
試せばわかる
var string = 'abc012def345ghi678901jkm234';
console.log(string.match(/\d+/));
console.log(string.match(/\d+/g));

621 :Name_Not_Found:2017/01/09(月) 22:12:15.13 ID:???
>>620
そういった意味ではなく、
質問に対しての率直な答えではないってこと
親切なのは解るけどねw

622 :Name_Not_Found:2017/01/09(月) 22:26:25.51 ID:???
>>616
初心者でも調べ方を知ったら自分で調べる事を勧めるがね
>603みたいなのはただの甘えてちゃんだな

623 :Name_Not_Found:2017/01/09(月) 22:38:52.27 ID:???
>>621
問題点を提示しただけで「直接的な答え」を与えたわけではない
何でもかんでも直接的な答えを教えればいい、というものでもないと思うし、>611にはあれで通じると思った
>611には難しすぎて理解できない、というならより具体的な質問が返ってくるだろう

624 :Name_Not_Found:2017/01/10(火) 02:43:24.94 ID:???
試してないけど/(\d+)/にするんじゃ駄目なのか

625 :Name_Not_Found:2017/01/10(火) 06:54:10.72 ID:???
>>609
正気に戻ったほうが良いよ
「仕様と実装の違い」を考えること自体がこのスレに置いてナンセンスだから
仕様重視の話がしたいのならECMAスレがあるじゃん

626 :Name_Not_Found:2017/01/10(火) 08:43:29.31 ID:???
>>624
駄目だね

627 :Name_Not_Found:2017/01/10(火) 09:11:45.07 ID:???
>>625
ここは仕様の話を禁止されているわけではないが、そもそも君は「仕様と実装の違い」を理解しているのか?
「仕様と実装の違い」を考えない人はその挙動が仕様なのか実装依存なのかを区別できないのである機能を実装する場合に「毎回、全ての実装でテストして共通動作を確認」する必要があり、膨大な手間を要する
仕様を読む人は全ての実装の共通動作を知っているので「テスト→修正」の手間は最小限で済む

http://caniuse.com/ 等で実装度合を確認する事は可能だが、仕様の全てが載っているわけではないし、>>592まで細かい挙動になると仕様書を直接読むより他に方法はないだろう
実装偏重な考えなら全ての実装(Google Chrome,Firefox,IE9,IE11,Edge,Safari,Android Chrome,iOS Safari,Node.js)でテストすれば終わりだが、手間だろう?
しかも、「確認していなかった実装で別の挙動をするかもしれない」という不安はどうしても拭えない
>>602のいう「仕様が読めないなら動かして試せ」も真理だが、それは「仕様を読めないなら」の前提付きの次善策だろう

628 :Name_Not_Found:2017/01/10(火) 09:35:48.35 ID:???
>>611の設計方針で発展させるならこんな感じじゃない?

var pattern = /\d+/g,
string = 'abc012def345ghi678901jkm234';
console.log(string.match(pattern)); // ["012", "345", "678901", "234"]
console.log(string.split(pattern)); // ["abc", "def", "ghi", "jkm", ""]

このぐらいは>>612の指摘で十分想定可能な範囲だと思うんだけどなー

629 :Name_Not_Found:2017/01/10(火) 10:24:23.98 ID:e6KNZujB
ものすごく基本的なところの質問なのですが、今時の開発? する時に必要なツールって何なのでしょうか
いろいろとサイト巡っていると、どこを見てもnode.jsという名前を見かけます
他にはgulp, browserify, webpack, Babel, Typescriptなどなど…たくさんあってよくわかりません

昔はテキストエディタだけで書いていたらしいですが、今はどういうのが標準的なのか教えていただけますか?

630 :Name_Not_Found:2017/01/10(火) 10:25:17.38 ID:???
>>605は/\d+/の部分をgetしたいととしか書いていない
>>611は率直な回答
>>612は更に親切な回答
テストの回答なら>>611は正解、>>612は不正解

631 :Name_Not_Found:2017/01/10(火) 11:22:43.83 ID:???
>>630
- >>611は質問文のsplitを読み飛ばし、「文字列に\d+でmatchさせるにはどうすればいいですか」と読んで回答した
- >>612はsplitはgフラグがなくてもgフラグを付いたかのように動作する為、「splitで分割処理される時にマッチする \d+」と解釈して回答した
splitがなければ>611が正解だろうが、質問者にとっては>612が正答だった(>>619)
これがテストで>611が正答ならsplitが出てくる意味がないからsplitの意味も踏まえて>612が正答と考えるのが正しいと思うんだけどね
(「問題文が厳密性に欠けていて不適切」と考える向きもあるかもしれないけど)

var string = 'abc012def345ghi678901jkm234';
console.log(string.match(/\d+/)); // ["012", index: 3, input: "abc012def345ghi678901jkm234"]
console.log(string.match(/\d+/g)); // ["012", "345", "678901", "234"]
console.log(string.split(/\d+/)); // ["abc", "def", "ghi", "jkm", ""]
console.log(string.split(/\d+/g)); // ["abc", "def", "ghi", "jkm", ""]

632 :Name_Not_Found:2017/01/10(火) 11:36:03.84 ID:???
>>627
君は大馬鹿者か?
「毎回、全ての実装でテストして共通動作を確認」
switchの挙動も理解していないレベルの者はむしろそれをしたほうが良いんだよ。

君はJSを学び始めた最初から仕様書を読んだのか?
君はこれから学び始める者に仕様書を勧めるのか?

文を読んで身に着けるのには限界がある
言語なんだから、まずは実際に試して体でどういうものなのか
常識を身に着けていかないといけない。

今回のことも、仕様がどうこういうレベルのことじゃない。
JSとして、プログラミング言語として、そういうものという常識問題であって、慣れの問題だ。

633 :Name_Not_Found:2017/01/10(火) 11:42:15.11 ID:???
年食って頭が固くなってくるとそういう事はできない

634 :Name_Not_Found:2017/01/10(火) 11:48:12.20 ID:???
すべて目的次第
それ以外何もない

635 :Name_Not_Found:2017/01/10(火) 11:55:41.44 ID:???
テストするのは当然なんだが、>>625みたいな分かってない奴に反論したくなる気持ちも分かる

636 :Name_Not_Found:2017/01/10(火) 12:06:06.42 ID:???
> JSとして、プログラミング言語として、そういうものという常識問題であって、慣れの問題だ。
初めはそれでいいが、仕様を読まずに「自分の経験こそが常識」な考えで突き進むと頭の固い人になると思う
仕様書を読むのも慣れの問題

637 :Name_Not_Found:2017/01/10(火) 12:26:35.71 ID:???
プログラミングで「常識」を持ち出したらお終いだと思ってる
そういう人は大抵、自分の中の「常識」を他人に押し付ける

638 :Name_Not_Found:2017/01/10(火) 12:31:40.74 ID:???
取り込み中失礼します。
JavaScriptって変数名をエスケープできますけど、これってどんなメリットありますか?
例えば hoge は ho\u0067e とも書けますよね。

639 :Name_Not_Found:2017/01/10(火) 12:38:01.75 ID:???
>>632
マルチバイト文字を文字コードに依存しない文字として入力できる

640 :639:2017/01/10(火) 12:39:17.06 ID:???
ごめん、間違えた
>>639>>638

641 :Name_Not_Found:2017/01/10(火) 12:44:07.44 ID:???
>>639
なるほど!ありがとうございます

642 :Name_Not_Found:2017/01/10(火) 12:58:00.45 ID:O8BJlict
自作ゲーム即売会「ゲームマーケット」に1万人超
http://www.nikkansports.com/general/nikkan/news/1750500.html
ボードゲームのオリジナルオーダー制作
http://www.logygames.com/logy/ordermade.html
カードゲームを自作する1 【自宅でカード印刷】
http://tanishi.org/?p=801
100円ショップでボードゲームを自作しよう
https://sites.google.com/site/jun1sboardgames/blog/makeyourbg
ノーアイデアでボードゲームを作ろう第1回「100円ショップで物を買う」
http://boardgamelove.com/archives/boardgame-make-1/
ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中
http://gigazine.net/news/20150820-board-game-crowdfunding/
実際のところ、自作ボードゲームってどれぐらい売れるもんなの?
http://roy.hatenablog.com/entry/2016/11/04/225009

643 :Name_Not_Found:2017/01/10(火) 19:07:06.46 ID:???
質問です
javascriptのメソッドを確認する方法はないのでしょうか?
func aaa() {...} がある場合、aaa で func aaa() {...} が分かりますが、
array.map(callback)のような、メソッド(map) を同じように確認したいのです

644 :Name_Not_Found:2017/01/10(火) 19:18:45.41 ID:???
>>643
普通に array.map とかすれば
function map() { [native code] }
って見れるよ。
処理の内容を確認したいって意味なら無理。

645 :Name_Not_Found:2017/01/11(水) 07:44:49.15 ID:???
ソースを見ればいい
https://chromium.googlesource.com/v8/v8/+/master/src/js/array.js#1118

646 :Name_Not_Found:2017/01/11(水) 09:41:35.40 ID:???
>>645
そういうことじゃないんだよおじちゃん

647 :Name_Not_Found:2017/01/11(水) 09:43:43.77 ID:???
どういうことなんだよ

648 :Name_Not_Found:2017/01/11(水) 10:54:34.10 ID:???
>>643
ネイティブコードはJavaScriptでコードが書かれているわけではないのだよ、坊や

649 :Name_Not_Found:2017/01/11(水) 14:06:48.35 ID:???
>>644
有難うございました、解決しました

650 :Name_Not_Found:2017/01/11(水) 14:08:46.99 ID:???
>>648
protoで上書きされている場合があるだろ?
ネイティブコード調べて何するんだ?
アホ

651 :Name_Not_Found:2017/01/11(水) 15:35:22.60 ID:???
>>650
質問者の目的を俺が知るわけがないだろう
目的を後出しして偉そうにするな

一応、いっておくが Array.prototype.map === "function map() { [native code] }" がネイティブコードであることを保証しているわけではないからな
そうなるのは Google Chrome だけで Firefox では違う(実装依存)

652 :Name_Not_Found:2017/01/11(水) 15:56:11.18 ID:???
関数がネイティブだと必ず[native code]なんかな?
かと思ったらFunction.prototypeは何も書いてないし、よく分からん。
誰か教えて。

653 :Name_Not_Found:2017/01/11(水) 16:38:34.07 ID:???
>>652
ネイティブ関数を判定する目的は何?

654 :Name_Not_Found:2017/01/11(水) 16:46:44.02 ID:???
>>653
目的はないけど、興味があるから聞いただけ

655 :Name_Not_Found:2017/01/11(水) 17:03:45.12 ID:???
>>654
>>651も書いてるけど、仕様外の動作だから判定基準はないよ
判定しようとすることが無駄だから必要であれば別の切り口を探す方が現実的

656 :Name_Not_Found:2017/01/11(水) 18:12:37.30 ID:???
>>655
なるほど、さんくす

657 :Name_Not_Found:2017/01/11(水) 18:34:24.20 ID:???
>>656
現時点では仕様ではソースが再現できない場合はevalした時エラーになるような文字列を返すことが定められてるからそれで判定できる。
と言っても[ native code ]を返す事がずっとデファクトだし、合意も取れててほぼ標準仕様。
http://tc39.github.io/Function-prototype-toString-revision/#sec-function.prototype.tostring
こういったことはディープコピーの際などに判定する必要はある。ただし、Reflectのメソットでスマートなのを入れる案もある。

658 :Name_Not_Found:2017/01/11(水) 23:25:48.61 ID:???
>>657
へぇー、ありがとう!
そのページ初めてみたんだけど、どういう位置づけなんかな?絶賛作成中の仕様書?

あと、
> こういったことはディープコピーの際などに判定する必要はある。ただし、Reflectのメソットでスマートなのを入れる案もある。
これについて、よければもっと詳しく教えてくださいm(_ _)m

659 :Name_Not_Found:2017/01/12(木) 13:23:23.73 ID:iTX7ye4a
javascriptを覚えて1年未満なのですが
for (;;) {というコードに出会いましたがこれはどういう意味なんでしょうか?

660 :Name_Not_Found:2017/01/12(木) 13:41:46.42 ID:???
for (var i = 0; i < 10; i++)
var i = 0;
for (; i < 10 ; i++)
この辺りで見てみたら?

661 :Name_Not_Found:2017/01/12(木) 14:28:58.54 ID:???
>>659
while(1)と同様、無限ループするコード
アルゴリズムが腐っているから参考にしない方がいい

662 :Name_Not_Found:2017/01/12(木) 14:32:41.11 ID:???
for (;;) ←泣いてるみたい

663 :Name_Not_Found:2017/01/12(木) 14:36:18.22 ID:???
do-whileが使われなくて泣いてる

664 :Name_Not_Found:2017/01/12(木) 22:31:52.45 ID:???
オレ、無職の35歳のパソコンの大先生なんだけど
javascriptを極めたら就職できますか?

665 :Name_Not_Found:2017/01/12(木) 22:37:37.12 ID:???
若くて元気な人材に勝てる自信があるのなら、可能性はゼロではないかな

666 :Name_Not_Found:2017/01/12(木) 22:39:54.66 ID:???
パソコンの大先生ならそのまま教職方面を極めたらいいと思う

667 :Name_Not_Found:2017/01/12(木) 22:40:17.51 ID:???
少なくとも毎日数時間やれば、一年で就職できるレベルになるよ

技術においてはね

668 :664:2017/01/12(木) 22:52:21.87 ID:???
ちなみにパソコンの大先生って両親にしか言われません

669 :Name_Not_Found:2017/01/12(木) 23:16:34.34 ID:???
そう…

670 :Name_Not_Found:2017/01/13(金) 00:09:57.45 ID:???
技術はよいとして
先生ひとりじゃ身につかない仕事の進め方とかをどうするかだな

671 :Name_Not_Found:2017/01/13(金) 17:53:38.88 ID:???
>>658
仕様の改定案
最近はある程度仕様が固まったら、既存の仕様に対してのパッチの形で草案を書く

Reflectのメソットは
https://esdiscuss.org/notes/2015-05-28
https://esdiscuss.org/notes/2016-01-28
ここらで話されてるね

672 :Name_Not_Found:2017/01/13(金) 22:11:18.31 ID:???
メソットじゃなくてメソッドな
約 43,600 件 と 約 28,900,000 件 ぐらいの差がある

673 :Name_Not_Found:2017/01/14(土) 00:58:28.65 ID:???
スキルある奴なら高卒職歴なしでもベンチャー入れるから安心しろ

674 :Name_Not_Found:2017/01/14(土) 03:45:43.35 ID:???
クリックイベントで、
onclickメソッドは古いから使わない
attachEventも古いから使わない
addEventListenerを使えばいい、最近のブラウザは全部対応してるから
って話を聞いた気がするのですが、
皆さん、クリックイベントってどうやってますか?

675 :Name_Not_Found:2017/01/14(土) 04:44:11.19 ID:???
onclick を使っていたら、この板で、馬鹿にされたよw

676 :Name_Not_Found:2017/01/14(土) 07:34:27.24 ID:zANROcRu
focus喪失時のイベントonblurって、なんでlostFocusとかでなくblurなんでしょうか

辞書を引くとblurは曇らせる、汚す、ぼやけさせる等の意らしいんですが
あれですか焦点=focus:カメラとかのフォーカス、フォーカスが外れる=ピントが合わなくてぼやける=blurってことですか

677 :Name_Not_Found:2017/01/14(土) 11:19:41.42 ID:???
onloadみたいな使い捨てのイベントは解除が面倒だからaddEventListenerは使わないな

678 :Name_Not_Found:2017/01/14(土) 11:41:55.39 ID:???
>>674
jQueryを使ってる。
そういうブラウザ関連のごたごたは
2010年ごろから気にしなくてすんでる。

679 :Name_Not_Found:2017/01/14(土) 11:45:28.55 ID:???
>>677
何使ってるの?

680 :Name_Not_Found:2017/01/14(土) 15:08:47.67 ID:FfZaohk9
test.htmlに
<script src="http://xxxxxxxxx/hellow.js">
と記述されたjsファイルがありますが
このhellow.js内で自身のファイル名(hellow)を取得する方法はありますか?

681 :Name_Not_Found:2017/01/14(土) 15:11:00.27 ID:???
ありまーす

682 :Name_Not_Found:2017/01/14(土) 15:11:42.19 ID:???
あるけどファイル結合したら使えないしなー

683 :Name_Not_Found:2017/01/14(土) 15:12:14.63 ID:???
そんなもんに頼るなっていうのが答えだろー

684 :Name_Not_Found:2017/01/14(土) 19:22:00.68 ID:???
つーかまずググれー
腐るほどヒットするぞー

685 :Name_Not_Found:2017/01/15(日) 14:09:36.41 ID:???
https://jsfiddle.net/zhakaaf1/

・キャンバスサイズは画面全体
・ウィンドウサイズ変更で再描画
・Retinaに対応してぼやけないようにする

canvasで図形や文字の描画を上記の条件でやりたいのですが、iOSのSafariで縦向きで実際に表示させたときだけウィンドウサイズ(?)が正しく認識されないのでずれて表示されてしまいます(横向きでは問題ないです)
ちなみにパソコンから各主要ブラウザで見た場合はどんなサイズでも正しく表示されています
どう記述すればiOSのSafariで縦向きでも正しく表示されますか?

参考にしたサイト
http://htmlcheats.com/html/resize-the-html5-canvas-dyamically
http://jsdo.it/haii/u5B1

686 :Name_Not_Found:2017/01/15(日) 15:28:22.30 ID:???
非長方形ディスプレイが考慮されていない。
やり直し。

687 :Name_Not_Found:2017/01/16(月) 16:57:50.72 ID:???
>>685ですが、metaのviwportにinitial-scale=1.0を追加したら解決しました

688 :Name_Not_Found:2017/01/17(火) 13:24:04.30 ID:???
質問テンプレに当てはめられなかったため、スレ違いなら申し訳ありません。テンプレに近い形で書きます。
よろしくお願いします。

【環境】Windows10 ,Google Chrome
【何をしたいのか】
<video>タグで指定している動画(自分で用意したもの)の音に合わせて色々遊んでみたい
自分用なので、GoogleChromeまたはFirefoxの特定の環境で動けばよい。
【近いこと】
調べていると、 navigator.getUserMedia でマイクやカメラを取り扱うことができ、さらにそこから音に関する情報を得られることは分かったのですが、再生中の動画から取得する方法を見つけられず、質問に至りました。

【期待する結果】
動画から出てくる音にあわせてこういう動きを現せる数値取得する
|||||||||||||||||||||||||
|||||||||||
|||||||||
||||||||||||||||
|||||
||
||||
||||||
||||||||||||||||||||||

689 :Name_Not_Found:2017/01/17(火) 14:18:55.81 ID:???
すいません、簡単に値の取得ができました。
---------------------------------------
56 function audioeffect(){
57 context = new AudioContext();
58 analyser = context.createAnalyser();
59 source = context.createMediaElementSource(video.get(0));
60 source.connect(analyser);
61 analyser.connect(context.destination);
62 frameLooper();
63 }
64
65 function frameLooper() {
66 console.log("Frameloope");
67 window.requestAnimationFrame(frameLooper);
68 fbc_array = new Uint8Array(analyser.frequencyBinCount);
69 analyser.getByteFrequencyData(fbc_array);
70 console.log(fbc_array);
71 }
---------------------------------------
失礼しました。

690 :Name_Not_Found:2017/01/17(火) 16:28:06.55 ID:???
正気かお前?

691 :Name_Not_Found:2017/01/17(火) 18:45:12.24 ID:???
>690
どういう意味?
調べたら色々音楽系ライブラリあるっぽいよ?

692 :692:2017/01/18(水) 04:24:22.51 ID:gjIMe82b
質問します。
【環境】Win10,IE11
【何をしたのか】外部ファイルを読み込めない。直接htmlに書き込むと動く。
【エラーメッセージ】SCRIPT5002: 関数を指定してください。
【期待する結果】外部ファイルを読み込みたい。
【サンプルコード】
http://jsdo.it/kyonshi-man/2YbB
自分で色々と調べましたがわかりませんでした。
宜しくお願いします。

693 :Name_Not_Found:2017/01/18(水) 08:39:29.36 ID:???
>>692
関数名をalt以外にすれば動くよ。alt2 とか。
ただ、一番のオススメはaddEventListenerを使う方法なので、余力があればaddEventListenerを使うコードに書き換えるといい。

動かない理由だけど、実はonclick内では、
with(document){
with(this.form){ // <form>内の要素であれば
with(this){
// この環境でコードを実行
}
}
}
ということになっている。
"alt"という名前は<input>の属性の名前でもあるので、onclick="alt();" の場合<input>のalt属性が参照されてしまい、そのためにエラーになる。
(つまり、"id", "type" などもエラーになるということ。)
言い換えれば、onclick="" の中は使えない関数名がいっぱいあるのでとても危険。これはaddEventListenerを使うことを強くおすすめする理由の一つでもなる。
(addEventListenerの使い方はここなどを参照 http://uhyohyo.net/javascript/3_2.html

ここにも同じことが書いてあるので、参考までに。
http://qiita.com/hakatashi/items/40fbedf61a3dd79f21fc

694 :Name_Not_Found:2017/01/18(水) 10:05:33.47 ID:eytIybq4
https://youtu.be/quIHgwuF6r4

695 :Name_Not_Found:2017/01/18(水) 11:10:32.05 ID:???
>>692
html
onClick="alt()" を id="btn" に変更し、ID名を付ける
practiceScript.js
下記を追加する
// id btnの要素を取得
var button = document.getElementById('btn');
// click eventを与える
button.addEventListener('click', function() {
alt(); //altを実行
});

696 :Name_Not_Found:2017/01/18(水) 13:39:33.13 ID:???
>>693
with か、初めて見たわw

そんな悪名高い、変態・訳の分からないものを使うな。危険!

697 :Name_Not_Found:2017/01/18(水) 13:42:30.69 ID:???
>>693
根本的にそういう問題じゃないよ
アホ

698 :Name_Not_Found:2017/01/18(水) 13:55:16.46 ID:???
根本的な問題を突いてると思うが
……いやそうか、アホには理解出来ないのかも知れない

699 :692:2017/01/18(水) 15:29:32.70 ID:gjIMe82b
>>693,695
関数名の変更はやってみましたが動きませんでした。
>>695の方法でやってみようと思います。
教えていただきありがとうございました。

>>696
まだまだ初心者なので方法の一つにそれがあるぐらいに留めておきます。

700 :Name_Not_Found:2017/01/18(水) 15:45:02.53 ID:???
>>696
onClickも今となっては変態プレイだよなw

701 :Name_Not_Found:2017/01/18(水) 16:11:53.28 ID:???
>>699
動かないはずはないと思うけど…
念のためだけど、変更するのはonClick="alt()" と function alt() の2箇所だよ。
まあ695が最善なので、それでするに越したことはないが…。
あと696は方法の一つではなくて、書いてはいけないコードであることを言ってる

702 :Name_Not_Found:2017/01/18(水) 16:54:01.25 ID:???
>>699
>>693の方法で出来たよ
https://jsfiddle.net/np8mvty0/1/
関数名を変えたくないならこういう方法も有り
https://jsfiddle.net/np8mvty0/2/
addEventListenerを使うほうがいいけどね
https://jsfiddle.net/np8mvty0/3/
更に無名関数をなくした別解
https://jsfiddle.net/np8mvty0/4/

703 :Name_Not_Found:2017/01/18(水) 16:57:40.71 ID:???
>>695は無名関数が要らん
初心者の内は何でも無名関数で括りたがるもんだが、そういう癖は初めのうちに排除した方がいい

704 :Name_Not_Found:2017/01/18(水) 17:59:45.95 ID:???
>>699
・Shift_JIS → UTF-8
・CSSのセレクタにワイルドカード(*)は使わない
・HTML5を学ぶ

705 :Name_Not_Found:2017/01/18(水) 18:09:05.66 ID:???
>>702
> event.target.ownerDocument.defaultView.alt()
ワロタ

706 :Name_Not_Found:2017/01/18(水) 18:28:08.05 ID:???
>>702
> 更に無名関数をなくした別解
function alt () {...};
element.addEventListener('click', alt, false);
そんな変態プレイしなくてもこれでええやん

707 :Name_Not_Found:2017/01/18(水) 19:00:05.71 ID:???
>>706
名前付き関数を使うという意味ではなく、ユーザ定義関数をなくすという意味

708 :Name_Not_Found:2017/01/18(水) 19:20:34.38 ID:???
>>705
何がおかしいんだろ?

709 :Name_Not_Found:2017/01/18(水) 19:42:53.10 ID:???
いや、eventからすごい器用にwindowを取得するから感心しただけ
煽りに聞こえたなら悪かった

710 :Name_Not_Found:2017/01/18(水) 19:51:21.59 ID:???
>>707
alertだけならえんやけどな
複雑な関数になることも想定せなな

711 :Name_Not_Found:2017/01/18(水) 20:58:57.42 ID:???
>>710
それは質問者が考えればいい事だと思ってる
自分は選択肢を与えただけ

そういう意味なら関数宣言を使うべき理由も書いた方がいいかもね
これだけなら関数式で十分ともとれるから

712 :Name_Not_Found:2017/01/18(水) 22:37:28.40 ID:???
>>709
まったくだよなw

<input type="submit" value="警告を表示" onClick="event.target.ownerDocument.defaultView.alt()" />

こんな意味不明なことしなくても、これでいいのに。
<input type="submit" value="警告を表示" onClick="window.alt()" />

713 :Name_Not_Found:2017/01/18(水) 22:44:20.04 ID:???
そして毎度おなじみjQuery版
https://jsfiddle.net/np8mvty0/5/

さらに jQuery版 + アロー関数版
https://jsfiddle.net/np8mvty0/6/

714 :Name_Not_Found:2017/01/18(水) 22:45:01.83 ID:???
自分は選択肢を与えただけ

715 :Name_Not_Found:2017/01/18(水) 22:56:04.38 ID:???
>>709
onclick属性では優位性を感じられないと思うけど、addEventListener でイベント定義していると対象のwindowオブジェクトが欲しい時があるので割とよく使ってるよ
なので、document直接指定も気になってしまうんだけど、初心者には分かりづらいだろうからそのままにしてる

>>710
基本、addEventListenerしたらwindow.onunload時に全部のイベントをremoveEventListenerしてるから、ちゃんと書きたい時にはよく使うね
こういう場だと簡易的なサンプルに留めるからそこまで配慮してないけど、そういう理由なら納得
他の理由はちょっと思いつかないな

716 :715:2017/01/18(水) 22:58:02.88 ID:wCL7343U
> 基本、addEventListenerしたらwindow.onunload時に全部のイベントをremoveEventListenerしてるから、ちゃんと書きたい時にはよく使うね
これ関数宣言の事ね
addEventListenerとremoveEventListenerをセットで使うには変数にキャッシュしないといけないから

717 :Name_Not_Found:2017/01/18(水) 22:58:51.82 ID:???
> 基本、addEventListenerしたらwindow.onunload時に全部のイベントをremoveEventListenerしてるから

念の為に言っておくと、これはやらなくていい。
そんなことしなくてもちゃんと解放される

718 :Name_Not_Found:2017/01/18(水) 23:00:48.80 ID:???
省略できることを省略しないで書くのは無駄なことをやってるってだけで
ちゃんとやってることにはならない。

読むべきコードが増えてるので可読性が低下しており
悪いコードとも言える。

良いコードというのは、十分な情報が存在しており
かつ不必要な情報が存在しない事

719 :715:2017/01/18(水) 23:11:21.43 ID:wCL7343U
>>717
「IE6のメモリリークパターンは修正済みなのでremoveEventListenerは不要」と受け取る
で、メモリリークパターンがあるなしに関わらず、後始末をするのは良い作法だと思ってる
(そもそも、IE6のバグはaddEventListenerじゃなくてattachEventなので本件とは無関係なんだけど)

ちなみに、誰かさんが好きなjQueryはIE6サポートがなくなった今でもremoveEventListenerで後始末をしてる
それはブラウザにバグがあるから対処するんじゃなくてバグがあってもなくても対処すれば、将来的にバグが発生しても回避できるという保険的措置
それを必要と思うか、無駄と思うかは宗教論なので議論の余地はないと思う

720 :715:2017/01/18(水) 23:18:15.27 ID:wCL7343U
あと、可読性について
こういう定型処理は自動化するものなので「自動的にremoveEventListenerするコード」を書いて使いまわす
すると下記コードのようになるので可読性が低下する事はないよ

element.addEventListener(type, listener, false);
 ↓
addEventListenerCustom(element, type, listener, false);

毎回、同じ処理のために一からコードを書く方が無駄だから、各々でノウハウを持っているものだと思う

721 :Name_Not_Found:2017/01/18(水) 23:31:24.93 ID:???
>>719
> ちなみに、誰かさんが好きなjQueryはIE6サポートがなくなった今でもremoveEventListenerで後始末をしてる
してない。不必要だからだ

https://github.com/jquery/jquery/pull/149/commits/37d297c67fe3569a5a9d81586e14d4a887df7879
Clearing event handlers on unload is no longer necessary in any version of IE.
This issue causing memory leaks between pages was fixed in MS07-033.

722 :Name_Not_Found:2017/01/18(水) 23:33:35.91 ID:???
>>720
オレオレライブラリ作るな
それも可読性を下げる要因の一つ

723 :Name_Not_Found:2017/01/18(水) 23:47:25.83 ID:???
各々でノウハウを持っている = 可読性の低下

なぜなら、その「ノウハウ」を理解しなければ
コードが読めないから。

「各々のノウハウ」は、新しく入社した人や
外部からやってきた人が知る余地はない

724 :Name_Not_Found:2017/01/19(木) 00:15:12.28 ID:???
(笑) 図らずもだからjQuery使っておけよって事例になったが、
jQueryのノウハウを利用すれば、このように今となっては必要がない
無駄な処理が適切なタイミングで削除されるんだよ。

jQueryに遅れること6年だよ? お前いつまでそんな無駄なコードを書いてるんだ?
その無駄なコードはいつなくなるんだ?
今必要ないのに「念のため」で書いているコードは消えることはないだろう。

各人のノウハウというが、個人程度のノウハウがjQueryのノウハウにかなうわけがない。
例えば 最新のコード https://code.jquery.com/jquery-3.1.1.js から
Android、iOS で検索してみよう。IE対応のコードは減ったと言っても
まだまだこんなに各ブラウザに対する「ノウハウ」が存在する。
これにお前ちゃんと対応してんの?って話だよ。

世の中でjQueryが必要になったと言ってるアレはAngularやReactのノウハウを利用しようという
意味であってDOM APIを直接使おうってことじゃない。今でもDOM APIは各ブラウザに
対応するためのノウハウが多く必要。

そんなのに対応するのは本質的な仕事内容ではないはずだ。
jQueryを使えばDOM APIよりももっと多くのノウハウを利用できる。

725 :Name_Not_Found:2017/01/19(木) 00:39:25.05 ID:???
× 世の中でjQueryが必要になったと言ってるアレは
○ 世の中でjQueryが必要なくなったと言ってるアレは

726 :Name_Not_Found:2017/01/19(木) 01:58:23.21 ID:???
addEventListenerの第三引数でオブジェクトを指定するコードを使っていますか?

element.addEventListener(type, listener, {capture: true});
element.addEventListener(type, listener, {once: true});
element.addEventListener(type, listener, {passive: true});
https://dom.spec.whatwg.org/#dom-eventtarget-addeventlistener
https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Browser_compatibility

仕様は出来ているようですが、MS系の実装が追い付いてない感があります。
これらのブラウザにラップするコードを書いて対応しているのか、IE/Edgeを無視しているのか、気になります。

727 :Name_Not_Found:2017/01/19(木) 02:16:56.06 ID:???
>>726
今までそれ無しでやってこれたんだから
使わないだけでしょ。

目的と手段が逆になってるよ。
一部のブラウザで使えるようになったからって、
わざわざそれを使う必要はないの。

728 :Name_Not_Found:2017/01/19(木) 02:18:06.47 ID:???
> IE/Edgeを無視しているのか、気になります。

IE/Edgeだけの問題に縮小して考えてるってのも気になる。
AndroidやSafariも動かないでしょ。

729 :Name_Not_Found:2017/01/19(木) 02:34:08.07 ID:???
>>727
ご意見ありがとうございます
新しい技術を使うのは挑戦だと思っています
いつまでも古い技術にしがみつく技術者にはなってしまうのが怖いです

>>728
すみません、「IE/Edge対策をする=非対応ブラウザ対策をする」なのであまり細かくは見てなかったです

730 :Name_Not_Found:2017/01/19(木) 02:36:34.90 ID:???
これのどこが技術なのかよくわからん。
ただの関数のオプションでしょ

技術といったら別の言語とかフレームワークとか
機械学習とかそういった全くの別物だよ。

731 :Name_Not_Found:2017/01/19(木) 02:44:48.89 ID:???
>>730
言葉狩りをされているようで心苦しいのですが、「新しいAPI」といえばいいのでしょうか
こちらの意図が伝わっていなかったらすみません

732 :Name_Not_Found:2017/01/19(木) 02:47:54.31 ID:???
>>731
いや、わかんないかな?

「俺、新しい技術を習得しました!」と
言えるようなレベルじゃないってこと。

成長してないんだよ。

733 :Name_Not_Found:2017/01/19(木) 02:51:45.45 ID:???
つーか、オプションのその引数渡して使ってみればいいじゃん。
その時点で技術(笑)は習得できた。

あとは、ブラウザが普及してから使えばいい。

お前のいう「新しい技術への挑戦」は5分で攻略し終わった。

734 :Name_Not_Found:2017/01/19(木) 02:54:31.72 ID:???
>>732
ご心配には感謝しますが、承認欲求を満たす為に学習しているわけではありませんので誤解なさらぬよう
本題からずれているようですので失礼します

735 :Name_Not_Found:2017/01/19(木) 03:06:59.99 ID:???
>>726
それonceが便利だな

736 :Name_Not_Found:2017/01/19(木) 03:29:21.76 ID:???
>>734
何を必死になってるのか知らんが、
お前はもう使えるようになったんだろ?

ならあとはブラウザで使えるようになるまで
使う必要はないってだけだろ。

737 :Name_Not_Found:2017/01/19(木) 03:30:29.66 ID:???
>>735
jQueryにあるonceメソッドをパクったやつだっけ?
便利だよね。once

738 :Name_Not_Found:2017/01/19(木) 03:57:24.68 ID:???
>>726
まだ詳細は決まってないみたいだけど、jQuery 4.0で
すべてのオプションをサポートするってさ

https://github.com/jquery/jquery/wiki/jQuery-4.0-Event-Design
> Support all addEventListener options

739 :Name_Not_Found:2017/01/19(木) 07:52:01.44 ID:???
onceは1回だけって保証されてるんじゃないように読めるのが気になる
他のオプションも正直なところ存在意義がよくわからん

740 :Name_Not_Found:2017/01/19(木) 08:06:17.25 ID:???
>>739
addEventListener の第3引数が拡張されてるという話 - Qiita
http://qiita.com/kozy4324/items/85831e2c990d92b8397b

741 :Name_Not_Found:2017/01/19(木) 08:30:17.76 ID:???
>>736
私の目的は「全てのブラウザでaddEventListenerの第三引数を使えるようにすること」です
あなたの回答は「ブラウザの実装が整うまで待つ」でよろしいですかね
昨夜から質問内容からずれた煽りばかりでうんざりしています
回答ではないと判断したレスはスルーしますので悪しからず

742 :Name_Not_Found:2017/01/19(木) 08:43:51.17 ID:???
>740サンキュー
あれなんだな、出来なかったことが出来るようになる系の話じゃないんだな

743 :Name_Not_Found:2017/01/19(木) 10:31:16.26 ID:???
最近煽りがひどいから、あからさまなのは相手にしなくていいと思うよ
ワッチョイほしいね

passiveの再現は今までのAPIでできなくない?

744 :Name_Not_Found:2017/01/19(木) 12:04:46.10 ID:???
オレオレライブラリと言ってしまうとなんでも揶揄できる気になるが、
他社の人間が入ってきて着手するにあたって、それを理解するまで着手出来ない、可読性が無いってのは暴論でしょ。
どこぞのbabel信奉者じみた発想で乾いた笑いが出る。

普通の企業はその会社のライブラリ持ってるし、そのライブラリ以外は使うなと言う規約すらあるよ。
クラサバアプリでも、生のTextbox使うようなアプリ無いからな。
ウェブでも同じように、ラッパーライブラリはあって然るべき。

もうすぐそういう杜撰な作り方してる会社が一気に火を吹くと思うが。
19890108のスタンプが入ってるシステム変更仕様書が残ってないか、そんな時代には無かった会社なんだろうな。

745 :Name_Not_Found:2017/01/19(木) 22:20:26.73 ID:???
> 普通の企業はその会社のライブラリ持ってるし、そのライブラリ以外は使うなと言う規約すらあるよ。

だからなんなんだよ・・・

世の中にはクソな会社すらあるよと言われても
知ってるとしか言いようがない。

746 :Name_Not_Found:2017/01/19(木) 22:34:38.92 ID:???
うちの会社もライブラリは持ってるけど、
それは世の中にない汎用的ではない処理のためであって
jQueryのような世の中にあるライブラリと同じ用途のものは持ってないな。

その会社のライブラリを持っている → 真 という事実を使って、
世の中にあるライブラリの再発明を持っていると
ミスリードを狙ったのだろうが、そうはいかんよw

747 :Name_Not_Found:2017/01/19(木) 22:35:42.44 ID:???
ローカルルールをどや顔で語られてもな

748 :Name_Not_Found:2017/01/19(木) 22:59:37.15 ID:???
ここはJavaScriptを自ら学ぶ場だからさ
「ノウハウなんて溜め込めこまないで既存のノウハウを使い回しなさい」な立場ならこのスレに合ってないと思うよ
いってみれば問題解決の為に「どんなコードを書けばいいですか?」ではなく、「こんな事を実現するライブラリはありませんか?」と聞くようなものだからね
他人のノウハウを聞いて使うだけの消費者意識の高い人に未来はないよ

749 :Name_Not_Found:2017/01/19(木) 23:02:44.41 ID:???
つまり「jQueryを使ってどんなコードを書けばいいですか?」
という質問ならOKということ。

750 :Name_Not_Found:2017/01/19(木) 23:03:25.33 ID:???
「どんなコードを書けばいいですか?あなたのノウハウ教えてください」
という質問はNGっていうことだよ。

751 :Name_Not_Found:2017/01/19(木) 23:04:16.40 ID:???
答える側はノウハウを教えるのではなく
ここで自分で解いた問題だけをかけっちゅーことや

752 :Name_Not_Found:2017/01/19(木) 23:28:47.73 ID:???
聞いた結果どうするか、が重要

753 :Name_Not_Found:2017/01/20(金) 08:17:07.89 ID:???
とあるライブラリの再開発せんでいいでしょ。
とあるライブラリが変わってもいいように中間層作るだけ。

754 :Name_Not_Found:2017/01/20(金) 08:18:36.18 ID:???
jQueryはライブラリじゃなくて古風なVDOMフレームワークだよ

755 :Name_Not_Found:2017/01/20(金) 08:27:53.57 ID:???
jQueryはaddEventListenerの全機能を実装してないがな
それから、たった一つの機能を使うためにjQueryを使うのはナンセンス

756 :Name_Not_Found:2017/01/20(金) 08:36:41.56 ID:???
ライブラリとは何かを理解していないのがなんか言っている
朝からコーヒーを噴いたじゃないかよ

757 :Name_Not_Found:2017/01/20(金) 08:55:53.59 ID:???
と、としょかん・・・(小声)

758 :Name_Not_Found:2017/01/20(金) 09:01:25.30 ID:???
>>755
いやw 全機能を実装してないという理由で
使わないって意味不明だろw

全機能を使うっていうのならまだしも。

jQueryだって結局はaddEventListenerを使ってるんだから
混ぜて使っても問題ないんだよ。

ほんの僅かの理由でjQueryを使わないなんて
もったいない話だ。

759 :Name_Not_Found:2017/01/20(金) 09:32:20.27 ID:???
>>754
jQueryはJavaScriptのスタンダードなライブラリ
フレームワークとは似て非なり

760 :Name_Not_Found:2017/01/20(金) 09:33:35.74 ID:???
>>753
> とあるライブラリが変わってもいいように中間層作るだけ。

そうなんだけど、そこで間違って考えるやつは
中間層ライブラリを作るって発想をしちゃうんだよねw
これはやってはいけない。

そもそもきれいに設計しているならば(まあこれができる人が少ないんだが)
とあるライブラリを使う部分ってのは、
n階層アーキテクチャ(http://gihyo.jp/dev/serial/01/hdesign/0001)の
一つの層だけになる。そこが中間層

またテストもあるはずなので(これもできてない人が多い)
ライブラリが変わるならば、中間層の中身だけを変えてテストをすればよい

761 :Name_Not_Found:2017/01/20(金) 14:14:58.33 ID:???
>>758
>>726の内、実装されているのはonceだけなので、他の機能が欲しい時には使えない
once単機能の為にjQueryを使うのは大仰すぎる
自作するか、他ライブラリを使う方がいいだろうな

762 :Name_Not_Found:2017/01/20(金) 18:51:13.65 ID:???
>>759
jQueryは独自の世界を提供してるんだから今の基準で言えばDOMフレームワークだよ
ライブラリっぽい部分もあったけど、PromiseとかfetchとかAnimationAPIとか標準機能が充実してきたので
今ではなんちゃてVDOM環境くらいしか取り柄がないしね

763 :Name_Not_Found:2017/01/20(金) 22:06:08.90 ID:???
>>760
アホはどこでも変わらんのだな。

764 :Name_Not_Found:2017/01/20(金) 22:10:27.33 ID:???
あ、言葉足らずだった。
一本のクソでかいライブラリで層を不明瞭にしてると思ってんだろうな、と。
ライブラリを使うライブラリもあるだろうし、って話。
gccとglibcでコンパイルしたopenJDKでコンパイルしたwarを使ったサーブレット、って、それぞれがそれぞれのライブラリ持ってるだろ。

765 :Name_Not_Found:2017/01/20(金) 22:14:01.29 ID:???
今度はライブラリとフレームワークの違いも理解できないのがなんか言ってる
ビールを噴いたじゃないかよ

766 :Name_Not_Found:2017/01/20(金) 22:44:04.37 ID:???
>>761
> once単機能の為にjQueryを使うのは大仰すぎる

ん? 理解できてないのか?
それともわかっていてわざと逆のことを言ってるのかな?

誰もが思っていることを言うね。

passive単機能のためにjQueryを捨てるのは大げさすぎる(ドーン!)

767 :Name_Not_Found:2017/01/20(金) 22:45:38.62 ID:???
>>762
> jQueryは独自の世界を提供してるんだから今の基準で言えばDOMフレームワークだよ

つまり、

独自の世界を提供しているもの=フレームワークって
定義なんでしょ?

それは間違い。

フレームワークはそういう定義じゃない。

そんなこと言ったら独自の世界を提供すればなんでも
フレームワークになってしまう。

768 :Name_Not_Found:2017/01/20(金) 23:00:34.42 ID:???
独自の世界...
自分の世界の基準...
だからフレームワーク...
いい加減にしてくれよ

769 :Name_Not_Found:2017/01/20(金) 23:03:46.16 ID:???
フレームワーク(日本語訳:骨組み、構造)は呼び出される関数が決まっていて
その関数の中身を書く方だよ。外枠が決まってるからフレームワーク

自分の書いたロジックの中で、提供されている関数を
呼び出すならライブラリ

770 :Name_Not_Found:2017/01/20(金) 23:05:01.83 ID:???
フレームワークとライブラリの違いを検索してみたが
確かに>>769が書いてある通りのことだった

771 :Name_Not_Found:2017/01/20(金) 23:47:27.46 ID:???
>>719
> ちなみに、誰かさんが好きなjQueryはIE6サポートがなくなった今でもremoveEventListenerで後始末をしてる

↓ と来てからの

>>719
> ちなみに、誰かさんが好きなjQueryはIE6サポートがなくなった今でもremoveEventListenerで後始末をしてる
してない。不必要だからだ

https://github.com/jquery/jquery/pull/149/commits/37d297c67fe3569a5a9d81586e14d4a887df7879



この流れワロタw
>>719恥ずかしくないのかな?w 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


772 :Name_Not_Found:2017/01/20(金) 23:58:38.50 ID:???
>>766
それはお前さんの必要性の問題だ
お前さんはjQueryにある機能しか使わなくていいし、jQueryにない機能は使わなくていいと思ってる
それだけの話

773 :726:2017/01/21(土) 00:09:20.15 ID:usIQyf0r
>>743
passive は私も無理だと思います。
Polyfill 的な実装をするなら once, capture に対応するまでですね。
しかし、流れを見ていると、addEventListenerの第三引数が変わった事を知らない人が多いですね…。
互換コードの先行例も無いようですし、未対応ブラウザをサポートするには自作するしかなさそうです。

774 :Name_Not_Found:2017/01/21(土) 12:42:24.37 ID:???
質問です
var elSpan = document.createElement("span");
// 1
elSpan.innerText = "manko";
// 2
var elNode = document.createTextNode("chinko");
elSpan.appendChild(elNode);

どっちが理想的で正しいのでしょうか?

775 :Name_Not_Found:2017/01/21(土) 12:50:18.34 ID:???
>>773
> 未対応ブラウザをサポートするには自作するしかなさそうです。

自作できるならPolyfill作れるだろw

776 :Name_Not_Found:2017/01/21(土) 12:52:36.88 ID:???
>>772
> お前さんはjQueryにある機能しか使わなくていいし、jQueryにない機能は使わなくていいと思ってる

なんで俺の考えをお前が決めつけてんの?
お前が決めつけてる(=お前が考えてること)が間違ってるじゃん。

はっきり言っておこうか、
俺はjQueryで開発効率を挙げられるから使えばいいし、
その上でjQueryにない機能であれば、それも使えばいいと思ってる。

もう二度と俺の考えについてのデマを流すなよ。

777 :Name_Not_Found:2017/01/21(土) 13:00:03.07 ID:???
もう一つ言っておこうか。

一部の人間が世の中でもうjQueryを使わなくていいと言ってるのは、
ReactやAngularといったjQueryよりももっとJavaScriptよりになって
難しいフレームワークを導入した場合であって

ウェブアプリのような全体がJavaScriptで構成されているような
場合にそれでも許されるが、WordPressなどのブログに
ちょこっと機能を追加する程度では、大変すぎる作業。

その大変すぎる作業を行ったらjQueryを使わなくていいという意味だから。

だからjQueryの代替というものは実は登場していない。
登場したのはウェブアプリの作り方の代替

ウェブサイトでは今でもjQueryが有効。そしてDOM APIよりも楽にかける。
しかもDOM APIとjQueryは混ぜて使うこともできる。

778 :Name_Not_Found:2017/01/21(土) 13:32:52.86 ID:???
>>774
理想的とは何だって話だよ。
俺は問題なく動くならば細かい書き方などどうでもいい。

それよりも短くて時間もかからずバグも起こりづらく
ブラウザ依存(ブラウザのバグも含む)がなく
よく知られている書き方を選ぶ。

つまり

$('<span>').text('unko')

779 :Name_Not_Found:2017/01/21(土) 13:38:00.91 ID:???
>>766
> passive単機能のためにjQueryを捨てるのは大げさすぎる(ドーン!)
jQueryを捨てる、というが別に使ってないから捨てるもなにもないんだが
jQueryを皆が使っていると思っているからそういう考えが出てくるんしないのか?

> 誰もが思っていることを言うね。
少なくとも俺は思ってないがね
お前が皆の代弁者であるかのような物言いだが、皆の思いを決めつけてるのはお前ではないか

780 :Name_Not_Found:2017/01/21(土) 13:44:07.29 ID:???
>>774
いつものまんこ好きか
// 1
elSpan.innerText = "baka";
// 2
var elNode = document.createTextNode("manuke");
elSpan.appendChild(elNode);
// 3
elSpan.textContent = "aho";

1は非標準なので有り得ない、少し調べればわかる事だからもっと調べろ
2と3を使い分けろ
一度テキストノードが出来れば、テキストノードのdataプロパティからも参照出来るからうまく使え

781 :Name_Not_Found:2017/01/21(土) 13:47:42.92 ID:???
>>774
innerHTMLは低速
innerTextやtextContentは中速
appendChild(Node)は高速

ちょろっと書き換えるだけなら何でも良いが、
大量に高速で書き換えたいときはcreateTextNodeを使うのがジャスティス

782 :Name_Not_Found:2017/01/21(土) 13:53:39.09 ID:???
>>779
> jQueryを捨てる、というが別に使ってないから捨てるもなにもないんだが

あぁ、なんだ、使ってもいないものを否定していたのか
ダメなやつの典型

783 :Name_Not_Found:2017/01/21(土) 13:54:51.61 ID:???
どうせjQueryだけじゃなくReactもAngularもBabelも
使わないで文句言ってるんだろうな。

784 :Name_Not_Found:2017/01/21(土) 13:56:35.81 ID:???
俺は質問者に対して全てで最善の答えを書いているのに対して
狭い知識で答えを書くやつの意見が参考になるかっていう

785 :Name_Not_Found:2017/01/21(土) 14:19:32.53 ID:???
こっちにいけ

+ JavaScript & jQuery 質問用スレッド vol.7 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/hp/1478002550/

786 :Name_Not_Found:2017/01/21(土) 15:28:27.06 ID:???
>>780
なるほど、そうなんですか
>>781
頻度に合わせて使い分けます

どうも有難うございました

787 :Name_Not_Found:2017/01/21(土) 15:52:49.27 ID:???
>>786
だがね、古いブラウザではinnerHTMLの方が速かった。
DOMはその20倍も遅かった。ブラウザごとに違うんだよ。
一概に信用してはいけない。
http://www.drk7.jp/MT/archives/001313.html
http://www.quirksmode.org/dom/innerhtml.html


重要なのはベンチマークを取って自分で感覚をつかむことだよ。
1秒なのか、0.1秒なのか、1ミリ秒なのか0.1ミリ秒なのか。
コンピュータっていうのは思った以上に速い。

ブラウザによっても違うし、人間が体感できる速度の違いが得られるのは限られてる。
問題にならない部分にこだわるのはナンセンス

788 :Name_Not_Found:2017/01/21(土) 16:29:35.78 ID:???
古いブラウザでは速い!
なんて理由でinnerHTMLでテキスト突っ込んでたら馬鹿としか思わない

789 :Name_Not_Found:2017/01/21(土) 16:39:22.83 ID:???
ほらなw
ちゃんと書いてるのに、その一部分だけしか見れないんだよ。

きっと読んでいてその単語を見た瞬間、
他のことみんな忘れちゃったんだろうな。

790 :Name_Not_Found:2017/01/21(土) 16:41:56.94 ID:???
お前がinnerHTMLがどんだけ遅いかをわかってないだけ

791 :Name_Not_Found:2017/01/21(土) 16:53:27.07 ID:???
そういや上の方で、もしかしたら古いブラウザでメモリリークしていたように
今でもメモリリークするブラウザのことを考慮して書かないと
だめだって言っていたやつがいたな。

それに当てはめるとDOMの方が遅いブラウザが
あるかもしれないと思わないとだめだってことになる(笑)

念の為に言っておくと馬鹿にしてるんだよ。
今は古いブラウザのバグのことなんか考える必要はない。
わざわざunloadでremoveEventListenerする必要はない

792 :Name_Not_Found:2017/01/21(土) 16:54:16.67 ID:???
>>790
だから0.1ミリ秒とかの世界の話だろ?
遅いかどうかなんてどうやって体感できるんだよw

793 :Name_Not_Found:2017/01/21(土) 17:01:50.48 ID:???
>>792
お前の為に書いてやったよ


const dom = document.createElement('div');

console.time('TextNode');
for(var i=0; i<10000; i++) dom.appendChild(document.createTextNode('test'));
console.timeEnd('TextNode');

console.time('innerHTML');
for(var i=0; i<10000; i++) dom.innerHTML += 'text';
console.timeEnd('innerHTML');


結果
TextNode: 7ms
innerHTML: 10123ms

innerHTMLは完全にブラクラの重さ

794 :Name_Not_Found:2017/01/21(土) 17:01:58.43 ID:???
>>792
>>787に言えよ

795 :Name_Not_Found:2017/01/21(土) 17:21:48.62 ID:???
10123 / 10000 ほう。
1ミリ秒の世界だったか

796 :Name_Not_Found:2017/01/21(土) 17:24:51.07 ID:???
for(var i=0; i<10000; i++) dom.innerHTML += 'text';

これさ、

先にtextを1万回くっつけた文字列を作って
一回だけdom.innerHTMLを実行すればものすごく早くならね?

1万回で10123msってことは、1回あたり1msだろ?
ローカル変数への文字列結合、もしくは配列に入れてjoinが速ければ
7msより早くなりそうなんだが。

797 :Name_Not_Found:2017/01/21(土) 17:28:24.54 ID:???
やってみたよ。たしかにinnerHTMLが早くなった。

const dom = document.createElement('div');

console.time('TextNode');
for(var i=0; i<10000; i++) dom.appendChild(document.createTextNode('test'));
console.timeEnd('TextNode');

console.time('innerHTML');
var text = ''
for(var i=0; i<10000; i++) text+='text'
dom.innerHTML += text;
console.timeEnd('innerHTML');

結果
TextNode: 9.451ms

innerHTML: 4.147ms

798 :Name_Not_Found:2017/01/21(土) 17:30:02.56 ID:???
大量の処理を行うときは
文字列で作ってinnerHTMLで一気に代入っていう
テクニックは今も有効なんだな。

799 :Name_Not_Found:2017/01/21(土) 17:52:18.69 ID:???
そういうことさ。

確かに一回あたりの実行時間はcreateTextNodeの方が速いが、
ベンチマークのように大量に処理する場合は
innerHTMLを使って高速に処理する方法もある。
逆に大量に処理しないならば大きな差は出ない。

結局のところ使うパターン、処理内容やターゲットとするブラウザなどを
考慮した上で、ベンチマークをしてどちらを使うか決めるもの。
判断がつかなければ、少ない労力ですむ方を選んでいれば
時間もかからないし、修正するときの手間も少なくてすむ

800 :Name_Not_Found:2017/01/21(土) 18:05:17.33 ID:???
またお前らの為に書いてやったよ


let text = '';
for(var i=0; i<1000000; i++) text += 'test';

console.time('TextNode');
const dom1 = document.createElement('div');
dom1.appendChild(document.createTextNode(text));
console.timeEnd('TextNode');

console.time('innerHTML');
const dom2 = document.createElement('div');
dom2.innerHTML += text;
console.timeEnd('innerHTML');


結果
TextNode: 10ms
innerHTML: 50ms

こんなこと散々先人が調べ尽くしてるんだから素直に受け入れろよ

801 :Name_Not_Found:2017/01/21(土) 18:13:09.74 ID:???
innerHTMLを軽いことにしたい奴は何を顔真っ赤にしているのかね
追加の度にテキスト結合とパーサーが走るのに軽いわけないじゃん

802 :Name_Not_Found:2017/01/21(土) 18:19:14.60 ID:???
> innerHTMLを軽いことにしたい奴は何を顔真っ赤にしているのかね

どこにそんな人いるの?
お前頭大丈夫?

> だがね、古いブラウザではinnerHTMLの方が速かった。
最初から今では違うって認めてるね

> 確かに一回あたりの実行時間はcreateTextNodeの方が速いが、
ここでも認めてるね。


またいつものデマかな?

803 :Name_Not_Found:2017/01/21(土) 18:20:49.99 ID:???
>>800
アレほど圧倒的大差があったのに、
わずかそれだけ。

1回あたり

10ms / 1000000 = 0.00001ms
50ms / 1000000 = 0.00005ms

の世界の話だった。

804 :Name_Not_Found:2017/01/21(土) 18:22:10.51 ID:???
あ、ループはしてないのかw

805 :Name_Not_Found:2017/01/21(土) 18:24:30.72 ID:???
>>802
innerHTMLを使って高速に処理する方法もある(キリッ

806 :Name_Not_Found:2017/01/21(土) 18:28:55.75 ID:???
とりあえず指数的に負荷増えてるのに一回辺り1msだろって見当違いのこと言ってる奴は紛れもなくアホ

807 :Name_Not_Found:2017/01/21(土) 18:31:50.38 ID:???
なるほど、ループしていると自分が勘違いした原因がわかった。
for使っているコードだからだ。普通は1回では差がわからないから
ループで何回も実行したものを計測する。ループを計測の対象外とすることない。

そこでピンときた。なんでループの回数を増やしてまで
長い文字列(4MB相当)を作っているのかと。なにやら怪しい臭いがする。
ということでループ1回にして代入する文字をtestという4バイトの文字列にしてみた。

修正前
TextNode: 15.499ms
innerHTML: 56.733ms

修正後
TextNode: 0.156ms

innerHTML: 0.065ms

なんと処理時間逆転してしまった・・・
隠したかったのはこれだったか。

808 :Name_Not_Found:2017/01/21(土) 18:33:35.44 ID:???
ついでだ。みんなも実行してみたいだろうから
最終的なコードをアップした。
どうぞ実行してみてくれ

https://jsfiddle.net/3yd1nkbd/

let text = 'test';

console.time('TextNode');
const dom1 = document.createElement('div');
dom1.appendChild(document.createTextNode(text));
console.timeEnd('TextNode');

console.time('innerHTML');
const dom2 = document.createElement('div');
dom2.innerHTML += text;
console.timeEnd('innerHTML');

結果
TextNode: 0.124ms
innerHTML: 0.064ms

809 :Name_Not_Found:2017/01/21(土) 18:37:06.79 ID:???
ほんとこういうのはベンチマーク取らないとわからないもんだな。
俺の環境ではループ10回ぐらいまではinnerHTMLの方が速かったよ。

https://jsfiddle.net/3yd1nkbd/1/

810 :Name_Not_Found:2017/01/21(土) 18:40:05.21 ID:???
> とりあえず指数的に負荷増えてるのに一回辺り1msだろって見当違いのこと言ってる奴は紛れもなくアホ
つまり最初の一回は1msよりもずっと少ないと言いたい

811 :Name_Not_Found:2017/01/21(土) 18:48:26.59 ID:???
こいつJITの最適化も理解してないのか

>>807
それブラウザがinnerHTMLの部分を消すから計測になってねえよ

812 :Name_Not_Found:2017/01/21(土) 18:51:29.79 ID:???
ちなみに上のやつはChromeでの結果

Edgeだと1回だと安定しなくてTextNodeが速かったり
innerHTMLが速かったりする。100回実行してようやく
TextNodeの方が安定して速くなる

Firefoxだと回数が少ないと安定してinnerHTMLの方が速くて
100000回ぐらいでようやく追いつく
そのあと逆転するかと思ったけど10倍しても大差なしだった。

813 :Name_Not_Found:2017/01/21(土) 18:52:38.85 ID:???
>>811
> それブラウザがinnerHTMLの部分を消すから計測になってねえよ
innerHTMLが消えるのならば、innerHTMLに文字が代入されているわけがないだろ。
意味不明なことを言うな。

814 :Name_Not_Found:2017/01/21(土) 18:53:45.75 ID:???
>>801
> 追加の度にテキスト結合とパーサーが走るのに軽いわけないじゃん

JITの最適化で軽くなることもあるってさw

815 :Name_Not_Found:2017/01/21(土) 18:54:54.34 ID:???
馬鹿が一人だけいるくさい

816 :Name_Not_Found:2017/01/21(土) 18:56:51.10 ID:???
俺としてはベンチマークを実行したコードとその結果さえあればいいよ。
それが重要な証拠だから。

817 :Name_Not_Found:2017/01/21(土) 19:19:17.23 ID:???
臭い奴はまる付けてるからすぐ分かるな

818 :Name_Not_Found:2017/01/21(土) 19:34:19.65 ID:???
まるつけるやつは全部同一人物。俺はエスパーだからわかる。

819 :Name_Not_Found:2017/01/21(土) 20:26:44.96 ID:???
エスパーならプログラミングとかしないでよくない?

820 :Name_Not_Found:2017/01/21(土) 20:41:40.53 ID:???
つまり丸つけたからって同一人物とは限らない。
だってエスパーなんていないもの。

821 :Name_Not_Found:2017/01/21(土) 21:53:55.57 ID:???
>>782
jQueryは前はお世話になったが、今は使ってない
そもそも、試しもせずに評価するわけないんだがアホか

都合の悪い事には論点ずらして煽る手口ばかりで芸がないぞ
まあ、「誰もが思っている」と決めつけている事は事実だから否定しようがないだろうけどな

822 :Name_Not_Found:2017/01/21(土) 22:02:10.79 ID:???
jQueryは痒いところに手が届かない感があるんだよな…

823 :Name_Not_Found:2017/01/21(土) 22:28:58.30 ID:???
今日もライブラリとは何かを理解していないのがなんか言っている
焼酎噴いたじゃないかよ

824 :Name_Not_Found:2017/01/21(土) 22:29:56.03 ID:???
>>821
お前、なんでそんな前の書き込みにレスしてるんだ?
それ以外は自分に都合が悪いから逃げてるのか?w

>>822
そんなに痒い所ばっかりなのか?w
jQueryはDOM APIと組み合わせて使えるんだから
大部分でjQueryを使って、痒いところだけDOM APIを使えば良いんだよ。

825 :Name_Not_Found:2017/01/21(土) 22:31:24.59 ID:???
jQueryで痒い所って何処だ?

addEventListenerのpassiveだ!

それだけか?

それだけだ!

826 :Name_Not_Found:2017/01/21(土) 22:38:46.68 ID:???
jqって実際どんくらい重いんですかね
ユーザの負担って意味で

827 :Name_Not_Found:2017/01/21(土) 22:44:54.52 ID:???
ユーザー? jQueryのユーザー=プログラマという意味なら
プログラミングの負担はDOM APIの半分ぐらいの重さだよ。

828 :Name_Not_Found:2017/01/21(土) 22:58:58.63 ID:???
便利な物はどんどん活用してくれれば良い
自分が使ってるんだから此方も合わせろってのは困るけど

829 :Name_Not_Found:2017/01/21(土) 23:00:55.83 ID:???
自分が使ってるからというより、使っている人が多いからで決めるべきだろうね。

jQueryの利用率、4年前の時点で55%だった。
http://www.publickey1.jp/blog/13/jqueryweb55w3techs.html

830 :Name_Not_Found:2017/01/21(土) 23:03:32.39 ID:???
おや? リンク先に最新のデータもあったわ。

jQueryの使用率、4年前の55%から
みんな使わないって言ってるし、減ってきてるだろー

って思った人ごめんなさい。
使わないって言ってる人、ごく僅かなんだ。


https://w3techs.com/technologies/history_overview/javascript_library/all
68.3% 68.9% 69.4% 69.9% 70.1% 70.2% 70.4% 70.6% 70.7% 70.9% 71.4% 71.8% 71.9% 71.9%

2016年1月から毎月増えて2017年2月の今では71.9%か

831 :Name_Not_Found:2017/01/21(土) 23:07:14.97 ID:???
こっちのほうが良かったか
https://w3techs.com/technologies/overview/javascript_library/all

market shareってどういう意味だろうね。 jQueryは96.5%みたいだけど

AngularJSは頑張ってるね。0.4%もある。
Reactは残念0.1%だ

832 :Name_Not_Found:2017/01/21(土) 23:28:48.92 ID:???
2017年 JavaScript★71.9%ものサイトがjQueryを利用 [無断転載禁止]©2ch.net
http://tamae.2ch.net/test/read.cgi/prog/1485008061/

833 :Name_Not_Found:2017/01/21(土) 23:34:22.10 ID:???
>>831
market shareはライブラリを使用する中でのjQueryの占める割合

834 :Name_Not_Found:2017/01/21(土) 23:39:57.26 ID:???
そういうのってアホみたいな数の乱立量産wpが使ってるものもカウントされるっしょ

835 :Name_Not_Found:2017/01/21(土) 23:40:52.70 ID:???
だから?

836 :Name_Not_Found:2017/01/21(土) 23:45:45.66 ID:???
https://www.similartech.com/compare/angular-js-vs-jquery
おなじよーに使ってるwebサイト数で比較したものということだが
angularとjqの比率が>>831と全く違う

googleが出した統計でもないとあてにならんと考えるね

837 :Name_Not_Found:2017/01/21(土) 23:48:55.47 ID:???
あとアテになりそうなのは、あるとしたらcloudflareみたいな
大きくてjs扱ってるcdnの利用統計かな

838 :Name_Not_Found:2017/01/22(日) 00:03:42.79 ID:???
jQueryで不便なところ
- キャプチャリングフェーズがない
- map,filter等でthis束縛がない(いちいちbind使うのが面倒)

こういうと信者は「そこだけaddEventLisener使えばいいだろ」と反論する
一つのAPIで完結しないのは美しくない
そこまでして無理にjQueryを使う必要がないから

839 :Name_Not_Found:2017/01/22(日) 00:12:46.67 ID:???
>>824
言葉を変えて何度もいうのはお前が>>766で論点をずらしてるから
日本語が不自由な人と会話するのは大変だな
あるいは日本語が不自由な振りをしてる荒らしかもしれんが

840 :Name_Not_Found:2017/01/22(日) 01:32:40.90 ID:???
Javascriptを語るスレ
俺が立ててやろうか?

841 :Name_Not_Found:2017/01/22(日) 01:46:50.77 ID:???
>>836
> angularとjqの比率が>>831と全く違う
そりゃそうだろ・・・

2つしか比べてないのと、複数比べた結果じゃ
比率がおなじになるわけないぞ。
それにデータが違うんだから多少のズレは存在する。

そのサイトでもjQueryはAngularの160倍になってるじゃないか。

842 :Name_Not_Found:2017/01/22(日) 01:49:08.31 ID:???
>>838
> 一つのAPIで完結しないのは美しくない
お前の根拠はそれだけなのね・・・
技術的な理由でもあるのかと思った。

addEventLisener使うのがそんなに嫌なら
プラグインにでもしたら?

$('.hoge').onCapture('click' ,function() {})

843 :Name_Not_Found:2017/01/22(日) 01:50:45.59 ID:???
> - map,filter等でthis束縛がない(いちいちbind使うのが面倒)

そういやDOM APIにはmapやfilter等が無いって欠点があったな。

え? そこだけDOM APIじゃなくてECMAScriptを使うっていうの?

じゃあjQueryもECMAScript使っていいよね。

844 :Name_Not_Found:2017/01/22(日) 02:15:33.59 ID:???
算数的には相対的な比率は比較対象が何個であっても変わらぬはずだが…

1.5倍も差が出るようじゃどちらも信用できんなあ
ましてw3techsのほうは実数が出てないだろう

845 :Name_Not_Found:2017/01/22(日) 02:21:04.32 ID:???
>>844
じゃあ信じられるソース持ってきたら?

846 :Name_Not_Found:2017/01/22(日) 03:36:23.09 ID:???
>>845
こういうのは主張したい人が証拠を持ってくるのが常でしょ
主張を根拠付ける証拠を否定するのに主張も証拠も不要
なんなら無視すりゃいいじゃん

847 :Name_Not_Found:2017/01/22(日) 03:51:04.91 ID:???
なにゆってんの、証拠持ってきてるじゃん。

2つもある
https://w3techs.com/technologies/overview/javascript_library/all
https://www.similartech.com/compare/angular-js-vs-jquery

お前が持ってきた証拠が
都合が悪いから信じなーいって
いってるだけだろ。

848 :Name_Not_Found:2017/01/22(日) 09:37:57.32 ID:???
jQuery君は中身のない空論ばかりだな

849 :Name_Not_Found:2017/01/22(日) 09:55:42.23 ID:???
ライブラリの存在を勘違いしているのがなんか言ってる

850 :Name_Not_Found:2017/01/22(日) 10:26:36.07 ID:???
jQuery布教が目的らしいが誰も聞いてないから無駄な努力ご苦労様って感じ

851 :Name_Not_Found:2017/01/22(日) 10:37:03.34 ID:???
2ちゃんを聞いてる糖質がなんか言ってるよ

852 :Name_Not_Found:2017/01/22(日) 11:11:39.71 ID:???
煽り文もだんだんいい加減になってきたな

853 :Name_Not_Found:2017/01/22(日) 11:54:26.59 ID:???
>>842
拡張すれば使えるのはjQueryに限らないわけで、addEventListenerをそのまま使っても、他のライブラリを拡張しても同じ事になる
その中で「jQueryを使うべき理由」も「jQueryとDOMを併用すべき理由」もない
おまえがいくら「jQueryを使うべき理由」を並べ立てようが、私の理由には決してならない

854 :Name_Not_Found:2017/01/22(日) 14:12:05.28 ID:???
> 拡張すれば使えるのはjQueryに限らないわけで、addEventListenerをそのまま使っても、他のライブラリを拡張しても同じ事になる
> その中で「jQueryを使うべき理由」も「jQueryとDOMを併用すべき理由」もない
お前は言葉遊びがしたいのか?

お前が今やったのは「使わない理由」を集めてきて
「使わない理由」の中には「使う理由がない」と言っただけ
赤いボールを集めて、その中に青いボールはないと言うようなもの
(世の中に)青いボールが無いわけではない。


addEventListenerをそのまま使っても、他のライブラリを拡張しても同じ事だが
拡張すれば使えるのはjQueryでも同じだろ

順番を逆にしただけだが、これでjQueryでも良いって意味になる
jQueryを「使わない理由がない」ということになったな。

でjQueryを「使う理由」だが、それはDOM操作を行うのに優れているからだ
jQueryが使えない局面ってのは少ないのでjQueryを使うことで開発効率の改善につながる

ほれ見ろ「使う理由」はあるではないか
「使う理由」があって「使わない理由」が無いのだからjQueryを使う方がいい

855 :Name_Not_Found:2017/01/22(日) 15:27:08.24 ID:???
初めて触れたものを至高のものとして周りに推し進める
これ中二病の症状だな

856 :Name_Not_Found:2017/01/22(日) 15:31:30.82 ID:???
昔はjQueryもPrototypeもなかったから
俺が初めて触れたものはDOM APIになるなー

始めた触れたものから変えられない人がいる一方
適切なものを選択できる人もいる。

857 :Name_Not_Found:2017/01/22(日) 15:36:41.39 ID:???
マジレスするとHTML5とCSS3の普及でjQueryの利点は既に半殺しなのに、
トランスパイラの隆盛で全殺しになったところをES2015が現れてオーバーキル秒読み状態だから、
これからの開発にjQuery使うのは自殺行為に等しい

858 :Name_Not_Found:2017/01/22(日) 15:39:48.74 ID:???
> マジレスするとHTML5とCSS3の普及でjQueryの利点は既に半殺しなのに
半殺しになって欲しいという希望だろ。
そう主張したいならソースをもってこい

現実にはHTML5がでてから数年たつ今でも増え続けている。

https://w3techs.com/technologies/history_overview/javascript_library/all
68.3% 68.9% 69.4% 69.9% 70.1% 70.2% 70.4% 70.6% 70.7% 70.9% 71.4% 71.8% 71.9% 71.9%

2016年1月から毎月増えて2017年2月の今では71.9%か

859 :Name_Not_Found:2017/01/22(日) 15:40:10.23 ID:???
俺も>>856とおなじぐらいのスタートだけど
DOM操作に関してはjQuery使ってるけどね
なんかおかしいかな

860 :Name_Not_Found:2017/01/22(日) 15:40:32.66 ID:???
> トランスパイラの隆盛で

トランスパイラはDOM操作の命令は一切含まれていない

861 :Name_Not_Found:2017/01/22(日) 15:42:38.43 ID:???
>>857
適当に意味もわからないで横文字カタカタ使うの辞めた方がいいよ
恥かくよ

862 :Name_Not_Found:2017/01/22(日) 15:49:43.86 ID:???
>>859
> 俺も>>856とおなじぐらいのスタートだけど

なんかおかしいかなって、
俺いつスタートしたって書いてないんだけど?
書いてないのに同じぐらいって言えるのがおかしいよw


ちなみに俺のスタートはブラウザを使いだしたのは
時代的にはIE3ぐらいの時(ネスケ使ってたかもだけど)
JavaScriptに関してはIE5.5とIE6でクロスブラウザの
コード書いていたか記憶はあるから2000年前後がスタートだよ
Prototype.jsは2005年ごろだね。

2000年当時はまだJavaScriptでオブジェクト指向をするのは珍しかったが、徳丸さんのページで勉強していた。
http://web.archive.org/web/20000823191634/http://www.tokumaru.org/JavaScript/index.htm
(証拠w 本当にその頃やっていなければこんなページが2000年ごろにあったなんて知ってる訳がないだろう?)

863 :Name_Not_Found:2017/01/22(日) 15:52:16.31 ID:???
>>858
正しい推移な
https://www.google.co.jp/trends/explore?q=jQuery

開発者はもうjQueryから離れてるんだよ

864 :Name_Not_Found:2017/01/22(日) 15:53:55.07 ID:???
>>856>>859みたいに両方勉強した上でjqueryを選択するのは何も問題無いでしょ
学習コスト云々でいきなりjquery触らせるとか最新のESもAPIも追っかけなくなるとかは勘弁して欲しいけど

865 :Name_Not_Found:2017/01/22(日) 15:54:27.56 ID:???
>>863
それ検索の人気度であって
使われてるかどうかじゃないじゃんw

866 :Name_Not_Found:2017/01/22(日) 15:56:02.80 ID:???
別にけなすわけじゃないんだけど
これぐらいもできないだろう?
ライブラリの否定はJavaScriptに於いては無理
elem.setAttribute({
type: button,
name: hoge,
value: hoge
});

867 :Name_Not_Found:2017/01/22(日) 15:57:07.51 ID:???
>>864
それは会社に言うべきことだな

まあ現実として会社のプロダクトコードにjQueryが使われてるのが現実
会社のプロダクトコードに新人練習コードを使うわけには行かないんだから

そういう場合にいきなり新人に実践やらせるか
JavaScriptの勉強をさせるかという会社の方針の問題


ここでその会社の方針について語るのは意味が無いから、
JavaScript(jQuery含む)一般の話をするしか無い

868 :Name_Not_Found:2017/01/22(日) 15:59:43.41 ID:???
>>866
jQueryだったらこういう書き方もできるよね

$('.hoge').attr({
type: button,
name: hoge,
value: hoge
});


setAttributeに加えて、
1. 構文が短い
2. セレクタを使うから複数の要素にも対応
という優れた点がある

869 :Name_Not_Found:2017/01/22(日) 16:03:08.61 ID:???
jQueryって初心者御用達のライブラリだが、会社で使われてるとかその会社がやばいだけだろ

870 :Name_Not_Found:2017/01/22(日) 16:04:03.45 ID:???
>>864
それは違うだろ?どんなことの学習でも最初は入門から入る
JavaScriptに興味を持ってもらいシェアを高めることも重要
学習レベルが上がればそれに応じた事を学べばいいんじゃないの?
ある意味取っ付き易さも必要だよ

871 :Name_Not_Found:2017/01/22(日) 16:06:12.08 ID:???
>>869
まだIE6が息してた頃はクロスブラウザ対策にjQuery導入するのが一般的だった
駆逐された今となってはもうそんなところは無いが

872 :Name_Not_Found:2017/01/22(日) 16:08:15.10 ID:???
それとエディターの補完機能が無ければJavaScriptなんて
とんでもないけど書いてられないわなw

873 :Name_Not_Found:2017/01/22(日) 16:20:34.43 ID:???
そしてjQueryはずっと増え続けている

https://w3techs.com/technologies/history_overview/javascript_library/all
68.3% 68.9% 69.4% 69.9% 70.1% 70.2% 70.4% 70.6% 70.7% 70.9% 71.4% 71.8% 71.9% 71.9%

2016年1月から毎月増えて2017年2月の今では71.9%か

874 :Name_Not_Found:2017/01/22(日) 16:23:45.59 ID:???
jQueryからReactやAngularに移ることはあっても
jQueryからDOM APIに移ることはないよ


そしてjQueryからReactやAngularに移るのは
JavaScriptがメインのアプリだけ

WordPressのブログなどでちょこっと使うだけなら
ReactやAngularは手間がかかるだけで導入されない

結果、今の時代は
ウェブページがメインのサイト・・・jQuery
JavaScriptメインのサイト・・・React、Angular
という住み分けがなされている。

更に言うならウェブにあるものの多くが
ウェブページがメインのサイト

875 :Name_Not_Found:2017/01/22(日) 16:31:11.52 ID:???
>>868
こういう例もあるよね?最初からCSSと使えと言えばそれまでだけど
明らかにやる気のなさを感じる
CSSのプロパティとU & Rで表記も異なる

e.style.borderWidth = '2px';
e.style.borderStyle = 'solid';
e.style.borderColor = 'red';

$.fn.css('border': '2px solid red');

876 :Name_Not_Found:2017/01/22(日) 16:35:29.54 ID:???
> $.fn.css('border': '2px solid red');
なんだそのいかにもjQuery知りませんって書き方はw

877 :Name_Not_Found:2017/01/22(日) 16:44:35.19 ID:???
昨日のinnerHTMLは軽い君でも思ったが、
真性アスペには何を言っても無駄だなマジで

878 :Name_Not_Found:2017/01/22(日) 16:45:46.08 ID:???
反論できなくなったらまたそれだw

879 :Name_Not_Found:2017/01/22(日) 16:47:27.49 ID:???
innerHTMLが軽いなんて誰も言ってなかったはずだが
真性アスペって自分のことじゃねーの?

880 :Name_Not_Found:2017/01/22(日) 17:34:55.04 ID:???
innerHTMLを使って高速に処理するとか抜かしてたのはどこのどいつだよ

881 :Name_Not_Found:2017/01/22(日) 17:39:35.30 ID:???
本当にアスペなのかな?
日本語の説明をするのって面倒だね。

innerHTMLを使って高速に処理する方法もあるっていうのは
必ずしもinnerHTML自信が速いって意味にはならないんだよ。

本当に面倒だ。

882 :Name_Not_Found:2017/01/22(日) 17:43:33.70 ID:???
それから10回ぐらいまでならinnerHTMLの方が
速いってベンチマーク結果でてたじゃん

883 :Name_Not_Found:2017/01/22(日) 17:48:13.55 ID:???
797 自分:Name_Not_Found[sage] 投稿日:2017/01/21(土) 17:28:24.54 ID:???
やってみたよ。たしかにinnerHTMLが早くなった。

const dom = document.createElement('div');

console.time('TextNode');
for(var i=0; i<10000; i++) dom.appendChild(document.createTextNode('test'));
console.timeEnd('TextNode');

console.time('innerHTML');
var text = ''
for(var i=0; i<10000; i++) text+='text'
dom.innerHTML += text;
console.timeEnd('innerHTML');

結果
TextNode: 9.451ms

innerHTML: 4.147ms

884 :Name_Not_Found:2017/01/22(日) 17:57:16.26 ID:???
↑なんでこうなるのか納得できない人もいるみたいだけど
JavaScriptとDOM APIの境界線を超える回数の問題だよ

正確に言うとDOM APIっていうのはJavaScriptではない
JavaScriptから見れば外部API呼び出しにほかならない
境界線を超える操作、つまり外部API呼び出しには時間がかかる

ループや文字列結合はJavaScriptの世界だけで実現できる処理
JavaScriptとDOM APIの境界線を超えないのだから速い
そしてinnerHTMLの呼び出しで1回だけ境界線を超える
境界線を超えたの後に行われるパース処理などは、今度は境界線の向こうだけでできる処理

境界線を超える操作(DOM APIの呼び出し)の回数が大きく減るから
innerHTMLの方が速くなってしまうわけ

この現象は論理的に説明できるんだよ

885 :Name_Not_Found:2017/01/22(日) 18:07:28.10 ID:???
ついで言うと文字列操作などのJavaScriptとDOM APIの境界線を
超えない処理だけ実行することで速くすることができるという特徴は
ReactのShadow DOMの特徴にもなってる。

Shadow DOMはDOM API呼び出しをせずにJavaScriptの中だけで
仮想的なDOMツリーを生成して、差分を抽出して、変更があったところだけ
DOM APIを呼び出して反映という処理を行ってる。

886 :Name_Not_Found:2017/01/22(日) 18:09:44.40 ID:???
Shadow DOMは遅いDOM APIの呼び出しを必要最小限にするから速い

887 :Name_Not_Found:2017/01/22(日) 20:19:03.38 ID:???
>>876
> $.fn.css('border': '2px solid red');
:は間違ってるけど
ちなみにあんたはどう書くの?

888 :Name_Not_Found:2017/01/22(日) 20:31:26.96 ID:???
お、良かったまだ突っ込まれてなかったw
Shadow DOMじゃなくてVirtual DOMね

889 :Name_Not_Found:2017/01/22(日) 21:29:28.66 ID:???
DOM APIが遅いのはメモリモデルがJSエンジンと違うからで
昨年度から進めてる統合作業がうまく行けば来年度中には改善される

890 :Name_Not_Found:2017/01/22(日) 21:42:31.07 ID:???
改善であって解決するわけもないし
来年だし、どうせChromeだけだし

891 :Name_Not_Found:2017/01/22(日) 22:09:10.41 ID:???
これだけ間違ったことをドヤ顔で言えるんだから大したもんだよ

892 :Name_Not_Found:2017/01/22(日) 22:16:42.64 ID:???
>>719
> ちなみに、誰かさんが好きなjQueryはIE6サポートがなくなった今でもremoveEventListenerで後始末をしてる

これとかね。ドヤ顔したとたんこうなるw

>>719
> ちなみに、誰かさんが好きなjQueryはIE6サポートがなくなった今でもremoveEventListenerで後始末をしてる
してない。不必要だからだ

https://github.com/jquery/jquery/pull/149/commits/37d297c67fe3569a5a9d81586e14d4a887df7879 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


893 :Name_Not_Found:2017/01/22(日) 22:35:55.18 ID:???
この粘着質な無自覚な荒らしは何ともならんのか

894 :Name_Not_Found:2017/01/22(日) 23:15:07.03 ID:???
自分が十年近く前の知識で語ってることさえ自覚してくれりゃまだ救いはあるんだが

895 :Name_Not_Found:2017/01/22(日) 23:35:56.12 ID:???
babel信者のせいだろw

896 :Name_Not_Found:2017/01/22(日) 23:52:13.44 ID:???
責任転嫁、論理のすり替え
精神的に成熟してないのであろう
生温かい目でスルーしてやればよい

897 :Name_Not_Found:2017/01/23(月) 00:14:24.48 ID:???
jquery実装そのものに不満が噴出してる訳でも無いし要は使われ方の問題じゃないかな
上手に活用しよう、でも惰性で依存はNGって話で

898 :Name_Not_Found:2017/01/23(月) 01:00:33.88 ID:???
本当に必要なら使えば良い、必要ないと思ったら無駄だから使わなければいい
シンプルだな

個人的にはどうも開発者の効率と慣れをユーザの負荷に転嫁してる気がして
使う必要性も感じないんで今は使ってない

899 :Name_Not_Found:2017/01/23(月) 05:15:36.79 ID:???
本当に必要なら使えば良い、とは言えないだろうよ
この業界マサカリ文化があるし、
特にWebにおいては負の遺産問題に皆苦しめ続けられてきてるんだから、
過去の栄光がいつまでも出しゃばるのをよく思わず批判する人が居て当然
簡単に言えばjQueryを長引かせるのはIEを長引かせるのと同じようなもの

900 :Name_Not_Found:2017/01/23(月) 05:21:13.53 ID:???
マサカリとか文化以前に使ってるやつほとんどいないだろ

901 :Name_Not_Found:2017/01/23(月) 05:30:57.71 ID:???
> 簡単に言えばjQueryを長引かせるのはIEを長引かせるのと同じようなもの

同じように

DOM APIを長引かせるのはIEを長引かせるのと同じようなもの

902 :Name_Not_Found:2017/01/23(月) 05:31:52.40 ID:???
自分はjQuery使わないって思うだけで、口に出さなければいいのに
いちいち文句をいうんだよなw

903 :Name_Not_Found:2017/01/23(月) 05:38:15.55 ID:???
栄光とかじゃないな
同じような処理ならコード書く時間が短いほうがいいし消費リソースは低いほうがいい
あとはこの二つのどっちをどんだけ優先するかの問題だ

904 :Name_Not_Found:2017/01/23(月) 05:51:29.86 ID:???
jQueryが重いといってもReactやAngularよりは軽いんだよな
ライブラリのサイズも小さいし

905 :Name_Not_Found:2017/01/23(月) 06:58:43.40 ID:???
なんでjQuery使うのか?って言われたら
開発効率の他に各ブラウザのバグ対策があるな

はっきり言ってAndroidとかの細かいブラウザのバグなんか
いちいち調べてられない。でもバグレポートなんか上がれば
対応しないといけないし、そういう環境でテストをしなくてはいけない
それも含めて開発コストだし

それに比べれば消費リソースなんて微々たる問題
時間が立つごとにユーザーの持ってるデバイスの
性能の方があがってくれる

906 :Name_Not_Found:2017/01/23(月) 07:26:56.21 ID:???
// Support: IE8, Opera 11-12.16
// Nothing should be selected when empty strings follow ^= or $= or *=
// The test attribute must be unknown in Opera but "safe" for WinRT
// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
if ( el.querySelectorAll("[msallowcapture^='']").length ) {
rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
}

// Support: IE8
// Boolean attributes and "value" are not treated correctly
if ( !el.querySelectorAll("[selected]").length ) {
rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
}

// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
rbuggyQSA.push("~=");
}

// Webkit/Opera - :checked should return selected option elements
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
// IE8 throws error here and will not see later tests
if ( !el.querySelectorAll(":checked").length ) {
rbuggyQSA.push(":checked");
}

// Support: Safari 8+, iOS 8+
// https://bugs.webkit.org/show_bug.cgi?id=136851
// In-page `selector#id sibling-combinator selector` fails
if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
rbuggyQSA.push(".#.+[+~]");
}

907 :Name_Not_Found:2017/01/23(月) 07:27:44.26 ID:???
↑こういうコードを見ると自分で実装するのはうんざりするよ
jQuery使っていたほうが安全

908 :Name_Not_Found:2017/01/23(月) 07:30:15.09 ID:???
// Support: Windows 8 Native Apps
// The type and name attributes are restricted during .innerHTML assignment
var input = document.createElement("input");
input.setAttribute( "type", "hidden" );
el.appendChild( input ).setAttribute( "name", "D" );

// Support: IE8
// Enforce case-sensitivity of name attribute
if ( el.querySelectorAll("[name=d]").length ) {
rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
}

// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
// IE8 throws error here and will not see later tests
if ( el.querySelectorAll(":enabled").length !== 2 ) {
rbuggyQSA.push( ":enabled", ":disabled" );
}

// Support: IE9-11+
// IE's :disabled selector does not pick up the children of disabled fieldsets
docElem.appendChild( el ).disabled = true;
if ( el.querySelectorAll(":disabled").length !== 2 ) {
rbuggyQSA.push( ":enabled", ":disabled" );
}

// Opera 10-11 does not throw on post-comma invalid pseudos
el.querySelectorAll("*,:x");
rbuggyQSA.push(",.*:");

909 :Name_Not_Found:2017/01/23(月) 07:30:48.71 ID:???
今IE8対応しなきゃいけない案件どんだけあんの

910 :Name_Not_Found:2017/01/23(月) 07:32:49.30 ID:???
>>909
なんでバグがIE8だけだと思った?w
そこ知りたいね。なんで今IE8だけの話をしたの?

911 :Name_Not_Found:2017/01/23(月) 07:34:00.05 ID:???
// Support: Firefox <=44
// Firefox doesn't have focus(in | out) events
// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
//
// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
// focus(in | out) events fire after focus & blur events,
// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857

912 :Name_Not_Found:2017/01/23(月) 07:34:50.45 ID:???
// Support: Safari <=7 - 9.1, Chrome <=37 - 49
// Add the top/left cssHooks using jQuery.fn.position
// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
// getComputedStyle returns percent when specified for top/left/bottom/right;
// rather than make the css module depend on the offset module, just check for it here

913 :Name_Not_Found:2017/01/23(月) 08:31:27.77 ID:???
おまえが「jQueryを使っている理由」は皆知っているからもう黙ってろよな
皆何度も聞かされてうんざりしてる

914 :Name_Not_Found:2017/01/23(月) 09:33:08.69 ID:???
ここにいる人が前と同じ人かなんてわからないんだから
みんな知ってると決められるわけじゃないん
頭大丈夫かなこの人?

915 :Name_Not_Found:2017/01/23(月) 09:38:11.74 ID:???
こいつは>>766の「誰もが思っていること」には疑問を抱かないのかね

916 :Name_Not_Found:2017/01/23(月) 09:40:21.96 ID:???
バグを補うからそのバグを放置するんだよ
IEなんかいい例だろ?

917 :Name_Not_Found:2017/01/23(月) 10:16:54.89 ID:???
思い返すとjsにやらせてきたことのほとんどがDOM操作とフォームチェックだった
ずっと前にcanvasにグラフ描かせたことはあったけど

918 :Name_Not_Found:2017/01/23(月) 10:58:49.32 ID:???
>>915
まさにそれがあったから、「皆」といってみた
自分が使うときには良くて他人が使うとダメなんだな

919 :Name_Not_Found:2017/01/23(月) 11:31:59.93 ID:???
姑息なバンドワゴン効果を使う奴だとは思ってた
「誰もがjQueryを使ってるよ。jQueryのシェアは高いよ。」
⇒たくさんの人が使っているなら良いものに違いない(錯覚)

920 :Name_Not_Found:2017/01/23(月) 11:59:37.53 ID:???
なんか頓珍漢なこと言ってる人がいるね

921 :Name_Not_Found:2017/01/23(月) 12:23:09.24 ID:???
統計は偏りが出ることを加味しないと参考程度にもならん、と思ってる
ぶっちゃけ、利用者数の多寡はどうでもいい

922 :Name_Not_Found:2017/01/23(月) 12:40:23.86 ID:???
jQueryは便利すぎて使っちゃうけど、3Dとかでもない限りその他は俺俺ライブラリかなぁ
万一使ったライブラリにバグがあったり、追加機能に対応できなかったりしてもそのライブラリはフリーであって何の責任もないわけで
フリーなものに動かないから修正してねっていうのもおかしなはなし。

だったら最初から自作になる

923 :Name_Not_Found:2017/01/23(月) 12:47:52.13 ID:???
自作可能な技術力のある人程、そういう傾向になるだろうね

924 :Name_Not_Found:2017/01/23(月) 12:58:37.79 ID:PvcRa+bX
>>918
わかってねーな
俺が言ってるのはjQueryのメリットだ
これは知らない人がいるかも知れないし
他の人にも役立つ情報だ

おまえが言ってるのはjQueryのメリットは
知ってるが俺は使わないという
おまえの話だ。そんなもん他人にはどうでもいいことだ

925 :Name_Not_Found:2017/01/23(月) 13:05:34.36 ID:PvcRa+bX
技術力がある人はライブラリに
バグがあるったらフォークして
修正してプルリクだすだろw

926 :Name_Not_Found:2017/01/23(月) 13:09:59.83 ID:PvcRa+bX
統計は間違ってるかも知れない
間違ってる証拠はないが
統計は全て間違ってるということにしよう

みたいな事言ってるバカがいるねw

927 :Name_Not_Found:2017/01/23(月) 13:23:48.75 ID:6YqGcZtr
Angular使っててもカスタムディレクティブ作るときはjQuery使うよね?

928 :Name_Not_Found:2017/01/23(月) 14:20:10.40 ID:???
ライブラリを使わないことを名誉のように
思っているアホが居ることに驚いた

929 :Name_Not_Found:2017/01/23(月) 14:26:51.79 ID:???
ライブラリを使わないことを罪悪のように
語っているクズが居ることに驚いた

930 :Name_Not_Found:2017/01/23(月) 14:28:55.93 ID:???
「昨日一睡もしていないんだぞ」
こういう意味不明なことを自慢気に語っている奴っているよね
これと同じだろ?w

931 :Name_Not_Found:2017/01/23(月) 15:02:27.12 ID:???
jsdo.it で、Math.random()を使って、0〜99までの整数を、16個得ていたが、
16個とも、50以下だったことがあった。
また、50以上の数値が多いこともある

つまり、乱数が偏る。
線形合同法かな?

932 :Name_Not_Found:2017/01/23(月) 15:18:44.88 ID:???
そりゃいっぱい試行すればそういうこともあるだろうよ
100万回やればあわせて40回ぐらいは

933 :Name_Not_Found:2017/01/23(月) 16:19:04.75 ID:???
3年前くらいまでは偏りがあったが、今はメルセンヌツイスタ系になってるので無いといって良い

934 :Name_Not_Found:2017/01/23(月) 18:46:14.80 ID:???
>>927
使っちゃう。使わなくてもできるけど楽だから併用してる

935 :Name_Not_Found:2017/01/23(月) 20:18:15.17 ID:???
jquery使うななんて誰も思ってないっしょ
なんの吟味も無く気付いたらプロジェクトに入ってるってのはやめてくれって訳で

936 :Name_Not_Found:2017/01/23(月) 21:23:22.82 ID:???
お絵かきサイトを作ろうと思っているのですが
WEBサイト訪問者の描いた絵をテキスト形式でサーバーに保存したり読み込んだり出来るようにしたいです
お絵かきの部分自体はjavascriptで作ったのですがファイルの入出力をjavascriptで行うにはどうしたら良いですか?
他の言語との連携でも良いのですがググる能力不足でうまく行くファイル入出力の方法になかなか当たれない感じなので質問させてください
当方,サーバサイドプログラムというのをまだ1度も書いたことがない初心者です

937 :Name_Not_Found:2017/01/23(月) 21:33:47.03 ID:DAMJNVRd
forやwhile内で一度も条件に合う事が無かったらtest()が実行される文を書きたいのですが
var hoge = false;
for(){
 if(条件){
  hoge = true;
 }
}
if(!hoge){
 test();
}
みたいに書いてますがこれをもうちょっと綺麗に書く方法ありますか?
do whileやtryの存在を最近知ったのでもしあったらお願いします

938 :Name_Not_Found:2017/01/23(月) 21:37:29.84 ID:???
>>936
とても初心者とは思えないので恐れ多いけれど

ファイル入出力と言うよりは通信の話になると思います
サーバー側でjavascriptを動かすならnode.jsがそれに当たるかと

939 :Name_Not_Found:2017/01/23(月) 22:27:38.81 ID:???
>>924
>>913が「俺の思っている事」というのはその通りだ
「お前がやった事」と同じ事をやって反応を見たかったからわざとやった

> 誰もが思っていることを言うね。
> passive単機能のためにjQueryを捨てるのは大げさすぎる(ドーン!)
これは「>>766が思っている事」だ
「皆が思っている事」ではない

お前は自覚なしにそういうことをやる人間だということがよく分かった

940 :Name_Not_Found:2017/01/23(月) 22:51:17.03 ID:???
>>937
forやwhileがどう関わっているのか不明だけど、

if (!条件1 && !条件2 && !条件3) {
 test();
}

941 :Name_Not_Found:2017/01/23(月) 22:56:46.23 ID:???
>>937
そのループで何が変わるのかによる。仮にforで配列のすべての値を見る場合

まず、今のスタンダードな書き方はこれ

var a = [1, 2, 3, 4, 5];
var hoge = a.some(function(v) {
return v === 3
});

if(hoge){
 test();
}

アロー関数を使う場合(最新ブラウザだけ or babelを使う場合)はこのような書き方ができる

var hoge = a.some(v => v === 3)

反対に古いブラウザにも対応させる場合は、lodashを使うと良い

var hoge = _.some(a, function(v) {
return v === 3
});

ちなみにsomeの反対はevery

942 :Name_Not_Found:2017/01/23(月) 22:59:10.70 ID:???
>>939
お前の焦点はそこかw
どうでもいいところだな。

俺が言いたいことは

お前個人の感想(俺は使わない)は、お前にしか当てはまらない事なのだから黙ってろ。
俺の意見であるjQueryのメリットは他人に言うべきことだからここに書くって所だったんだがw

943 :Name_Not_Found:2017/01/23(月) 23:03:35.71 ID:???
>>935
> なんの吟味も無く気付いたらプロジェクトに入ってるってのはやめてくれって訳で
jQueryに限らない話。

反対にみんながjQuery使ってるのにオレオレライブラリ使うのもやめてくれってことだ

944 :Name_Not_Found:2017/01/23(月) 23:07:05.02 ID:???
>>941
うお、some知らなかった
質問者じゃないけど勉強になった
ありがとう

945 :Name_Not_Found:2017/01/23(月) 23:07:08.41 ID:???
>>942
> どうでもいいところだな。
都合ご悪い事実はいつもそれだな
まあ、俺もおまえのいうことはどうでもいいと思うが

> お前個人の感想(俺は使わない)は、お前にしか当てはまらない事なのだから黙ってろ。
いってもいない事に文句をいわれても困る

946 :Name_Not_Found:2017/01/23(月) 23:11:31.81 ID:???
>>936
ローカルのファイル読み書きならFile APIを使うと良いよ。
これはjQeuryの話じゃないんで、
例のDOM API大好きっ子さんにでもまかせよう
動くコードを書いてくれるはずだw

で、仕様がよくわからないね。
サーバーに保存したり読み込んだりっていうのなら、
それはJavaScriptは関係ない。

JavaScriptで書いたものを"サーバーに送信" と "サーバーから受信" なので
ファイルの入出力とは関係ないんだ。送受信の話であればAjaxになる。

サーバー側では送受信したデータをファイルに対して入出力を
やっているだろうけどそれは別の言語でも良い。

ローカルのファイルを読み書きしたいのか
書いた画像をサーバーに保存したいのかもう少しよく考えてみて

947 :Name_Not_Found:2017/01/23(月) 23:12:04.07 ID:???
> 反対にみんながjQuery使ってるのにオレオレライブラリ使うのもやめてくれってことだ
また、「みんなが」で煽るのかよ
懲りない奴だな

948 :Name_Not_Found:2017/01/23(月) 23:13:20.01 ID:???
>>945
> > お前個人の感想(俺は使わない)は、お前にしか当てはまらない事なのだから黙ってろ。
> いってもいない事に文句をいわれても困る

じゃあこれからも言うなよ。
お前が使わないとかどーでもいいからさ。

俺はひたすらjQueryはDOM APIよりも便利というだけの話
「jQueryはDOM APIより便利だけど、それでも俺は使わないんだー」とか
いらないからねw

949 :Name_Not_Found:2017/01/23(月) 23:14:30.03 ID:???
>>947
何か問題でも?

アスペって文脈がわからないから
違う文脈であっても単語レベルで同じと認識しちゃうよねw

950 :Name_Not_Found:2017/01/23(月) 23:16:10.70 ID:???
>>944
どういたしまして。lodashはもっといろいろあるべよ
流石に多すぎでついていけなくなってるけどwww

951 :Name_Not_Found:2017/01/23(月) 23:31:42.93 ID:???
>>949
みんながjQueryを使ってるわけじゃねーよ

952 :Name_Not_Found:2017/01/23(月) 23:31:59.24 ID:???
生JSは勿論ZeptoもminifiedもMobileだってあるしカスタムビルドも出来る
吟味した上でmin.jsなら良い、ノータイムで出してくるのは勘弁して

953 :Name_Not_Found:2017/01/23(月) 23:35:58.61 ID:???
>>937
> do whileやtryの存在を最近知ったのでもしあったらお願いします

tryは例外を扱うもので(処理を途中で中断するものだと考えてはいけない)
別物だけど、forとかwhileなどのループ処理は実は最近あまり使われなくなりつつある。

もちろんプログラミングの基礎なので知って置かなければいけない知識だけど
最近は関数型プログラミングの考え方が取り入れられ、
ループ処理はsomeやeveryなどを使ってシンプルに書くことができるようになった。

JavaScriptにその波が来たのは比較的最近(といってもIE9ぐらい)なんだけど
それよりも前から実現していたのがjQueryやUnderscore(lodash)なんだよね。

DOM APIはオブジェクト指向型なのでループで回して処理するって考え方がつきまとうけど
jQueryはループをほとんどしなくて良くなる。
こういった特徴があるのでブラウザ間の互換性問題がなくなった今でも
開発効率を上げることがライブラリとして使用されているわけ

954 :Name_Not_Found:2017/01/23(月) 23:36:29.64 ID:???
jQueryがないと何も出来ない奴は基地外しかいない

955 :Name_Not_Found:2017/01/23(月) 23:37:08.85 ID:???
>>951
> みんながjQueryを使ってるわけじゃねーよ

文脈やっぱりわかってないよねーw

↓普通の人なら、ここでいう「みんな」が誰のことを指しているのか理解できます。

> なんの吟味も無く気付いたらプロジェクトに入ってるってのはやめてくれって訳で
> 反対にみんながjQuery使ってるのにオレオレライブラリ使うのもやめてくれってことだ

956 :Name_Not_Found:2017/01/24(火) 00:21:09.82 ID:???
>>955
はぐらかすしか脳のない人のいうことは違うな

957 :Name_Not_Found:2017/01/24(火) 00:39:01.06 ID:???
無理してレスしなくていいんやでw

958 :Name_Not_Found:2017/01/24(火) 00:45:06.91 ID:???
自作ライブラリ大いに結構
自作する事で自身が研鑽されるからどんどんやってくれ
「ライブラリを使う事でしか書けない人」より「ライブラリを使ってもライブラリを使わなくても書ける人」の方が重宝される
一つを極めるぐらいなら全て極めた方がいい
一つしか言語を使えない人より多言語を扱える人が求められるのと同じ

959 :Name_Not_Found:2017/01/24(火) 00:50:52.93 ID:???
>>937
一つの書き方に拘らず、様々な書き方を覚える事を勧める

var array = [1, 2, 3, 4, 5], i = array.length;
while (i && array[--i] > 0);
if (!i) {
 console.log('全てが正の数');
}

960 :Name_Not_Found:2017/01/24(火) 00:56:37.73 ID:???
>>958
自分を研磨することと
仕事で使うものは別って知ろうな

961 :Name_Not_Found:2017/01/24(火) 01:00:37.02 ID:???
>>959をわかりやすく書くと

var array = [1, 2, 3, 4, 5];
if (array.every(function(v) { return v > 0} )) {
 console.log('全てが正の数');
}

962 :Name_Not_Found:2017/01/24(火) 01:12:31.35 ID:???
>>960
自分を研磨しない人は仕事では無能
jQueryしか使えない人などとんでもない

963 :Name_Not_Found:2017/01/24(火) 01:22:36.27 ID:???
>>962
本当にアスペだなぁw

自分を研磨するのは良いが、
オレオレライブラリを仕事で使うなって
言ったんだよ。

これでもまだ意味わからないか?

964 :Name_Not_Found:2017/01/24(火) 01:30:29.17 ID:???
自前の関数作るなってバカじゃねえの

965 :Name_Not_Found:2017/01/24(火) 01:31:13.95 ID:???
アスペってほんとひどいなw
自作ライブラリって言ってんのになw
jQueryつかって話だよ。

966 :Name_Not_Found:2017/01/24(火) 01:31:49.04 ID:???
↓普通の人なら、この話と理解できます

> なんの吟味も無く気付いたらプロジェクトに入ってるってのはやめてくれって訳で
> 反対にみんながjQuery使ってるのにオレオレライブラリ使うのもやめてくれってことだ

967 :Name_Not_Found:2017/01/24(火) 01:46:36.17 ID:???
チームのルールには勿論従うべきだろうが、jQueryを使うのが必然のルールってわけでもない
おまえのチームではjQueryを使うのが当たり前なんだろうな

968 :Name_Not_Found:2017/01/24(火) 01:50:37.71 ID:???
俺の会社の社内ルールをこいつが勝手に決めつけている事に驚いてる

969 :Name_Not_Found:2017/01/24(火) 02:10:14.31 ID:???
jQueryの話、どうせ極々一部しか議論してないだろうし、
そもそも議論するためのスレじゃないから別の場所でやればぁ?
邪魔なんだよ

970 :Name_Not_Found:2017/01/24(火) 02:20:26.85 ID:???
勉強目的でライブラリを自作する事と社内ルールに従う事は別物なんだが、文脈を読めない人らしいな
いずれは社内ライブラリを作れる技術を持つことが理想だが

971 :Name_Not_Found:2017/01/24(火) 02:27:35.66 ID:???
ライブラリを作ることが目的です

972 :Name_Not_Found:2017/01/24(火) 02:28:17.49 ID:???
>>969
議論はしてないよ。
jQueryを使った回答をしてるだけ

973 :Name_Not_Found:2017/01/24(火) 02:28:20.01 ID:???
>>959
もう少し、切り詰められるが、どっちがいいんだろうな
>>959の方が素直な書き方だとは思うが…

var array = [1, 2, 3, 4, 5], i = array.length;
while (array[--i] > 0);
if (i === -1) {
 console.log('全てが正の数');
}

974 :Name_Not_Found:2017/01/24(火) 02:36:48.43 ID:???
今度はショートコーディング厨か

975 :Name_Not_Found:2017/01/24(火) 02:43:20.13 ID:???
>>959は if (i === 0) の方が分かりやすいとは思った
959のままでも分かるけどね

976 :Name_Not_Found:2017/01/24(火) 02:55:22.76 ID:???
>>937
初心者的にはfor文が分かりやすいかもね

var array = [1, 2, 3, 4, 5];
for (var i = 0, len = array.length; i < len && array[i] > 0; ++i);
if (i === len) {
 console.log('全てが正の数');
}

977 :Name_Not_Found:2017/01/24(火) 03:08:39.87 ID:???
一見して、誤解誤読なく、構造や趣旨を理解できることを最重要視する自分にとっては
>>937のままが一番良く見えて
他のはコメントのサポートが必要に思えてくる

あとはfor, if構文に付随する { } の省略だろうか

978 :Name_Not_Found:2017/01/24(火) 03:53:22.81 ID:NQRd0x3q
初心者がやってしまいがちなのは基本的な定型コードを覚え、それに当てはめてプログラミングするやり方。
だから、「どんなコードがいいですか?」の質問も今後、使いまわせる定型コードが欲しくて質問していて内部動作がどうなっているかはどうでもいい、となる。
これでは応用が利かないので少し定型から外れたコードに遭遇した途端に読めなくなる。
例えば、「for文には {} が後続しなければならない」というルールの思い込みとかね。

// (1) >>937のコード
var array = [1, 2, 3, 4, 5], flag = false;
for (var i = 0, len = array.length; i < len; ++i) {
 if (array[0] > 0) {
  flag = true;
 }
}
if (flag) {
 console.log('全てが正の数');
}

// (2) >>937のコードからflag変数を排除したコード
var array = [1, 2, 3, 4, 5], flag = false;
for (var i = 0, len = array.length; i < len; ++i) {
 if (array[0] <= 0) {
  break;
 }
}
if (i === len) {
 console.log('全てが正の数');
}

979 :Name_Not_Found:2017/01/24(火) 03:59:27.06 ID:NQRd0x3q
>>978の(2)からif文の条件をfor文に持っていく事で>>976になる
先で少し触れたけど、for文には{}が後続しなくてもよくてStatementがあればいいからね
Statementが何か理解さえすれば、コメントがなくても十分に読めると思う

980 :Name_Not_Found:2017/01/24(火) 04:24:35.64 ID:???
どうでもいいことだが後者の例、変数定義 flag = false を排除し忘れてる

ループ構造の中に判定も仕込んだり、
ループのための変数にフラグの役割も与えたり、というのはきれいじゃないように自分は思うなあ
1つの構造・変数はできるだけ1つの役割だけこなすほうが
少々行数は多くなってもスッキリしている感じを受ける

981 :Name_Not_Found:2017/01/24(火) 04:29:10.92 ID:???
あと今はjsではforのループ条件の前に len = array.length って固定しなくても、
for( var i=0; i<array.length; i++ )と書いても
毎週 array.length を計算しないで1回だけ計算するようにエンジン側が勝手にやってくれるんじゃなかったっけ

後者の例だとそのあとlenを使ってるからその辺含めると微妙に節約になるのはわかる
でもそうするとflagを使ってもlenを使っても使う変数の数は一緒ってことに

982 :Name_Not_Found:2017/01/24(火) 04:31:43.69 ID:???
連投すまんけど ++i の部分も
php等だとインクリメントしてから結果を返すのかそうでないのかで若干負荷が変わると聞くけど
確かjavascriptは最適化してくれてて、むしろ i++ と書いたほうが良いとどこかで見た記憶がある
ぱっとソースを出せないのが申し訳ないが

983 :Name_Not_Found:2017/01/24(火) 04:43:29.13 ID:???
果てしなく細かいところだと、
ループ内で定義した(≒ループ用と認識されやすい)変数をループ外で使うのもちょっと
スコープを意識しちゃう人にはむしろトラップになる(他言語で言うブロックスコープってやつ)

javascriptだとforの中で定義した i も len もfor外で使える、それは良い
javascriptでもforEachだと外では使えない、というところで勘違い要因

あとfor( var i= .... )はもはや定型だからいいかもだけど
ループに使う変数も含めて、最初に全部varすべきってルールなところもあったり
ローカルルールはたまにc書いてんじゃねえんだぞとか思うこともあるけど、
それはそれとして、扱う変数の数が結局一緒なら flag でもいいんじゃないの、と考えたりもした

984 :Name_Not_Found:2017/01/24(火) 05:47:11.06 ID:???
varをletに変えられないって論点もあるな
結局スコープと変数管理なんだが

985 :Name_Not_Found:2017/01/24(火) 09:31:16.64 ID:???
一人で盛り上がってる所悪いんだけどこれだけでできるよ

let array = [1, 2, 3, 4, 5]
if (array.every(v => v > 0)) {
 console.log('全てが正の数');
}

986 :Name_Not_Found:2017/01/24(火) 09:37:55.23 ID:???
つか937見てみ
[ 1,2,3,4,5 ]は959が例として出しただけだ

987 :Name_Not_Found:2017/01/24(火) 09:41:45.80 ID:???
>>959じゃなくて>>941だな

988 :Name_Not_Found:2017/01/24(火) 09:50:20.47 ID:???
959じゃなかったか悪かった

989 :Name_Not_Found:2017/01/24(火) 10:23:35.48 ID:???
>>937
俺ならこう書く
for(var hoge = false, i = 0; i < arr.length; i++) {
a == b && (!hoge);
hoge || test();
}

990 :Name_Not_Found:2017/01/24(火) 10:25:49.89 ID:???
a == b のところは条件ね

991 :Name_Not_Found:2017/01/24(火) 10:32:53.37 ID:???
>>989
test()が全ループで実行されるが何の意図があるんだ?

992 :Name_Not_Found:2017/01/24(火) 10:43:38.83 ID:???
>>991
間違ってたわ
for (var hoge = false, i = 0; i < arr.length; i++) {
条件 && (hoge = true);
hoge || test();
}

993 :Name_Not_Found:2017/01/24(火) 10:57:27.08 ID:???
>>992
突っ込みどころ多過ぎて何も言えない

994 :Name_Not_Found:2017/01/24(火) 11:05:38.31 ID:???
www

千鳥足コード

995 :Name_Not_Found:2017/01/24(火) 12:17:51.61 ID:???
ごめんね、また違ってた
for (var hoge = false, i = 0; i < arr.length; i++) {
条件 && (hoge = true);
}
hoge || test();

996 :Name_Not_Found:2017/01/24(火) 12:25:38.92 ID:???
そんなifを演算子に置き換えただけの糞コード書くヒマがあったら次スレ頼む
さっき試したけど立てられなかった

997 :Name_Not_Found:2017/01/24(火) 12:36:19.60 ID:oqdxsnK0
https://youtu.be/quIHgwuF6r4

998 :Name_Not_Found:2017/01/24(火) 13:17:12.58 ID:67kz55ZG
クソコード書くの禁止!!

999 :Name_Not_Found:2017/01/24(火) 13:41:15.21 ID:???
for (var hoge=false, [...]) 条件 && (hoge=true); hoge || r++;
一行ならスッキリ

1000 :Name_Not_Found:2017/01/24(火) 13:59:53.84 ID:???
糞コードは他のコードの良さに改めて気づくいいきっかけになる
だから糞コードもどんどん書いていいよ

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 83日 2時間 33分 14秒

1002 :1002:Over 1000 Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/

▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php

311 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)