2013-12-14 3 views
1

지금 스크립트를 작성 중이며 함수 내부에서 부울을 부정하려고 할 때 문제가 있습니다. 내 말은 다음과 같습니다.JS에서 Bool 내부 함수를 무효화하는 방법은 무엇입니까?

var test = true; 

function changeThisBoolPlease(asd){ 
    asd=!asd; 
} 

alert(test); 
    changeThisBoolPlease(test); 
alert(test); 

경고가 참이면 true입니다.

아이디어가 있으십니까? JS 참조가 완벽하지 않습니까?

는 편집 :

function przesun(kolor, figury, castlings, x1, y1, x2, y2, strona) { 
    kolor = nowaPozycjaKolor(kolor,x1, y1, x2, y2); 
    figury = nowaPozycjaFigur(figury,x1, y1, x2, y2); 
    strona = !strona; 
} 

이 사실 나는이 값을 반환 할 수 없습니다

좋아, 이것은 단지 내 기능의 일부였다. 어떻게?

+0

'strona'를 반환 하시겠습니까? 그렇다면 그냥 돌려 보내주십시오. 반환을 할당하십시오. – robbmj

+0

내 대답을 참조하십시오, 당신의 질문에 대한 답변을 것입니다 믿습니다 – robbmj

+0

편집 아무것도 변경되지 않습니다. 인수의 값을 함수로 변경하면 인수가 함수로 변경됩니다. 함수에 값을 보낼 때 사용 된 변수 (있는 경우)에 영향을 미치지 않습니다. –

답변

0

객체 참조로하지만 값으로 전달되지 않습니다 이런 식으로 할 수있는,하지 않는 것이 좋습니다이

var test = true; 

function changeThisBoolPlease(asd){ 
    return !asd; 
} 

alert(test); 
test = changeThisBoolPlease(test); 
alert(test); 
또는

하지만 시도) ...

예제에서는 개체를 전달하지 않고 원시 값 형식을 전달합니다.

var test = { val: true }; 

function changeThisBoolPlease(asd){ 
    asd.val=!asd.val; 
} 

alert(test.val); 
changeThisBoolPlease(test); 
alert(test.val); 
+1

* "참조로 전달되지는 않았지만 참조 인 값으로 전달된다."* 아니요, 값은 다음과 같습니다. 부울이 아닌 참조. –

+0

예, 당신은이 경우에 맞습니다. 그러나 나는 '사실'은 단지 예일 뿐이며 실제로는 물체를 지나가고 있다고 가정했습니다. 수정 됨 – Adassko

2

질문의 예에서 asd 값을 변경하는 중입니다.

당신이 그것을 참조 참조 (사본입니다

var test = true; 

function changeTestBoolPlease(){ 
    test = !test; 
} 

alert(test); 
changeTestBoolPlease(); 
alert(test); 
0

그것은 범위 지정 문제 : 당신이 참조를 원하는 경우

는, 당신은 같은 개체 요소에 포장해야합니다. 그냥 돌아가서 설정하십시오 :

var test = true; 

function changeThisBoolPlease(asd){ 
    return !asd; 
} 

alert(test); 
test = changeThisBoolPlease(test); 
alert(test);