元スレ+ JavaScript の質問用スレッド vol.135 +
JavaScript覧 / PC版 /みんなの評価 :
751 = :
>>745みたいな疑問が浮かぶ人はjQueryのソースを読んでみるべきだと思う
勉強になるぞ
752 = :
>>750
教えてよ。答えらんないの?
753 = :
>>752
お前が、>>749のコードにクロージャーを取り入れて
書き直したら教えげあげようw
754 = :
こう?
function chinko(data) {
return function() {
return 'I love ' + data;
}
}
function manko(func) {
console.log(func());
}
let data = 'unko';
manko(chinko(data)); //=> "I love unko"
755 = :
違う。クロージャーはmankoの引数にしろ
756 = :
そしてdataはクロージャーの引数にしろ
757 = :
もういいから教えてよ。
コードで示してくれりゃ分かるのにめんどくさい。
質問に回答するより煙に巻いて指示するのが好きなの?
758 = :
はい。大好きです(笑)
759 = :
質問スレに何しに来てんだよ……
こう?
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"
760 = :
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"
761 = :
>>760
>>754となにが違うの?「違う」って言われたんだけど>>755>>756
762 = :
>>745より
> では、jQueryの場合、スコープが異なるfuncになぜデータを渡せるんですか?
>
> jQueryだと
> $(window).on('resize', data, func);
> のようにdataを与える事が出来ますよね。
↑ この場合、jQueryのfuncは以下のように定義しますよね?
function func(event, data) {
console.log('I love' + data);
}
でも、>>759を見ると、以下のような書き方でjQueryの場合と全然違います。
何故でしょうか?jQueryはどんなマジックを使っているのでしょうか?疑問です。
function chinko(data) {
return function() {
console.log('I love ' + data);
}
}
--------------------------
>>749
わかったか? お前は何が疑問なのかよくわからないって言ったが、
これが疑問なんだよ。
763 = :
>>757
ここは自ら学ぶスレだから
モロ回答はしない
そういうのは知恵袋なり他にたくさんある
ここは2chだからな
764 = :
>>745
.on() が内部でコールバック関数を渡す前にクロージャでラップしてるから
ちなみに、>>762はjQueryの動きになってない上、コールバック関数を渡す実装もしていない無視して良い
http://api.jquery.com/on/
最も、addEventListenerなら、handleEvent付きのオブジェクトを指定する方がスマートだと思うが
765 = :
いいオチがつきましたね
766 = :
function hoge(){ /*この中に重複作業をまとめたいときがある*/ }
例えば
function hoge(x,y){
function sum10(x) { return x+10; }
return [sum10(x),sum10(y)];
}
このsum10は汎用なのでhogeの外にsum10を書いても良いような気がしますが
仮に、hogeだけでしか使わないような関数でも
外に出しておいた方が良いのでしょうか?
今まで、単に見た目の問題なのかな?と思い、適当にやっていたのですが
768 = :
>>766
一回しか使うかどうかで、関数にするかどうかを決めるんじゃない。
また同じ処理だからって言うだけで、関数にするのでもない
長いコードがあったとき、読むのが大変になるから、
その中の一部に適切な名前をつけて関数にすることで、名前だけから
やってることがわかるから中を読まなくていい。
読まなくていいから長いコードを読むのが楽になった!
という目的のために、関数にするんだよ
1回しか使わなくても、長いコードを読むのが楽になるなら
関数にするべきだし、関数にしたからと言って、長いコードを読む時に
関数の中まで見ないとやってることがわからないなら、
それは関数にするやり方間違ってる
読むべきコードを減らすのが関数にする目的
だから独自で作るよりも既存のライブラリを使ったほうが良いという話にもつながる
独自で作ると少なくとも一回は中を読まないといけない。
既存のライブラリは、たいてい中を読まないで使ってるだろう?
769 = :
関数ってよりサブルーチンとかプロシージャっぽい説明だね。
770 = :
>>769
関数とサブルーチン・プロシージャーの違いは?
どこが後者の話になってるのか?
771 = :
何か引数を受けて、何かしらの処理をし、何かを返すのがfunction(関数)
プログラムの中で一定の処理をひとまとまりにしてモジュール化したものを
メイン処理と対比して呼ぶのがsub routine(サブルーチン)
プログラムの中で、サブルーチンを作るために作られた
何も返さない関数がprocedure(プロシージャ)
であってるかな
横からですが
772 = :
んにゃ、合ってない
それらの用語は各言語仕様やコミュニティ毎に定義されている
773 = :
本質的にはあってんじゃない?
いろんな方言的解釈があるのはその通りだが
774 = :
で、どこが後者の話になってるの?
775 = :
> 読むべきコードを減らすのが関数にする目的
???
['80', '9', '700', 40, 1, 5, 200]
.sort((a, b) => a - b);
776 = :
>>775
それもsortの処理を読まなくてすんでますね。
例え1回しか使わなくても、そうすべきなんですよ
777 = :
>>776
そうすべき?
じゃあそうではない、減らす前の関数を使ってないダメなコードとやらを見せてください。
778 = :
>>777
じゃあsort関数の中身をここにコピペして
779 = :
sort関数ではなくsort関数の引数に渡す関数の話をしています。
>>771によると、
> 読むべきコードを減らすのが関数にする目的
なのでしたね。
どういうことか説明してください。
780 = :
>>779
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);
計算部分を読まなくてすむから楽になった!
782 = :
だから関数に名前つけるって言ってるじゃん
バカなのかな?
783 = :
> その中の一部に適切な名前をつけて関数にすることで、名前だけから
784 = :
訳:「読むべきコードを減らすのが関数にする目的」というのは嘘でしたすみません!「読むべきコードを減らすのが関数に名前をつける目的」でした!あと関数化とかいうオレオレ用語で混乱させてしまってすみません!
こうかな
785 = :
いや違うな。名前をつけて関数化したんだから
読むべきコードが減ってる。
重要なのは読むべきコードを減らすこと。
786 = :
いやはや、また>>784はいつものキチガイなんだろうねw
787 = :
>>775から>>780にするのがとこが「名前をつけて関数化」なの?
元々関数。名前をつけているだけ。
788 = :
それは関数じゃなくてアロー関数
重要なのは読まなくて良いコードを増やすことなんだが、
そっちへのレスがないってことは、逃げてんだね
789 = :
>>787
お前は他人に謝らせてSNSにアップして炎上する
コンビニ客のマネはやめたほうが良いよw
恥ずかしい
790 = :
>>788
>>775の通り元々
> 読むべきコードを減らすのが関数にする目的
についての話。
これについては降参逃亡ということですねw
> それは関数じゃなくてアロー関数
関係ありませんwww
['80', '9', '700', 40, 1, 5, 200]
.sort(function (a, b) {return a - b;});
話はぐらかそうとしてドツボwwww
791 :
>>788
なんで?読めばいいじゃん
792 = :
>>780
byAscよりもアロー関数ベタ書きのほうが分かりやすい人多いと思うよ
もし.sort(降順)とかにすればわかりやすいけど、それでも降順関数の中身確認したくなると思うけどな
793 = :
.replace().replace().replace()....replace地獄になります
クールな書き方をおしえてください
794 = :
単なる数値ではないソートの場合に名前がめっちゃ長くなりそう
795 = 791 :
>>793
第二引数を関数にして中でゴニョゴニョするとか
797 = :
それでもいいけどreplacer関数作って渡す方が筋がいいかもな。
798 = :
>>792
まあ、そこは本質的なところではないんでどうでもいいんだわw
バカに付き合ってあげただけ
重要なのは、読むべきコードを減らすのが関数にする目的
だ~れも、なんでもかんでも関数にしろとか言ってない
関数にする基準の話をしてるところに
重箱おじさんが連れたので、つついてあげただけw
799 = :
バカ「バカに付き合ってあげただけ」
重箱つつかれたのはお前ww
800 = :
読むコード減らすべきおじさん「読むコード減らす」
まで読んだ
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.130 + (1001) - [97%] - 2017/11/25 20:45
- + JavaScript の質問用スレッド vol.137 + (1003) - [97%] - 2019/3/26 11:46
- + JavaScript の質問用スレッド vol.130 + (974) - [97%] - 2016/10/26 14:18
- + JavaScript の質問用スレッド vol.115 + (1001) - [97%] - 2014/5/29 16:16
- + JavaScript の質問用スレッド vol.131 + (1004) - [97%] - 2018/3/7 13:30
- + JavaScript の質問用スレッド vol.132 + (1001) - [97%] - 2018/4/19 11:00
- + JavaScript の質問用スレッド vol.133 + (1001) - [97%] - 2018/6/8 10:45
- + JavaScript の質問用スレッド vol.131 + (1000) - [97%] - 2017/1/25 8:01
- + JavaScript の質問用スレッド vol.136 + (1001) - [97%] - 2019/1/8 11:30
- + JavaScript の質問用スレッド vol.134 + (1001) - [97%] - 2018/8/3 23:15
- + JavaScript の質問用スレッド vol.138 + (1004) - [97%] - 2019/4/20 23:45
- + JavaScript の質問用スレッド vol.139 + (1001) - [97%] - 2019/5/27 15:15
- + JavaScript の質問用スレッド vol.105 + (1001) - [97%] - 2013/5/20 4:45
- + JavaScript の質問用スレッド vol.125 + (1001) - [97%] - 2015/10/7 17:45
- + JavaScript の質問用スレッド vol.118 + (1002) - [95%] - 2014/8/29 22:30
- + JavaScript の質問用スレッド vol.119 + (1002) - [95%] - 2014/10/3 15:30
- + JavaScript の質問用スレッド vol.117 + (1009) - [95%] - 2014/8/5 3:30
トップメニューへ / →のくす牧場書庫について