2013-08-27 2 views
0

내가 조금 JSON 놀아되었습니다하지만, 예를 들어, 나는이 코드 조각이 나는 아주 이해하지 못하는 뭔가를 발견에서 JSON에 대한 :쿼리 자바 스크립트

var str = "{'name':'vvv'}";      
var cjson = eval ("(" + str + ")"); 
alert(cjson.name); 

그것은 잘 작동을, 하지만 코드

var str = "{'name':"+'vvv'+"}";  
var cjson = eval ("(" + str + ")"); 
alert(cjson.name); 

의이 조각은, 나는 다음 불을 지르고 오류가 발생했습니다하지 않습니다 ReferenceError가 : VVV가 정의되어 있지 않습니다.

왜 두 번째 방법으로 작동하지 않습니까? 두 경우 모두 유효한 문자열이 아닙니까?

+0

JSON이 올바르지 않습니다. 큰 따옴표가 필요합니다. – bfavaretto

+0

문자열 연결 후 'vvv'주위에 따옴표를 추가해야합니다. var str = "{ 'name': vvv}"; var str = "{ 'name':"+ " 'vvv'"+ "}"와 같은 것이 있어야합니다. – uthark

답변

3

문자열입니다. 그렇습니다. 그러나 동일한 문자열이 아니며 유효한 JSON이 아닙니다. 당신이 선언 된 것처럼

var str = "{'name':vvv}"; 

당신이 평가하려고, 그것의 : 같은 인

var str = "{'name':" + "vvv" + "}"; 

:

var str = "{'name':" + 'vvv' + "}"; 

은 동일

var cjson = { 'name': vvv }; 

이고 변수 이름이입니다..

+0

유효한 JSON은'var str = '{ "name": "vvv"}';' – bfavaretto

+0

입니다. 간결하고 매우 명확한 대답입니다. 감사합니다. – Arturo

0

var str = "{'name':"+'vvv'+"}";을 생성 할 때 생성 된 문자열은 "{'name':vvv}"이고 vvv은 문자열 리터럴이 아닙니다. 따라서 eval은 실행 범위에서 오류를 확인하려고 시도합니다. 오류가 발생하지 않기 때문에

+0

너무 명확한 대답! 고마워! – Arturo