함수의 매개변수 타입이 기본형인 경우 원본 데이터에 영향이 없다.
소스
"use strict";
var i = 100; // 글로벌 변수
console.log("i : ", i);
function fn(i) {
// var i 이 생략된 형태로, 함수내에서 선언된 변수 i 이다.
i = i + 100;
console.log("fn i : ", i);
}
// 넘겨준 매개변수가 기본형으로 원본 데이터에 영향이 없다.
fn(i); // 글로벌변수 i
console.log("글로벌 i : ", i);
결과
i : 100
fn i : 200
글로벌 i : 100
매개변수에 객체 타입이 넘어온 경우 원본 데이터에 영향을 끼친다.
소스
"use strict"
var arr = [10, 20, 30];
console.log("arr.length : ", arr.length);
function fn(arr) {
// 넘겨받은 객체(지역변수)에 arr에 대한 push
arr.push(100);
}
// 지역변수를 매개변수로 넘겨줌
fn(arr);
console.log("arr.length : ", arr.length);
결과
arr.length : 3
arr.length : 4
댓글 영역