2016-04-03 3 views
0

この基本的に私はちょうど下記のこの機能もののつもりだった基本的なJavaScriptの質問です:あなたは、このコードはすでにSOに別のスレッドから取られている見ることができるように関数を置き換えるパラメータを渡すのは誰ですか?

function hexToRgb(hex){ 
    // By Tim Down - http://stackoverflow.com/a/5624139/3493650 
    // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") 
    var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; 
    hex = hex.replace(shorthandRegex, function(m, r, g, b) { 
    return r + r + g + g + b + b; 
    }); 
    var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); 
    return result ? { 
     r: parseInt(result[1], 16), 
     g: parseInt(result[2], 16), 
     b: parseInt(result[3], 16) 
    } : null; 
}; 

は、今、私の質問は、コードのpeiceについて、具体的です:

var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; 
    hex = hex.replace(shorthandRegex, function(m, r, g, b) { 
    return r + r + g + g + b + b; 
    }); 

置換機能IEのパラメータ私は私のdevのツールに見るように、M、R、G、Bは基本的に以下の通りです:

m = "#fff", 
r = f 
g = f 
b = f 

は私のdevのツールでABOEを参照してください、私は渡されていたオプションが#FFFです。

私の質問は誰がそこにパラメータを渡しているのですか?正規表現はパラメータが渡されることと関係がありますか?誰がこれらのパラメータを渡していますか? m、r、g、b?私は正規表現が何をしているかを確認しましたHEREしかし、私はまだこの関数にパラメータを渡しているのか分かりませんか?

+0

'.replace'パラメータを渡している、あなたはそれがここにhttps://developer.mozilla.org/en-を渡す引数を見ることができますUS/docs/Web/JavaScript/Reference/Global_Objects/String/replace – elclanrs

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter –

+1

最初の引数は次のとおりです。マッチ全体後の引数はそれぞれキャプチャグループです。この関数は、_String_ '" $ 1 $ 1 $ 2 $ 2 $ 3 $ 3 "を渡すのと同じです –

答えて

1

これは、無名関数への引数としてパラメータm、r、g、bを渡すreplace関数へのパラメータとして渡される定義された無名関数です。

行:hex.replace(shorthandRegex, function(m, r, g, b) {は、2つのパラメータを渡す16進変数のreplace関数を呼び出しています。最初はshorthandRegexで、2番目は無名関数です。無名関数は、それを呼び出すときにreplace関数からパラメータを取得します。

このパターンの例である:

var func = function(a, b) { 
console.log(a); 
b(1,2,3,4); 
} 

func(1, function(a,b,c,d) { 
console.log(a); 
console.log(b); 
console.log(c); 
console.log(d); 
}); 

この出力すべき1、1、2、3、4コンソール。

これもここで説明されたコールバックパターンとして知られています:http://javascriptissexy.com/understand-javascript-callback-functions-and-use-them/

関連する問題