X



+ JavaScript の質問用スレッド vol.135 +

■ このスレッドは過去ログ倉庫に格納されています
2018/07/31(火) 12:30:52.90ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください

■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」だけでなく「意見」を出しても良い。

■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)

■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/

■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです
2018/11/02(金) 11:56:52.88ID:???
>>700
難しいかどうかはその人のスキルによるとしか。。。
2018/11/02(金) 13:12:13.08ID:???
困難かという意味ではそうでもないかも
parentNodeのChildNodesを、その要素以降順に見ていくだけだから
ていうか、jQueryだってJSで書かれているわけだしね
2018/11/02(金) 14:27:31.10ID:???
nextSibling
2018/11/02(金) 14:57:52.92ID:???
質問を変えて、jQueryの.nextUntil()をDOM API以外のライブラリを使わずに
10行以内(セミコロン不使用、横80文字まで、普段やらない書き方を使うのなし)で
作れるでしょうか?だったらどう?
2018/11/02(金) 15:08:06.56ID:???
まず親要素のquerySelectorAllで
セレクタにマッチする小要素を全部取り出しておく

目的の要素のnextSiblingが、上のマッチした要素群に含まれれば当たり
なければ次のnextSiblingを見る

なんとか80字でいけるか?
2018/11/02(金) 15:22:12.61ID:???
全部取り出しておいてfilterしてもいいし、
ただ単に次の要素を見ていくだけのイテレータでもいい
5行くらいの関数で書けるんじゃない?
2018/11/02(金) 16:49:57.19ID:???
function nextUntil(el, selector){
const result = [];
while(el = el.nextElementSibling){
if(selector && el.matches(selector)){
break;
}
result.push(el);
}
return result;
}

こんな感じか。matchesはIEで動かんからポリフィルを追加して
https://developer.mozilla.org/ja/docs/Web/API/Element/matches
2018/11/02(金) 18:30:13.65ID:???
はー
matchesなんてあったんだな
勉強になる
2018/11/02(金) 20:12:43.52ID:???
及川光秀
2018/11/03(土) 07:10:10.07ID:???
function * nextUntil ( el, sel ) {
while ( el = el.nextElementSibling && ! el.matches( sel) )yield el
}
711Name_Not_Found
垢版 |
2018/11/03(土) 22:22:33.52ID:6Ec8PRLb
>>707
上手く行きました。
凄いですね、こんなのを書けるなんて。
>>710
私にはレベルが高すぎて付いて行けません。
結果の取り出し方を教えて下さい。
2018/11/03(土) 22:44:24.52ID:???
>>710は単なる技術マウントだから無視してよい。
713Name_Not_Found
垢版 |
2018/11/04(日) 02:57:07.43ID:B7aXq2Tw
沖侑果 CMに抜擢!

萩原工業CM (ハミダセ、アミダセ篇 )
http://www.youtube.com/watch?v=LDSJwe6i1kU

萩原工業CM (グローバル・ハミダセ篇)
http://www.youtube.com/watch?v=RiJhTSMp_MI

萩原工業CM (開発・アミダセ篇)
http://www.youtube.com/watch?v=1xxgGGPQmQk

萩原工業CMメイキング映像 (萩原工業×STU48)
http://www.youtube.com/watch?v=EG591Nw3ErA
2018/11/04(日) 03:23:50.49ID:???
技術マウントだからと言って無視するか、
技術を勉強するか

どちらを取るかね?
2018/11/04(日) 04:32:09.76ID:???
>>711
>>710は代入演算子と論理積演算子の優先順位を間違えているから結果がバグっている。
修正してオプションのfilter足してjqueryのnextUntilの
http://js.studio-kingdom.com/jquery/traversing/next_until
のデモと同じことする使い方を
https://codepen.io/anon/pen/VVwdQB
に上げた。
しかし結果を配列でまとめて取り出す使い方しかしないなら
https://codepen.io/anon/pen/YRzvWa
みたいになりわざわざジェネレータ使う意味ないしこんなことするなら>>707のほうがいいな。
2018/11/04(日) 06:28:04.76ID:???
一番いいのはjQueryを使うこと
717Name_Not_Found
垢版 |
2018/11/04(日) 10:01:07.40ID:plxWY2l1
>>715

