2013-06-13 2 views
0

나는 w3c 튜토리얼 등을 통해 읽은 후 곧바로 앞으로 나아갈 것이라고 생각했습니다! 하지만 코드가 아무 것도 출력하지 않으므로 잘못된 것으로 보입니다!변수 객체가 "true"인지 여부에 따라 내용을 출력합니다.

변수는 사용자가 로그인 여부에 따라 설정

: 나는 다음 사용자가 기록되어 있는지 여부를 프론트 엔드에 보여주기 위해 노력하고

var theJSON={"LOGGEDIN":false}; 

var theJSON={"LOGGEDIN":true}; 

의 여부 :

$(document).ready(function() { 

if (typeof(theJSON[LOGGEDIN]) == true) { 

document.write ("Logged in") 

} else { 

document.write ("Not logged in"); 
} 

정말 간단하게 누락되거나 잘못 입력해야합니다?

+0

참고로이 질문은 JSON과 아무 관련이 없습니다. JSON은 XML, CSV 또는 YAML과 같은 데이터 교환 형식입니다. 'var theJSON = { "LOGGEDIN": true};는 객체 리터럴입니다. –

답변

0

경우 (참 대해서 typeof (theJSON [ "LOGGEDIN]") ==) 또는 경우 (참 대해서 typeof (theJSON.LOGGEDIN) ==) BTW

, 활용도 === 대신 ==

값이 1이면 여전히 조건을 통과합니다.

+0

'if (theJSON.LOGGEDIN)'을 사용하지 않는 이유는 무엇입니까? – Biketire

+0

값이 bool 인 경우, (theJSON.LOGGEDIN)이 적합하지 않은 경우에 따라 다릅니다. @GerardWesterhof –

+0

이것은 항상 '거짓'입니다. 'typeof'는 부울이 아닌 문자열을 반환합니다. –

2

이 코드에서 잘못된 몇 가지 : 당신은 개체의 LOGGEDIN 속성에 액세스하려고하면

, 당신이 누락 인용 부호. 표현 theJSON[LOGGEDIN]은 먼저 변수LOGGEDIN의 값을 속성 이름으로 사용하려고 시도합니다. 그러한 변수가 존재하지 않으면 (예를 들어있는 것처럼), 코드는 오류를 던집니다.

이제 theJSON['LOGGEDIN']의가 true값 및 값 유형은 부울이다. typeof 연산자가 데이터 유형의 이름을 가진 문자열을 반환하므로 typeof(theJSON['LOGGEDIN]')"boolean"을 반환하므로 typeof(theJSON['LOGGEDIN']) == true이 아님.이 참일 수 있습니다. ,

if (theJSON['LOGGEDIN']) 

W3 스쿨 정말 자바 스크립트에 대한 학습을 ​​시작하는 가장 좋은 사이트가 아닙니다 http://eloquentjavascript.net/ 살펴 대신 MDN JavaScript Guide 있습니다

당신은 단지 값이 true인지 여부를 테스트 할 경우 수행 .

+0

위의 제안대로 스크립트를 업데이트했지만 단순히 공백으로 돌아가고있다. 다른 곳에서 문제가 발생해야하며 스크립트는 단순히 "LOGGEDIN"이 true 또는 false로 설정되었는지 여부를 감지합니다. 로그인 상태가 별도의 ajax 스크립트에 설정됩니다. –

+1

글쎄, 다른 스크립트 나'document.write'를 사용하고있을 때의 문제 일 수 있습니다. 더 많은 정보 없이는 말할 수 없습니다. 논리 자체는 잘 작동합니다 : http://jsfiddle.net/ezA7q/. –

+0

도움을 주셔서 감사합니다 펠릭스, 스크립트가 jsfiddle에서 완벽하게 작동하는 것을 볼 수 있습니다. 다른 스크립트를 파헤쳐보고 오류가 있는지 확인해야합니다. : 는 기본적으로 내가이 내 헤더에 연결되어있는 <스크립트 유형 = "텍스트/자바 스크립트"SRC = "HTTP : //urlhere/index.cfm = cAjax.getUserStatus 이동"> 내가 이동 을 url에 var이 표시됩니다. theJSON = { "LOGGEDIN": false}; 문제 없어. 이상한! –

0

먼저 theJSON은 JSON 문자열이 아닌 주어진 실제 객체입니다. 만약 그렇다면 당신은 그것을 제안 된대로 분석 할 필요가 있습니다.

표현식 theJSON[LOGGEDIN]이 올바르지 않은 구문 인 경우 theJSON.LOGGEDIN 또는 theJSON["LOGGEDIN"]을 사용할 수 있습니다. 그리고 이것은 부울 값이므로 typeof(theJSON.LOGGEDIN) == "boolean"입니다.

표현식은 부울이지만 값이 인 경우 true이므로 if (theJSON.LOGGEDIN)으로 쓸 수 있습니다.

관련 문제