0

JavaScript에서 함수 매개 변수로 변수 이름을 정의 할 수 있습니까?JavaScript : 함수 매개 변수로 변수 이름을 정의하십시오.

여기는 my jsFiddle입니다. 아래의 예에서, 나는 그것이 makeNull(varName) 통과 할 때 varBnull로 정의 할 싶습니다 :

var varA = undefined; 
if (varA == undefined) { 
    varA = null; 
} 
var varB = undefined; 

makeNull(varB); 

function makeNull(varName) { 
    if (varName == undefined) { 
    varName = null; 
    } 
} 

alert (varA + ' | ' + varB); 

+0

다른 상위 범위에서 바인딩을 변경하여 캡슐화를 중단하려는 것 같습니다. 왜? 해결책이 있더라도 이는 좋은 소프트웨어 관행이 아닙니다. –

+0

프란시스에 동의하지만 객체 나 변수를 수정하는 함수를 만드는 데는 아무런 문제가 없습니다. 당신은 당신이 무엇을 전달하고, 당신이 무엇을 반환하는지에 대해 명시해야합니다. 어쩌면이게 뭔가? http://jsfiddle.net/zVM9M/2/ –

+0

@FrancisAvila jQuery를 통해 여러 확인란의 가치를 얻고 있습니다. checked = 1은 체크되지 않은 것들이'undefined '이지만'null'이어야합니다. 예 : checkbox1 = 1, checkbox2 = 1, checkbox3 = null. –

답변

1

자바 스크립트 "참조에 의한 호출"매개 변수를 제공하지 않습니다. 함수를 호출하면 표현식에 포함 된 변수에 대한 참조가 아닌 인수 표현식의 값을받습니다. 따라서 변수의 바인딩을 수정할 수 없습니다.

이와 같은 작업을 수행하려는 경우 컨테이너 및 라벨을 사용할 수 있습니다.

function makeNull(obj, label) { 
    if (obj[label] === undefined) { 
     obj[label] = null; 
    } 
} 
var varB = { abc: undefined } 
makeNull(varB, 'abc'); 
+0

나는 잠깐 여기 완전히 잃어버린 것 같아. 물론 매개 변수로서의 변수는 변수 이름이 아닌 변수가 같을 때를 전달하는 것입니다. 모든 사람들의 대답은 매우 교육적이었고 정말 고맙습니다. 아마도이 질문을 삭제해야 할 것 같습니다. 아마도 혼란 스럽기 때문일 것입니다. 귀하의 답변 주셔서 감사합니다! –

2

당신은 다음 중 하나가 원하는 함수 매개 변수와 변수를 정의하려는 경우 배열이나 객체를 사용하십시오.

+0

그 점을 설명해 주시겠습니까? –

-1

변수를 (정의되지 않은 것으로 정의 된) 함수에 전달하고 그 값을 설정할 수 있습니다.

http://jsfiddle.net/AwnVN/

+1

정의되지 않은 변수를 함수에 전달할 때 아무 문제가 없습니다. 방어 적으로 코딩하지 않으면 취약한 코드가 손상 될 수 있지만 JavaScript 문제는 ​​아닙니다. 바로 문제입니다. 증명을 위해 Fiddle을 확인하십시오. http://jsfiddle.net/8sUhe/ –

+0

아, 변수를 정의되지 않은 것으로 정의하면 그 차이가 있습니다. 이 경우 JS 오류가 없습니다. 시원한. – Dev

+0

함수에 모든 인수를 전달해야합니다. 당신이하지 않으면 암묵적으로 정의되지 않은 상태로 바뀔 것입니다. 그러나 'undefined'를 명시 적으로 전달하는 데는 아무런 문제가 없습니다. – Zaffy