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
}
무엇이 잘못되었는지 알아 내려고 시간을 잃었습니다. 이것이 누군가에게 도움이되기를 바랍니다!
답변
어떤이 질문에 나를 인도하는 인 padding
및white-spaces
내 사건을 확인
if (title === "LastName")
doSomething();
제목은 " LastName"
그래서 아마도 당신은
trim
이와 같은 기능 을 사용해야 할 것입니다
var title = $(this).text().trim();
답변
강제 변환의 작동 방식을 실제로 알지 못하는 경우 대신 ==
ID 연산자 ===
를 사용 하지 않아야 합니다. 그러나 어떻게 작동하는지 이해하려면 이것을 읽어야합니다 .
을 사용 ==
하면 언어가 어떤 유형의 강제 변환을 수행하게합니다. 예를 들면 다음과 같습니다.
"1" == 1 // true
"0" == false // true
[] == false // true
Douglas Crockford가 그의 책에서 말한 것처럼 :
항상 ID 연산자를 사용하는 것이 좋습니다.
답변
실제로 자바 스크립트에서 문자열을 만들 수있는 두 가지 방법이 있습니다.
-
var str = 'Javascript';
이것은 기본 문자열 값을 만듭니다. -
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);