2013-05-07 4 views
0

Javascript에 문제가 있습니다. 솔직히 말해서 나는 혼란 스럽습니다. Javascript에 문자 그대로 실제 변수를 지정하지 않고 변수에 값을 할당하는 방법이 있습니까? 내가 포인터에 익숙하지 않더라도 그것은 일종의 포인터 문제 일 것입니다. 예를 들어Javascript 그냥 이름을 바꾸는 대신 값을 가져 오거나 설정하십시오.

, 내가 이렇게 :

myVar = $(".myClass").height(); 

값이 반환에 내가 호출 될 때 myVar에 항상 다시 체크 그래서 함수와 동일한 myVar에 설정하고, 동일한 myVar에 설정하고 있지 않다. 할당 후 리터럴 숫자와 myVar를 같게하고 싶습니다. 따라서 변수를 다시 호출 할 때 변수를 변경할 수 없습니다. 높이가 12 첫 번째 경우 예를 들어

것은, 나는 내 코드 위했다가, myVar에 지금과 동일 (12) 그리고 높이가 16로 변경 한 후에도 myVar에 변수는 12

의 값을 가질 것이다 것 이 문제를 해결할 방법이 있습니까? 더 많은 연구를 할 수 있도록 누군가가 이것이 무엇인지 밝힐 수 있습니까? 함수에 의해 반환 된 값이 상수로 필요할 때가 어려워집니다.

모질라에 const 유형이 있지만 IE에서 지원하지 않습니다.

도움이 될 것입니다.

편집 :

그냥 반복 해주세요. 높이가 변경된 후에 myVar를 호출 할 때마다 myVar가 변경됩니다. 그게 잘못이지만, 나는 그것을 멈출 수있는 방법을 알아낼 수 없습니다!

+2

_ 음 _, 그래 당신이 ... – elclanrs

+1

'.height의()'반환 정수의 "나는 ... 반환 값과 같은 myVar에 설정하고 있지 않다"을. –

+0

Javascript는 숫자가 지원되는 리터럴을 사용하므로 실제 값은 포인터가 아니라 저장됩니다. –

답변

2
var myVar = myVar===undefined ? $(".myClass").height() : myVar; 
//first time, assign. second time, ignore and retain initial value. 

편집 : OCD : 때문에 "VAR"를 추가했다.

1

자바 스크립트에는 실제로 2 종류의 개체가 있습니다. 포인터 (즉, 데이터의 주소를 저장한다는 의미)와 변수 (실제 데이터를 저장함). 까다로운 부분은 대입 연산자입니다. 함수에 변수를 할당 할 때 결과 var는 포인터가됩니다. 예를 들어 :

var myPointer = MyObject(); 

그러나

var myVariable = 3; 

변수를 실제 값을 할당합니다. 귀하의 예에서는 값을 할당하고 있습니다.

1

놀고 싶다면 여기에 몇 가지 샘플이 있습니다.

http://jsfiddle.net/Madthew/Xfass/3/

var myVar2 = myVar2===undefined ? $(".myClass").height() : myVar2; 
$(document).ready(function() { 
    myVar = $('.myClass').height(); 

}); 

$("#btn").click(function() { 
    resize(); 
}); 
관련 문제