以下JSコードは奇妙に振る舞う:パラメータが関数の外で値を保持しないのはなぜですか?
var c = 0;
var a = 0;
myTest(8, 5);
function myTest(a,b) {
console.log(a);
a++;
c++;
console.log(a);
return a;
}
console.log(a);
console.log(c);
https://jsfiddle.net/hwns1v4L/
Iの関数のうち「」パラメータ1によって「」インクリメントと第三のコンソール・ログ・リターンを取る場合は「」として1.完全に正常です。しかし、 "a"を(上記のコードのように)myTest関数のパラメータとして保持すると、値は8になり、1から9までインクリメントされ、3番目のコンソールログは0を返します。
この奇妙な動作の説明は何ですか?これが別のスレッドで説明されていればごめんなさい。私はJSが本当に良いGoogleクエリを生成したり、高度な答えを理解するにはあまりにも新しいです。
JavaScriptは、他のほとんどの言語と同様に、値渡しです。この「奇妙な」行動は非常に一般的です。 https://en.m.wikipedia.org/wiki/Evaluation_strategy –