JS で関数を別の関数のパラメータとして渡す概要

黄舟
リリース: 2017-03-01 15:11:03
オリジナル
1125 人が閲覧しました

今日、要素のイベントを登録するときに、addEventListenerを使用して問題が発生したことがあります。それを要約する必要があると感じました。これは、パラメータとしてのJS関数によって引き起こされる問題です。まず次のコードを見てください。次のコードに何か問題があると思いますか? id3に対応する要素をクリックした後にid3をポップアップさせることは可能でしょうか?

例 1

var obj3=document.getElementById('id3');
obj3.addEventListener('click',curClick('id1'),true);
function curClick(id){
		alert(id);
}
ログイン後にコピー

答えは「いいえ」です。ページが読み込まれるときにこのコード行は id3 をポップアップするため、期待する効果は得られません。 id3 に対応する要素をクリックしても、ページ上で何も起こりません。

そこで、次の 2 つの状況にコードを変更しました:

例 2

var obj3=document.getElementById('id3');
	obj3.addEventListener('click',function(e){curClick('id3');stopPropagation(e)},true);

	function curClick(id){
		alert(id);
	}
ログイン後にコピー

例 3

var obj1=document.getElementById('id1'); 
obj1.addEventListener('click',curClick1,true);
function curClick1(){
  alert('okey');
}
ログイン後にコピー


今回は正常に実行されるのはなぜでしょうか。

JSの世界ではcurClick('id3')はパラメータとして渡すのではなく直接curClick('id3')を呼び出すため、パラメータとして渡したい場合は渡す必要がありません。パラメータを渡す必要がある場合は、関数名を直接渡すだけです

方法 1: 匿名関数の助けを借りて、渡される関数を匿名関数に入れて、匿名関数を使用します。例 2

例: function(){myfunction(val1,val2,...);} をパラメータとして渡します。

その2: 渡す必要がある関数を書き換えます

function curClick1(val){
<span style="white-space:pre">	</span>return function(){
		alert(val);
	};
}
ログイン後にコピー

上記は、JS で関数を別の関数のパラメーターとして渡す方法の概要です。さらに関連する内容については、PHP 中国語 Web サイト ( www.php.cn)!

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート