パラメータパス
通常の値パス
参照渡し
共有パス
通常の値パス
var val = 1
function demo(v) {
v = 2
console.log(v) // 2
}
demo(val)
console.log(val) // 1
値が基本データ型の場合は、関数に直接渡されるコピーです。 val => _val
参照渡し
var obj = {
val: 1
}
function demo(o) {
o.val = 2
}
demo(obj)
console.log(obj.val) // 2
値が複雑なデータ構造である場合、コピーはパフォーマンスの問題を引き起こし、関数内の修正は元の値に影響を与える可能性があります。
ここで質問です。oが参照である場合、o = 1は元の値を変更するのでしょうか? 答えはノーです。
共有パス
しかし、値がコピーされたデータ構造である場合、直接参照で渡されるのではなく、値の参照のコピーが渡されることがわかりました。 o.value = 1の場合は参照値を調べて修正し、o = 1の場合はパラメータを直接修正します。
要約すると
javascriptのパスには、値パスと共有パスの2種類しかありません。引用パスと言われたら、反論してください。