2014-06-23 2 views
0

저는 처음에는 자바 스크립트에 익숙했지만 (Ruby를 먼저 배웠습니다), 제가 본 모든 이상한 불일치에 대해 매우 혼란 스러웠습니다. 근본적인 메커니즘이 무엇인지 알아 내려고 노력하고 있습니다. 언어를 더 잘 이해할 수 있습니다. 이것들 중 하나는 내가 비교를 할 때 두 요소가 어느쪽에 있느냐가 중요하지 않다는 것이지만, 나는 그것이 일어난 것을 보았고 그 이유를 이해하지 못한다는 것이다.자바 스크립트 응답은 비교 순서에 따라 바뀝니다.

이 버전은 항상 true를 반환 :

function sorted(str) { 
    var arr = str.split(""); 
    return arr.sort().join('') === arr.join(''); 
} 

sorted('abc') // => true 
sorted('cba') // => true 

을이 정답 돌아갑니다 동안 :

function sorted(str) { 
    var arr = str.split(""); 
    return arr.join('') === arr.sort().join(''); 
} 

sorted('abc') // => true 
sorted('cba') // => false 

를 기본 함수는 문자열이 알파벳 여부를 정렬되어 있는지 확인하기 위해 여기 예제 나는 이것을 알아 내려고 노력했는데 꽤 막혔습니다. 누구든지 설명 할 수 있습니까?

감사합니다.

답변

0

Array.prototype의 대부분의 메서드와 달리, sort()은 개체를 제 위치에서 조작합니다. 따라서 첫 번째 코드에서 ===의 두 번째 피연산자에있는 arr은 이미 정렬되어 있으며 비교는 항상 true을 반환합니다.