別のスレッドで、関数が終了した後、関数内からオペランドに加えられた変更はすべて保持されると言われました。私はいつも、渡されたすべての値の一時的なコピーを作成すると思っていました。その後、永続化されたのは、戻り値と、変更された暗黙的により広いスコープの変数だけでした。
私がピークに達したソースコードを持つすべてのjqueryプラグインを振り返ると、それらはすべて構成を使用していると思います。
(function($){
$.fn.foo = function(){ console.log('foo'); };
})(jQuery);
jQuery
これは、内部スコープ識別子によるオブジェクトへの変更が関数の終了後も持続することを意味し$
ます。そうしないと、jQueryプラグインが機能しません。したがって、これは上記のスニペットと同じように機能します。
var x = {n:0};
(function addOneTo(p) {
p.n = p.n + 1;
})(x);
console.log(x);
でも、これ:
var x = 0;
(function addOneTo(p) {
p = p + 1;
})(x);
console.log(x);
x
そうではなく、値を変更せずに残します0
。
誰かが引数の受け渡しがどのように機能するかを説明できますか?私はそれがどのように行われるかを知っていると思いましたが、私は知らないと思います。ありがとう