「xml」はどこに定義されていますか?他の暗黙的なパラメータのリストはどこにありますか?
非常に機能定義に記載されています。私はのような関数を定義する場合:
function greet(name , greeting){
console.log('hi ' + name);
console.log(greeting);
}
name
とgreeting
VARSは単に関数定義の括弧内で定義されています。あなただけの、その関数の通過リテラルまたは変数を呼び出すことができます。
greeting('peter' , 'have a nice day');
//or:
var name = 'Francisco';
var greeting = 'qué pasa hombre';
greet(name , greeting);
2番目の例では、name
とgreeting
VARSはまさに内部関数のパラメータのように呼ばれるように起こります。これはまあまあです。
var theAame = 'Francisco';
var theGreeting = 'qué pasa hombre';
greet(theName , theGreeting);
正確に同じように動作します。また、javaScriptでは、関数に実際に定義されているパラメータより多くのパラメータを関数に渡し、argumentsキーワードまたはES6 spread syntaxでアクセスすることができます。
これはjavaScriptのパンとバターで、引数とパラメータがjavaScriptでどのように機能するかについての検索が役に立ちます。しかし、あなたの2番目の質問はもっと難しいです。また、この種のコードについて尋ねている
:
$("body").click(function (event) {
// Do body action
var target = $(event.target);
if (target.is($("#myDiv"))) {
// Do div action
}
});
これは似ているだけでなく、より複雑です。ここでは、$("body").click()
はパラメータをとる関数です。このパラメータは別の関数であることがあります。これは一部の言語ではサポートされていない機能ですが、javascriptではかなり簡単です。
function reactToClick (event) {
// Do body action
var target = $(event.target);
if (target.is($("#myDiv"))) {
// Do div action
}
}
$("body").click(reactToClick);
しかし、そのevent
パラメータとそのreactToClick
関数を呼び出している人:あなたはまた、そのコードをこのように書いているだろうか?まあ、この場合、ブラウザはそうです。
ブラウザには、関数のコールバックでイベントのようなクリックに登録するためのAPIがいくつかあります。$.click()
は、そのメカニズムの構文上のヘルパーに過ぎません。最終的に機能を呼び出すブラウザーなので、内部を完全に理解することは難しく、私はしないでください。
しかし、あなたがあなた自身の非ブラウザ-APIに依存JavaScriptのコールバックを呼び出すコード、および設定パラメータと関数呼び出しを設定することができますが、同じように動作します。この例では
function theCallback(name , options){
console.log('Im a callback function fired by someCallbackRegister whenever its fire methods is called');
console.log('my callbackRegister name is: ' + name);
console.log('and the options provided in this call are: ' + options);
}
function someCallbackRegister(callback , registerName){
return {
fire : function(options){
callback(registerName , options);
}
}
}
var listener = someCallbackRegister(theCallback , 'Johhny');
listener.fire({ foo : 'bar'});
を、ありますメソッドコールの後にを呼び出していて、theCallback
のすべてのパラメータを正しく設定すると、event
オブジェクトを$.click()
に渡すようにブラウザが正常に機能するようになります。
ホープこれは
PS :-)に役立ちます:JavaScriptのイベントループについてThis video私にどのようにブラウザのAPIの仕事を理解するために多くのことを助けました。
[Javascriptのコールバックパラメータについて理解する](http://stackoverflow.com/questions/31769110/understanding-javascript-callback-parameters) – 4castle
関数をパラメータとして渡すことができます。 'xml'はあなたの関数を呼び出すコードのパラメータとして渡されます。 – 4castle