=>
...
yield
など知らない文法ですが、テストしたら動きました。
大変参考になりました。このコードが理解出来るように勉強します。

ところで707 nextUntilを応用してnextAllを作ってみたのですが、これで良いでしょうか?

function nextAll(el, selector) {
const result = [];
while (el = el.nextElementSibling) {
result.push(el);
}
return result;
}

一つ質問ですが、const指定しているresult変数に値を代入しても良いのですか?
定数なら変更してはいけないような印象を受けるのですが。
2018/11/04(日) 10:14:41.54ID:???
いいよ
2018/11/04(日) 10:52:13.08ID:???
>>717
再代入はされてない
720Name_Not_Found
垢版 |
2018/11/04(日) 11:18:37.07ID:plxWY2l1
>>719
良く分からないのですが、
C言語などならconst指定があると値を代入出来ませんよね。
JavaScriptのconstはそうでは無いのですか?
2018/11/04(日) 11:20:32.34ID:???
>>720
result = 1;
で正しくエラーになる
722Name_Not_Found
垢版 |
2018/11/04(日) 12:15:16.17ID:plxWY2l1
>>721
ではJavaScriptにはCやC++のconstに相当するものはありますか?
つまり一切変更出来ない定数。
2018/11/04(日) 13:15:33.79ID:???
CやC+に一切変更ができないconstなんかありません
2018/11/04(日) 13:18:38.69ID:???
chromeだけど、dataスキームで新しいタグ開いてhtmlを表示させたいんだけど
data:text/html;云々をwindow.openするとabout:blankになってしまうたすけて
(data:text/html;云々を直接urlボックスにいれて移動、は表示される)
2018/11/04(日) 14:00:44.03ID:???
>>724
再現コードをjsfiddleへUP
2018/11/04(日) 14:11:19.81ID:???
>>722
一切変更出来ないとは?
変更不可対象を明確にしろ
2018/11/04(日) 14:36:36.33ID:???
constは名前に対して働くもので値に対して働くものではない
2018/11/04(日) 15:24:02.74ID:???
>>722
そもそもがcのconst勘違いしてないか。
プリミディブ値ならjsのconstでも同じように使えるし、
cではjsのconst OBJ = {a: 1, b: {c: 2}};みたいにオブジェクト直接入れるみたいなことはそもそも出来ない。
ポインタ使うにしたってOBJ.aやOBJ.b.cなどメンバーを書き換えられてしまうことは同じ。

まあやりたいことは分かる…気がする…
以下にdeepFreezeの実装例出てるから参考にしてみたら?
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze

