이 글에서는 참고할만한 좋은 JavaScript 함수 매개변수 전달 방법을 주로 소개합니다.
JavaScript는 변수 객체 를 사용하여 변수의 수명을 추적합니다. 기본 유형 값은 변수 객체에 직접 저장되는 반면, 참조 유형 값은 메모리에서 실제 객체의 저장 위치를 가리키는 포인터로 변수 객체에 저장됩니다.
기본 유형 값 전달
기본 유형 값을 매개변수에 전달하면 전달된 값이 지역 변수(예: 명명된 매개변수 또는 인수)에 복사됩니다. 개체의 요소).
function addOne (num) { num++; return num; } var count = 1; var result = addOne(count); console.log(count); //1 console.log(result); //2
위의 예에서는 변수 count의 값이 함수의 num 매개변수에 전달되어 함수에 사용됩니다. 변수 count와 매개변수 num은 동일하지만 두 개의 독립 변수입니다. 함수 내에서 매개변수 num의 값을 변경해도 함수 외부의 변수 count 값에는 영향을 미치지 않습니다.
그래서 JavaScript 함수의 기본 유형 값 매개변수는 값으로 전달됩니다.
참조 유형 값 전송
function setName (obj) { obj.name = 'Nicholas'; } var person = new Object(); setName(person); console.log(person.name); //'Nicholas'
위의 예에서 변수 person의 값은 함수의 매개변수 obj, 즉 매개변수 obj에 전달됩니다. 함수 내부에 이름 속성을 추가하면 함수의 매개변수 obj로 인해 함수 외부의 변수 person도 이름 속성을 얻게 됩니다. 결과를 보면 JavaScript 함수의 참조 유형 값 매개변수가 참조로 전달되는 것으로 보입니다.
단, 그렇지 않습니다. person 변수의 값은 참조형 값이므로 object 변수의 값은 메모리에 있는 실제 객체의 주소(또는 포인터)로 간주될 수 있습니다. 매개변수를 전달한 후 매개변수 obj의 값은 메모리에 있는 개체의 주소이기도 합니다. 따라서 함수에서 매개변수 obj의 값이 참조하는 개체는 운영 변수 person의 값이 참조하는 개체와 동일합니다.
function setName (obj) { obj.name = 'Nicholas'; obj = new Object(); obj.name = 'Greg'; return obj; } var person = new Object(); var result = setName(person); console.log(person.name); //'Nicholas' console.log(result.name); //'Greg'
매개변수가 참조로 전달되는 경우 위 예에서 함수는 매개변수 obj의 값이 참조하는 객체를 변경하고 해당 변수 person의 값이 참조하는 객체도 변경합니다. 함수 작성 방식을 변경하면 매개변수를 값으로 전달하는 방식을 이해하는 데 더 도움이 될 수 있습니다.
function setName () { var obj = arguments[0]; obj.name = 'Nicholas'; obj = new Object(); obj.name = 'Greg'; return obj; }
person 변수와 obj 매개변수의 값은 메모리 내에서 동일한 객체의 주소이지만 두 개의 독립 변수입니다. 함수에서 매개변수 obj의 값을 변경하여 메모리의 다른 객체를 가리키도록 하면 person 변수의 값은 변경되지 않고 여전히 원래 객체를 가리킵니다.
따라서 JavaScript에서 함수의 참조 유형 값 매개변수는 값으로 전달됩니다.
결론
위 내용은 JavaScript 함수 매개변수 전달 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!