2011-09-30 4 views
2

에 평가 :삼항 연산자는 항상 내가 진술이 사실 일부

var sep = '  |  '; 
var r = ''; 
for (var i = 0; i < menuItems.length; i++) { 
    r += function(menuObject) { 
    console.log(menuObject); 
    console.log(
     '<a class="" href="' + 
     menuObject.url + '">' + menuObject.name + '</a>' + 
     (i < menuItems.length - 1) ? sep : ""); //logs the contents of sep 
    ) //console.log expanded for readability 
    } 
} 

이 왜 전체 문자열을 기록되지 않습니다, 대신 단지 sep로 평가?

+0

당신이 잘못 보이는 대답을 수락 한 것으로 보인다. 네가하고 싶은 일을하는 게 틀림 없니? – musefan

+0

기술적으로 말씨는 정확했지만 실제 코드 샘플은 잘못되었습니다. – Alex

답변

2

를하고는 모든 조건으로 그 전에 문자열의 프로세스입니다 괄호 안에 ? 전에 식을 넣습니다.

이 시도

...

var sep = '&nbsp;&nbsp;|&nbsp;&nbsp;'; 
     var r = ''; 
     for (var i=0;i<menuItems.length; i++) { 
      r += function (menuObject) { 
      console.log(menuObject); 
      console.log(
       '<a class="" href="' + 
       menuObject.url + '">' + menuObject.name + '</a>'+ 
       ((i <menuItems.length-1) ? sep : "")); //logs the contents of sep 
      } 
     } 
0

운영자 우선 순위. 당신은 괄호에있는 당신의 경우 라인을 포장되지 않기 때문에

console.log(
     ('<a class="" href="' + 
     menuObject.url + '">' + menuObject.name + '</a>'+ 
     (i <menuItems.length-1)) ? sep : ""); 
) 
+1

어, 저는'' Rup

+0

-1 잘못된 평가를 위해 문자열이 null이 아닌 것으로 평가하고 있습니다. 항상 true입니다. – musefan

2

문제는 연산자 우선 순위입니다.

console.log(
      ('<a class="" href="' + 
      menuObject.url + '">' + menuObject.name + '</a>'+ 
      (i <menuItems.length-1)) ? sep : ""); 

(추가 된 괄호를주의하십시오). (. BTW if 조항으로 할 경우에만 거의 없다) 삼항 연산자를 사용하는 경우 당신은 항상 여기처럼 괄호를 사용한다 :

console.log(
      '<a class="" href="' + 
      menuObject.url + '">' + menuObject.name + '</a>'+ 
      ((i <menuItems.length-1) ? sep : ""));