JavaScript에서 문자열이 같은지 확인하는 올바른 방법은 무엇입니까?
JavaScript에서 문자열 간의 동등성을 확인하는 올바른 방법은 무엇입니까?
항상
==
및===
연산자사용의 차이점과 의미를 완전히 이해할 때까지연산자를 사용하면===
모호한 (명백하지 않은) 버그 및 WTF로부터 보호받을 수 있습니다. "일반"==
연산자는 내부적으로 유형 강제 변환으로 인해 예상치 못한 결과가 발생할 수 있으므로===
항상 사용하는 것이 권장되는 방법입니다.
이것에 대한 통찰력과 자바 스크립트의 다른 "좋은 대 나쁜"부분은 Mr. 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()
true를 반환합니다
답변에 대한 추가 사항 : 이러한 모든 메서드가 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 연산자 ===
를 피하고 사용해야합니다 . 그러나 이것이 어떻게 작동하는지 이해하려면 이것을 읽어야합니다 .
If you use ==
, you let the language do some type coercion for you, so for example:
"1" == 1 // true
"0" == false // true
[] == false // true
As Douglas Crockford's said in his book:
It’s always better use the identity operator.
There are actually two ways in which strings can be made in javascript.
var str = 'Javascript';
This creates a primitive string value.var obj = new String('Javascript');
This creates a wrapper object of typeString
.typeof str // string
typeof obj // object
So the best way to check for equality is using the ===
operator because it checks value as well as type of both operands.
If you want to check for equality between two objects then using String.prototype.valueOf
is the correct way.
new String('javascript').valueOf() == new String('javascript').valueOf()
String Objects
can be checked using JSON.stringyfy()
trick.
var me = new String("me");
var you = new String("me");
var isEquel = JSON.stringify(me) === JSON.stringify(you);
console.log(isEquel);
I came up with a alternative solution during testing. you can use function on the string prototype.
String.prototype.betwenStr = function(one){
return JSON.stringify(new String(this)) === JSON.stringify(new String(one));
}
//call it
"hello world".betweenStr("hello world"); //returns boolean
//value
works fine in chrome browsers
'programing' 카테고리의 다른 글
이전 커밋이 아닌 특정 커밋을 원격으로 푸시하려면 어떻게해야합니까? (0) | 2020.09.29 |
---|---|
이진 세마포어와 뮤텍스의 차이점 (0) | 2020.09.29 |
"찾기"에서 모든 "권한 거부"메시지를 제외하려면 어떻게합니까? (0) | 2020.09.29 |
GIT에서 사용자 이름과 비밀번호를 저장하는 방법은 무엇입니까? (0) | 2020.09.29 |
C #에서 문자열을 열거 형으로 변환 (0) | 2020.09.29 |