jsリレーパラメータ
8437 ワード
jsは値によって伝達されます.
jsのすべての関数のパラメータは値によって伝達されます.関数の外部の値を関数内部のパラメータにコピーすると、値を一つの変数から別の変数にコピーするのと同じです.
アクセス変数:値でアクセスして参照してください.パラメータは値でしか渡さない!!!
基本データタイプ
パラメータに参照タイプの値を渡すと、この値はメモリ内のアドレスをローカル変数にコピーしますので、このローカル変数の変化は関数の外部に反映されます.
ポイントは、引用タイプのアドレスとアドレスの指針を明確にする必要があります!!!
From red book,hhhha
jsのすべての関数のパラメータは値によって伝達されます.関数の外部の値を関数内部のパラメータにコピーすると、値を一つの変数から別の変数にコピーするのと同じです.
アクセス変数:値でアクセスして参照してください.パラメータは値でしか渡さない!!!
基本データタイプ
function addNum(num) {
num = num + 10;
return num;
}
var count = 20;
var result = addNum(count);
console.log(count + '|' + result); //20|30
参照データの種類function setName(obj) {
obj.name = 'Tina';
return obj;
}
var lastObj = new Object();
lastObj.name = 'Lucy';
var newObj = setName(lastObj);
console.log(lastObj.name + '|' + newObj.name); //Tina|Tina //
最後の例では、なぜ伝値なのかが分かります.//
function setArray(arr) {
arr[0] = 1;
var arr = new Array(); //
arr[0] = 6;
return arr;
}
var lastArr = new Array();
lastArr[0] = 0;
var newArr = setArray(lastArr);
console.log(lastArr[0] + '|' + newArr[0]); // 1|6
//
function setNameAgain(obj) {
obj.name = 'aaa';
var obj = new Object(); // , obj
obj.name = 'ccc';
return obj;
}
var person = new Object();
person.name = 'bbb';
var newPerson = setNameAgain(person);
console.log(person.name + ' | ' + newPerson.name); //aaa | ccc
基本タイプをパラメータに渡すと、伝達された値は局所変数(argmentsオブジェクトの1つの要素)にコピーされます.パラメータに参照タイプの値を渡すと、この値はメモリ内のアドレスをローカル変数にコピーしますので、このローカル変数の変化は関数の外部に反映されます.
ポイントは、引用タイプのアドレスとアドレスの指針を明確にする必要があります!!!
From red book,hhhha