자체 실행 함수에 전달 된 인수를 수정할 수 있어야합니다.자체 실행 함수의 인수 수정
var test = 'start';
(function (t) {t = 'end'})(test);
alert(test) //alerts 'test'
그리고 here is a fiddle 다음은
은 몇 가지 예제 코드입니다. 변수test
은 변경되지 않았습니다. 참조로 전달할 때와 같이 어떻게 변경할 수 있습니까?
object
에
자체 실행 함수에 전달 된 인수를 수정할 수 있어야합니다.자체 실행 함수의 인수 수정
var test = 'start';
(function (t) {t = 'end'})(test);
alert(test) //alerts 'test'
그리고 here is a fiddle 다음은
은 몇 가지 예제 코드입니다. 변수test
은 변경되지 않았습니다. 참조로 전달할 때와 같이 어떻게 변경할 수 있습니까?
object
에
패스가 그 것이다 패스 별 참조 :
var test = {
message: 'start'
};
(function (t) {t.message = 'end'})(test);
alert(test.message)
FYI, Array
이기도 패스 별 참조.
JavaScript에서는 (정확히 )을 사용할 수 없습니다. 그러나 다음과 같이 할 수 있습니다.
var testBox = { test: "hello" };
(function(tb) { tb.test = "goodbye"; })(testBox);
alert(testBox.test); // "goodbye"
JavaScript는 함수 호출시 값만 전달할 수 있습니다. 변수 (예 : arguments
개체 및 매개 변수)에 별칭을 지정하는 경우가 하나뿐이기 때문에 충분히 흥미롭지 않습니다.
즉, 개체 속성은 (일반적으로) 변경 가능하므로 값을 수정하는 함수가 필요한 경우 개체 참조를 전달할 수 있습니다.
수행 할 수 없습니다.
최선의 방법은 개체를 전달한 다음 해당 개체를 업데이트하는 것입니다.
var test = { state: 'start' };
(function (t) {t.state = 'end'})(test);
alert(test.state); // 'end'
테스트 변수의 값을 함수의 인수로 전달하는 것입니다. 인수의 값을 변경 한 후에는 테스트 변수에 다시 지정해야합니다.
var test = 'start';
(function (t){t = 'end'; test = t;})(test);
alert(test) //alerts 'test'
또는
var myObject = {test: "start"};
var myFunc = function (theObject){
theObject.test = 'end';
}(myObject);
alert(myObject.test);
그것은 분할 머리카락을하지만 객체와 배열이 패스에 의해 참조되지 않습니다 객체에 대한 참조는 값에 의해 전달됩니다. 그것은 의미없는 구별처럼 보입니다. 실용적인면에서는 그렇지만 "참조로 전달"은 프로그래밍 언어 디자인에서 아주 특정한 것을 의미합니다. – Pointy
고마워,이게 내가 필요한거야! (11 분 안에 수락 가능) – Doorknob
@ Pointy 동의. – sweetamylase