こういうことでしょ?違う?
https://codepen.io/anon/pen/EQxJKB
2018/11/04(日) 15:24:32.56ID:???
>>725
いろんなサイトでconsole開いて実行したので、jsfiddleのコードに書いて実行してしまうと若干挙動が違う気がするので
具体的には
window.open('data:text/html;charset=utf-8,'+encodeURIComponent('<!DOCTYPE html><html lang="en"><body>hoge</body></html>'));
を適当なサイトでコンソール開いて実行
一応jsfiddleでもやってみたけどポップアップ禁止みたいなのが出てきた
https://jsfiddle.net/pLdojb9w/
ポップアップ許可するとabout:blank
2018/11/04(日) 15:29:06.49ID:???
>>728
× https://codepen.io/anon/pen/EQxJKB
https://codepen.io/anon/pen/EOxJKB
731729
垢版 |
2018/11/04(日) 15:31:07.23ID:???
ちなみに用途としては
とあるサイトの画像urlだけをスクレイピングして
htmlで新しいタブに<img src=>みたいに単純表示したいだけ
今までconsoleで<img src="">を出力してコピペ→テキストエディタでhtmlで新規保存
ブラウザで開いてウェブ丸ごと保存ってやってたのでめんどくさくなった
(別のスクリプトやアプリで画像urlだけ抽出してダウンロードしたらいいのではと思うし
都合が良いところはそれでやってるけど)
732729
垢版 |
2018/11/04(日) 15:39:44.04ID:???
あと、document.writeで上書き版もしたけど
ajaxでページロードしてる感じのとこだと続きの画像表示したいときに不便だった
2018/11/04(日) 17:21:46.38ID:???
dataURI直で新規タブ開いて中身反映されないのはセキュリティ理由によるもの
blob→objectURL化が必要
const blob = new Blob([ '<!DOCTYPE html><html lang="en"><body>hoge</body></html>' ], { type: 'text/html' });
const url = URL.createObjectURL(blob);
window.open(url);
734729
垢版 |
2018/11/04(日) 17:45:38.91ID:???
>>733
で、できたー!
画像も問題なく表示され
ありがとうございました
735Name_Not_Found
垢版 |
2018/11/04(日) 18:43:51.03ID:plxWY2l1
>>728
解説ありがとうございました。
JSのオブジェクトの挙動が理解出来ました。
値は変更出来ないけれど、メンバを変更する事は
出来るんですね。
2018/11/04(日) 19:09:43.38ID:???
>>733
勉強になった
2018/11/04(日) 21:50:56.98ID:???
漏れは、Ruby で、selenium webdriver, Nokogiri を使って、
5ch の書き込み内から、画像リンクだけを取り出して、
Nokogiri で、img タグを構築して、そのsrc 属性に設定して表示している

ブラウザに、5ch のスレを表示して、結果はそれとは異なる、新しいタブに表示している

driver.execute_script "window.open()" # 新しいタブを開く
driver.switch_to.window ( driver.window_handles.last ) # 新しいタブへ移動する

ERB みたいな、HTML 内にRuby プログラムを書ける、
埋め込みテンプレートを使えば、もっと簡単にできるのだろうけど
2018/11/04(日) 21:56:18.15ID:???
jsならコンソールやブックマークレットでできることをそんな大がかりにしてバカみたい。
で、何をやってるかと思えばjs呼び出してるだけwww
そりゃそうだよなruうんこbyなんてブラウザで動かないもんなwwwww
2018/11/04(日) 22:02:25.28ID:???
>>738
> そりゃそうだよなruうんこbyなんてブラウザで動かないもんなwwwww

いつの時代の話してるんだよwww

Ruby2.0はChromeブラウザでネイティブに動くようになりそう
http://hoshi.air-nifty.com/diary/2012/05/ruby20chrome-d6.html
2018/11/04(日) 22:06:31.07ID:???
>>739
皮肉キツいぜwwwww
2018/11/05(月) 03:11:29.05ID:???
echo.jsより容量小さい画像遅延読み込みのスクリプトってあんの?
2018/11/05(月) 06:26:31.41ID:???
>>735
変数名と紐付いている値を更新することはできないというだけ
その値自体にはなんの制約もない
2018/11/05(月) 06:57:00.55ID:???
RubyみたいなポンコツエンジンをNative Clientで走らせるとか愚の骨頂の考えだった
WasmにコンパイルしてJSエンジン上で走らせる方がよっぽどパフォーマンス出る可能性がある
744Name_Not_Found
垢版 |
2018/11/06(火) 22:07:50.79ID:G7U6fKUW
jQueryだと
$(window).on('resize', data, func);
のようにdataを与える事が出来ますよね。
それを
window.addEventListener('resize', data, func);
とは出来ませんが、どうやれば同じようにdataをfuncにパス出来ますか?
2018/11/06(火) 22:26:04.96ID:???
クロージャで
746Name_Not_Found
垢版 |
2018/11/06(火) 22:36:13.12ID:G7U6fKUW
>>745
レスありがとうございました。
>クロージャで
なるほど。
では、jQueryの場合、スコープが異なるfuncになぜデータを渡せるんですか?
2018/11/06(火) 22:54:14.02ID:???
>>746
内部的にクロージャーを使っているから
2018/11/06(火) 22:56:17.72ID:???
えっ、なにが疑問なのかよく分かんない…

function chinko(data) {
return 'I love ' + data;
}

