[javascript] JavaScript에서 문자열 동등성을 확인하는 올바른 방법은 무엇입니까?

JavaScript에서 문자열 간의 동등성을 확인하는 올바른 방법은 무엇입니까?



답변

항상== and===연산자를 사용하는것의 차이점과 의미를 완전히 이해하기 전에는연산자를 사용하십시오===. “일반”==연산자는 내부적으로 유형 강제로 인해 예상치 못한 결과를 초래할 수 있으므로===항상 사용하는 것이 좋습니다.

이것에 대한 통찰력과 Javascript의 다른 “좋은 대 나쁜”부분은 Douglas Crockford 씨와 그의 연구에서 읽었습니다. 훌륭한 Google Tech Talk에서 유용한 정보를 많이 요약합니다. http://www.youtube.com/watch?v=hQVTIJBZook


최신 정보:

Kyle Simpson 의 You Do n’t Know JS 시리즈는 훌륭하며 온라인에서 무료로 읽을 수 있습니다. 이 시리즈는 일반적으로 잘못 이해되는 언어 영역으로 들어가며 Crockford가 제안한 “나쁜 부분”을 설명합니다. 그것들을 이해함으로써 당신은 그것들을 올바르게 사용하고 함정을 피할 수 있습니다.

Up & Going “책에는 Equality에 대한 섹션이 포함되어 있으며 느슨한 ( ==) 대 엄격한 ( ===) 연산자 를 사용하는시기를 구체적으로 요약합니다 .

몇 가지 간단한 테이크 아웃에 대한 자세한 내용을 요약하고 사용 여부 ==또는 ===다양한 상황에서 알 수 있도록 도와주는 간단한 규칙은 다음과 같습니다.

  • 비교에서 값 (일명 측면)이 true또는 false값일 수있는 경우 피하고 ==사용하십시오 ===.
  • 비교에서 하나의 값이 특정 값 (이 될 수 있다면 0, ""또는 []피 – 빈 배열) ==사용 ===.
  • 에서 모든 다른 경우, 넌 안전 사용합니다 ==. 안전 할뿐만 아니라 대부분의 경우 가독성을 향상시키는 방식으로 코드를 단순화합니다.

Javascript를 실제로 이해하기 위해 시간을 투자하고 싶지 않은 개발자를위한 Crockford의 강연은 여전히 ​​권장합니다. Javascript로 가끔 일하는 개발자에게는 좋은 조언입니다.


답변

문자열이라는 것을 알고 있다면 타입을 확인할 필요가 없습니다.

"a" == "b"

그러나 문자열 객체는 동일하지 않습니다.

new String("a") == new String("a")

거짓을 반환합니다.

valueOf () 메소드를 호출하여 String 오브젝트의 기본 요소로 변환하십시오.

new String("a").valueOf() == new String("a").valueOf()

사실을 반환합니다


답변

대답에 한 가지 추가 사항 :이 방법이 모두 false를 반환하면 문자열이 같더라도 한 문자열의 왼쪽 및 오른쪽에 공백이있을 수 있습니다. 따라서 .trim()비교하기 전에 문자열 끝에 a 를 넣으십시오 .

if(s1.trim() === s2.trim())
{
    // your code
}

무엇이 잘못되었는지 알아 내려고 시간을 잃었습니다. 이것이 누군가에게 도움이되기를 바랍니다!


답변

어떤이 질문에 나를 인도하는 인 paddingwhite-spaces

내 사건을 확인

 if (title === "LastName")
      doSomething();

제목은 " LastName"

여기에 이미지 설명을 입력하십시오

그래서 아마도 당신은 trim이와 같은 기능 을 사용해야 할 것입니다

var title = $(this).text().trim();


답변

강제 변환의 작동 방식을 실제로 알지 못하는 경우 대신 ==ID 연산자 ===를 사용 하지 않아야 합니다. 그러나 어떻게 작동하는지 이해하려면 이것을 읽어야합니다 .

을 사용 ==하면 언어가 어떤 유형의 강제 변환을 수행하게합니다. 예를 들면 다음과 같습니다.

"1" == 1 // true
"0" == false // true
[] == false // true

Douglas Crockford가 그의 책에서 말한 것처럼 :

항상 ID 연산자를 사용하는 것이 좋습니다.


답변

실제로 자바 스크립트에서 문자열을 만들 수있는 두 가지 방법이 있습니다.

  1. var str = 'Javascript'; 이것은 기본 문자열 값을 만듭니다.

  2. var obj = new String('Javascript');이렇게하면 유형의 래퍼 객체가 생성 String됩니다.

    typeof str // string
    typeof obj // object

따라서 동등성을 확인하는 가장 좋은 방법은 ===연산자를 사용하는 것입니다. 연산자는 값과 두 피연산자의 유형을 모두 검사하기 때문입니다.

두 객체 사이의 동등성을 확인 String.prototype.valueOf하려면 올바른 방법 을 사용 하십시오.

new String('javascript').valueOf() == new String('javascript').valueOf()


답변

트릭을 Objects사용하여 문자열을 확인할 수 있습니다 JSON.stringyfy().

var me = new String("me");
var you = new String("me");
var isEquel = JSON.stringify(me) === JSON.stringify(you);
console.log(isEquel);