私は、この「引数の受け渡し」という考えに頭を悩ませようとしています。私が読んでいる本では、引数は参照ではなく値によってのみ渡されると述べています。
function addTen(num) {
num + = 10;
return num;
}
var count = 20;
var result = addTen(count);
alert(count); // 20 - no change
alert(result); // 30
上記の例は非常に明確ですが、以下の例では非常に混乱します。
person を setName 関数に渡すと、ローカル変数 'obj' をミラーリングして関数内のステートメントを流していませんか? つまり、人は最初にプロパティ名に設定され、次に新しいオブジェクトに割り当てられ、最後にこの新しく作成された人オブジェクトにプロパティ「グレッグ」が割り当てられます????
なぜ「ニコラス」を手に入れるのですか!!!!
function setName(obj) {
obj.name = "Nicholas";
obj = new Object();
obj.name = "Greg";
}
var person = new Object();
setName(person);
alert(person.name); //" Nicholas"