function manko(func, data) {
if (!data) data = func.name;
console.log(func(data));
}

let data = 'unko';
manko(chinko); //=> "I love chinko"
manko(chinko, data); //=> "I love unko"
2018/11/06(火) 23:02:33.42ID:???
>>748
> えっ、なにが疑問なのかよく分かんない…

なんでクロージャーがでてきたのか考えてみたら?
回答する側がアホの事例
2018/11/06(火) 23:30:28.38ID:???
>>744みたいな疑問が浮かぶ人はjQueryのソースを読んでみるべきだと思う
勉強になるぞ
2018/11/06(火) 23:35:27.27ID:???
>>749
教えてよ。答えらんないの?
2018/11/07(水) 00:44:22.26ID:???
>>751
お前が、>>748のコードにクロージャーを取り入れて
書き直したら教えげあげようw
2018/11/07(水) 00:56:05.92ID:???
こう?

function chinko(data) {
return function() {
return 'I love ' + data;
}
}

function manko(func) {
console.log(func());
}

let data = 'unko';
manko(chinko(data)); //=> "I love unko"
2018/11/07(水) 01:23:52.55ID:???
違う。クロージャーはmankoの引数にしろ
2018/11/07(水) 01:24:57.72ID:???
そしてdataはクロージャーの引数にしろ
2018/11/07(水) 02:00:00.12ID:???
もういいから教えてよ。
コードで示してくれりゃ分かるのにめんどくさい。
質問に回答するより煙に巻いて指示するのが好きなの?
2018/11/07(水) 02:09:53.52ID:???
はい。大好きです(笑)
2018/11/07(水) 02:21:09.20ID:???
質問スレに何しに来てんだよ……
こう?

function chinko(data) {
return function() {
return 'I love ' + data;
}
}

function manko(func, data) {
if (!data) data = func.name;
console.log(func(data)());
}

let data = 'unko';
manko(chinko); //=> "I love chinko"
manko(chinko, data); //=> "I love unko"
2018/11/07(水) 02:31:49.49ID:???
var clos = function closure( data ) {
return function( ) {
return 'I love ' + data;
}
}

function caller( func ) {
console.log( func() );
}

var data = 'cat';
caller( clos( data ) ); //=> "I love cat"
2018/11/07(水) 02:55:16.89ID:???
>>759
>>753となにが違うの?「違う」って言われたんだけど>>754>>755
2018/11/07(水) 03:21:23.96ID:???
>>744より

> では、jQueryの場合、スコープが異なるfuncになぜデータを渡せるんですか?
>
> jQueryだと
> $(window).on('resize', data, func);
> のようにdataを与える事が出来ますよね。

↑ この場合、jQueryのfuncは以下のように定義しますよね?

function func(event, data) {
  console.log('I love' + data);
}


でも、>>758を見ると、以下のような書き方でjQueryの場合と全然違います。
何故でしょうか?jQueryはどんなマジックを使っているのでしょうか?疑問です。
function chinko(data) {
  return function() {
    console.log('I love ' + data);
  }
}

--------------------------

>>748
わかったか? お前は何が疑問なのかよくわからないって言ったが、
これが疑問なんだよ。
2018/11/07(水) 06:30:36.29ID:???
>>756
ここは自ら学ぶスレだから
モロ回答はしない
そういうのは知恵袋なり他にたくさんある
ここは2chだからな
2018/11/07(水) 08:05:06.49ID:???
>>744
.on() が内部でコールバック関数を渡す前にクロージャでラップしてるから
ちなみに、>>761はjQueryの動きになってない上、コールバック関数を渡す実装もしていない無視して良い
http://api.jquery.com/on/

最も、addEventListenerなら、handleEvent付きのオブジェクトを指定する方がスマートだと思うが
2018/11/07(水) 08:52:20.84ID:???
いいオチがつきましたね
2018/11/07(水) 11:44:49.22ID:???
function hoge(){ /*この中に重複作業をまとめたいときがある*/ }
例えば
function hoge(x,y){
function sum10(x) { return x+10; }
return [sum10(x),sum10(y)];
}

このsum10は汎用なのでhogeの外にsum10を書いても良いような気がしますが
仮に、hogeだけでしか使わないような関数でも
外に出しておいた方が良いのでしょうか?
今まで、単に見た目の問題なのかな?と思い、適当にやっていたのですが
2018/11/07(水) 11:45:31.97ID:???
訂正
>hogeだけでしか
>hogeの中だけでしか
2018/11/07(水) 12:03:24.66ID:???
>>765
一回しか使うかどうかで、関数にするかどうかを決めるんじゃない。
また同じ処理だからって言うだけで、関数にするのでもない

長いコードがあったとき、読むのが大変になるから、
その中の一部に適切な名前をつけて関数にすることで、名前だけから
やってることがわかるから中を読まなくていい。
読まなくていいから長いコードを読むのが楽になった!
という目的のために、関数にするんだよ

1回しか使わなくても、長いコードを読むのが楽になるなら
関数にするべきだし、関数にしたからと言って、長いコードを読む時に
関数の中まで見ないとやってることがわからないなら、
それは関数にするやり方間違ってる

読むべきコードを減らすのが関数にする目的

だから独自で作るよりも既存のライブラリを使ったほうが良いという話にもつながる
独自で作ると少なくとも一回は中を読まないといけない。
既存のライブラリは、たいてい中を読まないで使ってるだろう?
2018/11/07(水) 12:19:30.73ID:???
関数ってよりサブルーチンとかプロシージャっぽい説明だね。
2018/11/07(水) 12:25:56.81ID:???
>>768
関数とサブルーチン・プロシージャーの違いは?

どこが後者の話になってるのか?
2018/11/07(水) 12:44:11.43ID:???
何か引数を受けて、何かしらの処理をし、何かを返すのがfunction(関数)

プログラムの中で一定の処理をひとまとまりにしてモジュール化したものを
メイン処理と対比して呼ぶのがsub routine(サブルーチン)

プログラムの中で、サブルーチンを作るために作られた
何も返さない関数がprocedure(プロシージャ)


であってるかな
横からですが
2018/11/07(水) 12:56:11.97ID:???
んにゃ、合ってない
それらの用語は各言語仕様やコミュニティ毎に定義されている
2018/11/07(水) 13:23:52.42ID:???
本質的にはあってんじゃない?
いろんな方言的解釈があるのはその通りだが
2018/11/07(水) 14:00:38.33ID:???
で、どこが後者の話になってるの?
2018/11/07(水) 14:30:07.56ID:???
> 読むべきコードを減らすのが関数にする目的

???

['80', '9', '700', 40, 1, 5, 200]
.sort((a, b) => a - b);
2018/11/07(水) 14:33:41.17ID:???
>>774
それもsortの処理を読まなくてすんでますね。

例え1回しか使わなくても、そうすべきなんですよ
2018/11/07(水) 14:47:22.52ID:???
>>775
そうすべき?
じゃあそうではない、減らす前の関数を使ってないダメなコードとやらを見せてください。
2018/11/07(水) 14:52:27.59ID:???
>>776
じゃあsort関数の中身をここにコピペして
2018/11/07(水) 15:04:11.21ID:???
sort関数ではなくsort関数の引数に渡す関数の話をしています。
>>770によると、
> 読むべきコードを減らすのが関数にする目的
なのでしたね。
どういうことか説明してください。
2018/11/07(水) 15:13:40.55ID:???
>>778
sort関数に渡す引数?
(a, b) => a - b のこと?

なにを突っかかってきてるのか知らんが、
const byAsc = (a, b) => a - b;
const byDesc = (a, b) => b - a;
みたいなの並び替えアルゴリズムとして関数化しておけば、
aからbを引いて・・・ってどういうこと?って
もう読まなくてすみますね。


['80', '9', '700', 40, 1, 5, 200].sort(byAsc);
計算部分を読まなくてすむから楽になった!
2018/11/07(水) 15:28:58.55ID:???
(a, b) => a - bは既に関数。それは関数に名前をつけているだけ。
関数化www
2018/11/07(水) 15:30:23.11ID:???
だから関数に名前つけるって言ってるじゃん
バカなのかな?
2018/11/07(水) 15:30:52.82ID:???
> その中の一部に適切な名前をつけて関数にすることで、名前だけから
2018/11/07(水) 15:36:40.08ID:???
訳:「読むべきコードを減らすのが関数にする目的」というのは嘘でしたすみません!「読むべきコードを減らすのが関数に名前をつける目的」でした!あと関数化とかいうオレオレ用語で混乱させてしまってすみません!

こうかな
2018/11/07(水) 15:37:20.51ID:???
いや違うな。名前をつけて関数化したんだから
読むべきコードが減ってる。

重要なのは読むべきコードを減らすこと。
2018/11/07(水) 15:37:50.18ID:???
いやはや、また>>783はいつものキチガイなんだろうねw
2018/11/07(水) 15:42:58.80ID:???
>>774から>>779にするのがとこが「名前をつけて関数化」なの?
元々関数。名前をつけているだけ。
2018/11/07(水) 15:45:40.86ID:???
それは関数じゃなくてアロー関数
重要なのは読まなくて良いコードを増やすことなんだが、
そっちへのレスがないってことは、逃げてんだね
2018/11/07(水) 15:46:35.31ID:???
>>786
お前は他人に謝らせてSNSにアップして炎上する
コンビニ客のマネはやめたほうが良いよw
恥ずかしい
2018/11/07(水) 15:51:56.72ID:???
>>787
>>774の通り元々
> 読むべきコードを減らすのが関数にする目的
についての話。
これについては降参逃亡ということですねw

> それは関数じゃなくてアロー関数

関係ありませんwww
['80', '9', '700', 40, 1, 5, 200]
.sort(function (a, b) {return a - b;});

話はぐらかそうとしてドツボwwww
790Name_Not_Found
垢版 |
2018/11/07(水) 17:14:19.84ID:D6OVyDfn
>>787
なんで?読めばいいじゃん
2018/11/07(水) 17:53:16.41ID:???
>>779
byAscよりもアロー関数ベタ書きのほうが分かりやすい人多いと思うよ
もし.sort(降順)とかにすればわかりやすいけど、それでも降順関数の中身確認したくなると思うけどな
2018/11/07(水) 17:53:56.85ID:???
.replace().replace().replace()....replace地獄になります
クールな書き方をおしえてください
2018/11/07(水) 17:56:48.24ID:???
単なる数値ではないソートの場合に名前がめっちゃ長くなりそう
794Name_Not_Found
垢版 |
2018/11/07(水) 18:04:42.39ID:D6OVyDfn
>>792
第二引数を関数にして中でゴニョゴニョするとか
2018/11/07(水) 18:35:54.90ID:???
>>792
[
  ['私', '拙者'],
  ['シッコ', 'ウンコ'],
  ['マンコ', 'チンコ'],
  ['好き', '嫌い'],
].reduce((acc, [oldWord, newWord]) => acc.replace(oldWord, newWord), '私は、シッコとマンコが好きです。');
//=> "拙者は、ウンコとチンコが嫌いです。"
2018/11/07(水) 18:57:11.04ID:???
それでもいいけどreplacer関数作って渡す方が筋がいいかもな。
2018/11/07(水) 19:27:20.73ID:???
>>791
まあ、そこは本質的なところではないんでどうでもいいんだわw
バカに付き合ってあげただけ

重要なのは、読むべきコードを減らすのが関数にする目的
だ〜れも、なんでもかんでも関数にしろとか言ってない

関数にする基準の話をしてるところに
重箱おじさんが連れたので、つついてあげただけw
2018/11/07(水) 19:31:48.74ID:???
バカ「バカに付き合ってあげただけ」
重箱つつかれたのはお前ww
2018/11/07(水) 19:33:30.33ID:???
読むコード減らすべきおじさん「読むコード減らす」

まで読んだ
2018/11/07(水) 19:37:20.82ID:???
面白いように反応してくれるなw

で、いちばん重要な「読まなくて良いコードを増やすこと」には
ほら、反論できないでしょ?w

そういうとこやで
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況