자바스크립트를 작성할 때 자주 참조해야 하는 검색 엔진, 문자열로 작업하는 메서드의 구문(및 순서, 인수 정의)을 명확히 하기 위해.

이 기사에서는 가장 일반적인 예와 설명을 제공하려고 노력할 것입니다. 자바스크립트 메소드문자열 관련. 가장 인기있는 방법은 편의를 위해 기사 상단에 있습니다.

문자열로 변환

숫자, 부울 또는 개체를 문자열로 변환할 수 있습니다.

변수 myNumber = 24; // 24 var myString = myNumber.toString(); // "24"

string() 함수를 사용하여 이 작업을 수행할 수도 있습니다.

변수 myNumber = 24; // 24 var myString = String(myNumber); // "24"

Nicholas Zakas는 다음과 같이 말합니다. "값(null 또는 undefined)이 확실하지 않은 경우 String() 함수를 사용하십시오. 변수 유형에 관계없이 문자열을 반환하기 때문입니다."

한정되지 않은변수에 값이 할당되지 않았음을 의미합니다. 없는, - null 값이 할당되었습니다(null이 빈 개체로 정의되었다고 말할 수 있음).

문자열을 하위 문자열로 분할

문자열을 하위 문자열 배열로 분할하려면 split() 메서드를 사용할 수 있습니다.

Var myString = "오고, 떨어져, 에, 쉼표"; var substringArray = myString.split(","); // ["오다", "떨어져", "에", "더", "쉼표"] var arrayLimited = myString.split(",", 3); // ["오고", "떨어져", "에"]

마지막 줄에서 알 수 있듯이 두 번째 선택적 인수의 값은 반환된 배열의 요소 수를 결정합니다.

문자열 길이 가져오기

length 속성을 사용하여 문자열의 유니코드 문자 수를 찾을 수 있습니다.

Var myString = "당신은" 꽤 캐릭터입니다." var stringLength = myString.length; // 25

문자열의 하위 문자열 정의

이를 수행하는 두 가지 방법이 있습니다.

indexOf() 사용:

Var stringOne = "Johnny Waldo Harrison Waldo"; var wheresWaldo = stringOne.indexOf("왈도"); // 7

indexOf() 메서드는 문자열(문자열의 시작 부분부터)에서 부분 문자열(전달된 첫 번째 인수)을 검색하고 문자열에서 부분 문자열의 발생이 시작된 첫 번째 문자의 위치를 ​​반환합니다.

lastIndexOf() 사용:

Var stringOne = "Johnny Waldo Harrison Waldo"; var wheresWaldo = stringOne.lastIndexOf("왈도"); // 22

lastIndexOf() 메서드는 문자열 내에서 마지막 부분 문자열을 찾는 것을 제외하고 정확히 동일합니다.

하위 문자열을 찾을 수 없으면 두 메서드 모두 -1을 반환합니다. 두 번째 선택적 인수는 검색을 시작하려는 문자열의 위치를 ​​지정합니다. 따라서 indexOf() 메서드의 두 번째 인수가 5이면 검색은 5번째 문자부터 시작되고 0-4개 문자는 무시됩니다. lastIndexOf() 의 경우에도 두 번째 인수가 5이면 검색이 거꾸로 시작되고 6 이상의 문자는 무시됩니다.

문자열의 일부를 바꾸는 방법

문자열의 일부(또는 전체)를 바꾸려면 replace() 메서드를 사용합니다.

바르 강타 = "조시 해밀턴"; var betterSlugger = slugger.replace("h Hamilton", "e Bautista"); console.log(betterSlugger); // "호세 바티스타"

첫 번째 인수는 교체할 부분 문자열의 일부를 포함합니다. 두 번째 인수는 대체할 하위 문자열을 대체할 문자열입니다. 하위 문자열의 첫 번째 인스턴스만 대체됩니다.

부분 문자열의 모든 항목을 바꾸려면 다음을 사용하십시오. 정규식"g" 플래그와 함께.

Var myString = "그녀는 자동차 해안에서 자동차 쉘을 판매합니다"; var newString = myString.replace(/자동차/지, "바다"); 콘솔 로그(newString); // "그녀는 해변에서 조개껍데기를 판다"

두 번째 인수에는 대체할 하위 문자열 또는 함수가 포함될 수 있습니다.

주어진 위치에서 캐릭터 찾기

주어진 위치에 있는 문자를 찾으려면 charAt() 메서드를 사용할 수 있습니다.

Var myString = "깃털 새"; var whatsAtSeven = myString.charAt(7); // "에프"

JavaScript에서 종종 그렇듯이 첫 번째 위치는 1이 아닌 0부터 계산됩니다.

대안으로 charCodeAt() 메서드를 사용할 수 있지만 문자 자체 대신 코드를 가져옵니다.

Var myString = "깃털 새"; var whatsAtSeven = myString.charCodeAt(7); // "102" var whatsAtEleven = myString.charCodeAt(11); // "70"

대문자의 코드(위치 11)는 동일한 문자의 코드와 다르지만 소문자(위치 7)입니다.

자바 스크립트에서 문자열 연결

대부분의 경우 (+) 연산자를 사용하여 문자열을 연결합니다. 그러나 concat() 메서드를 사용하여 문자열을 연결할 수도 있습니다.

Var stringOne = "Knibb High 축구"; var stringTwo = stringOne.concat("규칙."); // "Knibb High 축구 규칙"

여러 문자열을 concat() 에 전달할 수 있으며 concat() 메서드에 추가된 순서대로 결과 문자열에 나타납니다.

VarstringOne = "손잡이"; var stringTwo = "높음"; var stringThree = "축구"; var stringFour = "규칙."; var finalString = stringOne.concat(stringTwo, stringThree, stringFour); console.log(최종문자열); // "Knibb 하이 풋볼 규칙."

문자열의 일부(자바스크립트에서 부분 문자열 추출)

세 가지가 있습니다 다양한 방법기존 문자열에서 부분 문자열의 일부를 "제거"하여 새 문자열을 만듭니다.

slice() 사용:

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.slice(5, 10); // "fghj"

substring() 사용:

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.substring(5, 10); // "fghj"

(slice() 및 substring()) 메서드 모두에서 첫 번째 인수는 하위 문자열이 시작하는 문자 위치(0부터 계산)이고, 두 번째 인수는 하위 문자열이 끝나는 문자 위치입니다. 반환된 하위 문자열에 포함되지 않은 두 번째 인수입니다.

substr() 사용:

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.substr(5, 10); // "fghijklmno"

substr 메서드의 경우 첫 번째 인수는 부분 문자열이 시작되는 문자 위치도 지정합니다. 두 번째 인수는 선택 사항입니다. 그러나 동시에 두 번째 인수는 첫 번째 인수에서 이미 정의한 위치에서 시작하여 부분 문자열에 포함되어야 하는 문자 수를 지정합니다. 이 기술은 위의 예에서 잘 설명되어 있습니다.

자바 스크립트에서 문자열을 소문자 또는 대문자로 변환

필요한 변환을 수행하는 네 가지 방법이 있습니다. 문자열 문자를 다음으로 변환하는 두 개 대문자.

Var stringOne = "말을 하면 들리지 않습니다."; var stringTwo = stringOne.toLocaleUpperCase(); // "말하세요, 당신의 말을 들을 수 없습니다" var stringThree = stringOne.toUpperCase(); // "말해봐, 들리지 않아"

그리고 2는 문자열을 소문자로 변환합니다.

Var stringOne = "YOU DON"T HAVE TO YELL"; var stringTwo = stringOne.toLocaleLowerCase(); // "당신은 소리칠 필요가 없습니다" var stringThree = stringOne.toLowerCase(); // "당신은 소리를 지르지 않아도 됩니다"

일반적으로 로케일 방식과 비로케일 방식의 차이는 없으나 "터키어와 같이 유니코드 시스템에서 대소문자가 규정된 대소문자를 따르지 않는 일부 언어의 경우 비로케일 방식을 사용한 결과 방법이 다를 수 있습니다." 따라서 다음 규칙을 따르십시오. "코드가 작동할 언어를 모르는 경우 로케일 메서드를 사용하는 것이 더 안전합니다."

자바스크립트의 패턴 매칭

두 가지 방법을 사용하여 문자열에 패턴이 있는지 확인할 수 있습니다.

match() 메서드는 문자열 개체에서 호출되고 정규식은 match() 메서드에 인수로 전달됩니다.

Var myString = "목재 척으로 척척할 수 있는 나무의 양"; var myPattern = /.ood/; var myResult = myString.match(myPattern); // ["나무"] var patternLocation = myResult.index; // 9 var originalString = myResult.input // "얼마나 많은 나무를 척으로 척을 할 수 있습니까?"

그리고 exec() 메서드는 RegExp 개체에서 호출되고 문자열은 인수로 전달됩니다.

Var myString = "목재 척으로 척척할 수 있는 나무의 양"; var myPattern = /.huck/; var myResult = myPattern.exec(myString); // ["척"] var patternLocation = myResult.index; // 27 var originalString = myResult.input // "얼마나 많은 나무를 척으로 척을 할 수 있습니까?"

두 메서드 모두 일치하는 첫 번째 항목을 반환합니다. 일치하는 항목이 없으면 NULL이 반환됩니다. 정규식에 " g " 플래그가 있으면 모든 일치 항목을 포함하는 배열이 결과로 반환됩니다.

정규식을 인수로 사용하고 일치하는 첫 번째 패턴의 시작 위치를 반환하는 search() 메서드를 사용할 수도 있습니다.

변수 myString = "가정"; var 패턴 위치 = myString.search(/ume/); // 삼

일치하는 항목이 없으면 메서드는 -1을 반환합니다.

후속 정렬을 위해 두 문자열 비교

로케일의 정렬 순서에 따라 두 문자열을 비교하려면 localeCompare 메서드를 사용할 수 있습니다. localeCompare 메서드는 세 가지 가능한 값을 반환합니다.

MyString = "닭"; var myStringTwo = "계란"; var whichCameFirst = myString.localeCompare(myStringTwo); // -1(-2를 반환하는 Chrome 제외) whichCameFirst = myString.localeCompare("chicken"); // 0 whichCameFirst = myString.localeCompare("사과"); // 1(크롬은 2를 반환)

위와 같이 원래 문자열이 문자열 인수보다 먼저 정렬되면 음수 값이 반환되고 문자열 인수가 원래 문자열 뒤에 정렬되면 +1이 반환됩니다. 반환하는 경우 제로 값, 두 문자열은 동일합니다.

당신이 쓸 때 자바스크립트, 매우 자주 인터넷을 검색하여 문자열과 함께 작동하는 메서드의 구문 및 매개 변수에 대한 정보를 검색해야 합니다.

문자열 작업에 대한 많은 기사를 읽었습니다. 이 게시물은 예제와 짧은 설명문자열 작업을 위한 가장 일반적인 방법. 빠른 참조를 위해 가장 일반적인 방법을 맨 위에 배치하려고 했습니다.

물론 대부분의 경험이 풍부한 개발자들은 이미 많은 방법에 익숙하지만 이것이 좋은 목록초보자가 간단한 방법으로 복잡한 작업을 수행하는 데 도움이 될 수 있는 다양한 기술을 이해할 수 있습니다.

문자열로 변환

숫자, 부울 표현식 또는 개체를 문자열로 변환할 수 있습니다.

변수 myNumber = 24; // 24 var myString = myNumber.toString(); // "24"

와 같은 방법으로 하시면 됩니다 끈():

변수 myNumber = 24; // 24 var myString = String(myNumber); // "24"

값이 다음과 같은지 확실하지 않은 경우 없는또는 한정되지 않은, 당신이 사용할 수있는 끈(), 값 유형에 관계없이 항상 문자열을 반환합니다.

문자열을 하위 문자열로 분할

문자열을 하위 문자열 배열로 분할하려면 다음 방법을 사용할 수 있습니다. 나뉘다():

Var myString = "오고, 떨어져, 에, 쉼표"; var substringArray = myString.split(","); // ["오다", "떨어져", "에", "더", "쉼표"] var arrayLimited = myString.split(",", 3); // ["오고", "떨어져", "에"]

마지막 줄에서 볼 수 있듯이 함수의 두 번째 매개변수는 최종 배열에 포함될 요소 수의 제한입니다.

문자열의 길이 구하기

문자열에 몇 개의 문자가 있는지 찾으려면 속성을 사용합니다. 길이:

Var myString = "당신은" 꽤 캐릭터입니다." var stringLength = myString.length; // 25

문자열에서 부분 문자열 찾기

하위 문자열을 검색하는 두 가지 방법이 있습니다.

용법 indexOf():

Var stringOne = "Johnny Waldo Harrison Waldo"; var wheresWaldo = stringOne.indexOf("왈도"); // 7

indexOf()메서드는 문자열의 시작 부분에서 부분 문자열 검색을 시작하고 부분 문자열이 처음 나타나는 시작 위치를 반환합니다. 이 경우 숫자 7입니다.

용법 마지막 인덱스():

Var stringOne = "Johnny Waldo Harrison Waldo"; var wheresWaldo = stringOne.lastIndexOf("왈도"); // 22

이 메서드는 문자열에서 하위 문자열이 마지막으로 나타나는 시작 위치를 반환합니다.

두 메서드 모두 하위 문자열을 찾을 수 없는 경우 -1을 반환하고 검색을 시작하려는 문자열의 위치를 ​​나타내는 선택적 두 번째 인수를 사용합니다. 따라서 두 번째 인수가 "5"인 경우 indexOf() 0-4 문자는 무시하고 문자 5에서 검색을 시작하는 반면 마지막 인덱스()문자 5에서 검색을 시작하고 뒤로 이동하여 문자 6 이상을 무시합니다.

부분 문자열 교체

문자열의 하위 문자열을 다른 하위 문자열로 바꾸려면 다음을 사용할 수 있습니다. 바꾸다():

바르 강타 = "조시 해밀턴"; var betterSlugger = slugger.replace("h Hamilton", "e Bautista"); console.log(betterSlugger); // "호세 바티스타"

첫 번째 인수는 교체하려는 항목이고 두 번째 인수는 새 문자열입니다. 이 함수는 문자열에서 부분 문자열의 첫 번째 항목만 대체합니다.

모든 항목을 바꾸려면 전역 플래그와 함께 정규식을 사용해야 합니다.

Var myString = "그녀는 자동차 해안에서 자동차 쉘을 판매합니다"; var newString = myString.replace(/자동차/지, "바다"); 콘솔 로그(newString); // "그녀는 해변에서 조개껍데기를 판다"

두 번째 인수에는 특수 템플릿이나 함수가 포함될 수 있습니다. 자세한 내용을 읽을 수 있습니다.

문자열의 지정된 위치에 있는 문자 가져오기

함수를 사용하여 문자를 얻을 수 있습니다. 문자():

Var myString = "깃털 새"; var whatsAtSeven = myString.charAt(7); // "에프"

JavaScript에서 종종 그렇듯이 문자열의 첫 번째 위치는 1이 아닌 0에서 시작합니다.

대체 기능으로 다음을 사용할 수 있습니다. charCodeAt()함수는 문자 코드입니다.

Var myString = "깃털 새"; var whatsAtSeven = myString.charCodeAt(7); // "102" var whatsAtEleven = myString.charCodeAt(11); // "70"

문자 "F"(위치 11)의 코드는 문자 "f"(위치 7)의 코드와 다릅니다.

문자열 결합

대부분의 경우 "+" 연산자를 사용하여 문자열을 결합할 수 있습니다. 그러나 당신은 또한 방법을 사용할 수 있습니다 연결():

Var stringOne = "Knibb High 축구"; var stringTwo = stringOne.concat("규칙."); // "Knibb High 축구 규칙"

이런 식으로, 우리는 쓰여진 순서대로 많은 줄을 하나로 결합할 수 있습니다:

VarstringOne = "손잡이"; var stringTwo = "높음"; var stringThree = "축구"; var stringFour = "규칙."; var finalString = stringOne.concat(stringTwo, stringThree, stringFour); console.log(최종문자열); // "Knibb 하이 풋볼 규칙."

부분 문자열 추출

다른 문자열의 일부에서 문자열을 가져오는 세 가지 방법이 있습니다.

사용 일부분():

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.slice(5, 10); // "fghj"

사용 부분 문자열():

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.substring(5, 10); // "fghj"

두 함수 모두에서 첫 번째 매개변수는 하위 문자열이 시작되는 문자(위치 0부터 시작)이고 두 번째 인수(선택 사항)는 하위 문자열이 반환되는 최대 문자 위치입니다. 예제(5, 10)는 위치 5와 9 사이의 문자열을 반환합니다.

사용 하위 문자열():

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.substr(5, 10); // "fghijklmno"

첫 번째 인수는 새 행이 시작되는 문자 위치이고 두 번째 인수는 새 행의 시작 위치로부터의 문자 수입니다. 저것들. (5, 10)은 위치 5에서 시작하여 10자를 반환합니다.

문자열을 대문자 또는 소문자로 변환합니다.

번역에는 4가지 방법이 있습니다. 처음 2는 문자열을 대문자로 변환합니다.

Var stringOne = "말을 하면 들을 수 없습니다."; var stringTwo = stringOne.toLocaleUpperCase(); // "말을 하면 당신의 말을 들을 수 없습니다" var stringThree = stringOne.toUpperCase(); // "말해봐, 들리지 않아"

다른 2는 문자열을 소문자로 변환합니다.

Var stringOne = "당신은 소리를 지르지 않아도 됩니다"; var stringTwo = stringOne.toLocaleLowerCase(); // "당신은 소리칠 필요가 없습니다" var stringThree = stringOne.toLowerCase(); // "당신은 소리를 지르지 않아도 됩니다"

"로케일"방법을 사용하는 것이 좋습니다. 안에 다른 장소들, 예를 들어 터키에서는 레지스터 표시가 우리에게 익숙한 방식으로 작동하지 않으므로 원하는 결과가 나올 수 있습니다. "로케일" 방법을 사용하면 이러한 문제가 발생하지 않습니다.

패턴 매칭

문자열의 패턴 일치는 서로 다른 방식으로 작동하는 2가지 방법과 함께 사용할 수 있습니다.

방법 성냥()문자열에 적용되고 정규 표현식을 매개변수로 사용합니다.

Var myString = "목재 척으로 척척할 수 있는 나무의 양"; var myPattern = /.ood/; var myResult = myString.match(myPattern); // ["나무"] var patternLocation = myResult.index; // 9 var originalString = myResult.input // "얼마나 많은 나무를 척으로 척을 할 수 있습니까?"

방법 임원()정규식 개체에 적용되고 문자열을 매개변수로 사용합니다.

Var myString = "목재 척으로 척척할 수 있는 나무의 양"; var myPattern = /.huck/; var myResult = myPattern.exec(myString); // ["척"] var patternLocation = myResult.index; // 27 var originalString = myResult.input // "얼마나 많은 나무를 척으로 척을 할 수 있습니까?"

두 메서드 모두 첫 번째 일치 항목만 반환합니다. 일치하는 항목이 없으면 반환 없는.

당신은 또한 방법을 사용할 수 있습니다 검색(), 정규식을 취하고 패턴의 첫 번째 일치 위치를 반환합니다.

변수 myString = "가정"; var 패턴 위치 = myString.search(/ume/); // 삼

일치하는 항목이 없으면 " -1 «.

정렬을 위해 두 문자열 비교

2개의 문자열을 비교하여 알파벳순으로 먼저 오는 문자열을 결정할 수 있습니다. 이를 위해 우리는 방법을 사용합니다 로케일 비교(), 3개의 가능한 값을 반환합니다.

변수 myString = "닭"; var myStringTwo = "계란"; var whichCameFirst = myString.localeCompare(myStringTwo); // -1(Chrome은 -2를 반환함) whichCameFirst = myString.localeCompare("chicken"); // 0 whichCameFirst = myString.localeCompare("사과"); // 1(크롬은 2를 반환)

위와 같이 문자열 인수가 뒤에 오는 경우 음수가 반환됩니다. 원래 문자열. 문자열 인수가 원래 문자열 앞에 오는 경우 양수입니다. 반환된 경우 0 문자열이 같음을 의미합니다.

반환 값을 확인하려면 if (result< 0), чем if (result === -1). Последнее не будет работать в Chrome.

관심을 가져 주셔서 감사합니다. 새롭고 흥미로운 것을 많이 배웠기를 바랍니다!

기사 작성자: Alex. 범주:
발행일: 2013년 3월 19일

비교 연산자의 피연산자는 숫자 및 문자열 값일 수 있습니다. 문자열은 유니코드를 사용할 때 표준 사전 순서에 따라 비교됩니다.

Javascript는 엄격한 비교와 캐스트 비교를 모두 허용합니다. 엄격한 비교를 위해 두 피연산자는 동일한 유형이어야 하며 다음을 수행해야 합니다.

  • 동일한 문자 시퀀스로 구성된 두 문자열은 완전히 동일합니다.
  • 두 숫자는 단어의 일반적인 의미에서 같다면 엄격히 같습니다. +0 은 -0 과 완전히 같습니다.
  • NaN은 NaN을 포함하여 어떤 것과도 엄격히 동일하지 않습니다.
  • 2개의 부울 피연산자는 둘 다 참 또는 거짓인 경우 엄격히 동일합니다.
  • 두 개체 피연산자는 동일한 공통 개체에 대한 참조인 경우 완전히 동일합니다.
  • Null 및 Undefined는 동일합니다 == 그러나 엄격하게 동일하지 않습니다 ===

다음 표에서는 비교 연산자에 대해 설명합니다.

운영자 설명 var1=3, var2=4에 대해 true를 반환하는 예
같음(==) 두 피연산자가 동일한 유형이 아닌 경우 javascript는 유형 변환을 수행하고 엄격하게 비교합니다. 피연산자 중 하나가 숫자 또는 부울 값이면 피연산자가 숫자로 변환됩니다. 피연산자가 문자열인 경우 - 두 번째 피연산자는 문자열로 변환됩니다.

3 == 변수1
"3" == var1
3 == "3"

같지 않음(!=) 피연산자가 같지 않으면 true를 반환합니다. 피연산자가 있는 경우 다른 유형, 자바 스크립트 변환.

변수1 != 4
var1 != "5"

완전히 같음(===) 유형 변환 없이 피연산자가 완전히 동일한 경우(위 참조) true를 반환합니다.
엄격히 같지 않음(!==) 피연산자가 완전히 같지 않거나(위 참조) 유형이 다른 경우 true를 반환합니다.

변수2 !== 3
3 !== "3"

더 (>) 왼쪽 피연산자가 오른쪽보다 크면 true를 반환합니다.
크거나 같음(>=) 왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같으면 true를 반환합니다.

var2 >= var1
변수1 >= 3

더 적은 (<) 왼쪽 피연산자가 오른쪽 피연산자보다 작으면 true를 반환합니다.
작거나 같음(<=) 왼쪽 피연산자가 오른쪽 피연산자보다 작거나 같으면 true를 반환합니다.

var1<= var2
var2<= 5

비교 연산자 사용

표준 항등 연산자(== 및 !=)는 유형에 관계없이 두 피연산자를 비교합니다. 엄격한 동등성(=== 및 !==)은 동일한 유형의 피연산자를 비교합니다. 피연산자의 유형과 값이 같아야 하는 경우 완전 동등성을 사용합니다. 그렇지 않으면 피연산자의 유형이 다른 경우에도 동일한지 확인할 수 있는 일반 같음 연산자를 사용합니다.

유형을 변환할 때 Javascript는 , 숫자 , 부울그리고 물체다음과 같은 방법으로:

  • 숫자와 문자열을 비교할 때 문자열은 숫자 값으로 변환됩니다. Javascript는 문자열 리터럴에서 숫자 값을 가져옵니다. "123" == 123 .
  • 피연산자 중 하나가 부울이면 참이면 1로, 거짓이면 +0으로 변환됩니다.
  • 객체가 숫자나 문자열과 비교되면 자바스크립트는 객체에 해당하는 값을 가져오려고 시도합니다. valueOf 및 toString 메서드를 사용하여 객체를 기본 값, 문자열 또는 숫자로 변환합니다. 개체를 변환할 수 없으면 런타임 오류가 생성됩니다.

즉시 경고하겠습니다. 예, 기사가 약간 잘못되었습니다. 의견에 오신 것을 환영합니다. 좋은 설명이 있습니다.

좋은 날.

JavaScript에는 == 및 ===의 두 가지 유사한 연산자가 있습니다. 차이점을 모르는 경우 많은 오류가 발생할 수 있습니다. 그래서 이 주제를 열기로 했습니다. ==와 ===의 차이점은 정확히 무엇이며, 어떻게 작동하며, 왜 발생하며, 실수를 피하는 방법입니다.

== 연산자는 동일성을 비교하지만 ===는 동일성을 비교합니다. === 연산자의 장점은 두 값을 동일한 유형으로 강제 변환하지 않는다는 것입니다. 그것이 일반적으로 사용되는 이유입니다.

ABC == 정의되지 않음; // abc = 정의되지 않은 경우 참 | null abc === 정의되지 않음; // true - abc = undefined인 경우에만!
ABC == 거짓; // abc = 거짓이면 참 | 0 | "" | ABC === 거짓; // abc = false인 경우에만 true!
결국, false와 0(또는 "", 또는 )을 혼동하는 것은 그다지 좋지 않습니다.

물론:
5 === 5; // 참 참 === 참; // 참 "abc" === "abc"; // 진실

이제 흥미로운 예입니다.
5 == 5; // 참 5 === 5; // true new Number(5) == 5; // true new Number(5) === 5; // 거짓!

왜 이런 일이 발생합니까? 예, 모든 숫자는 Number 클래스의 객체입니다. 그러나 숫자를 숫자로 나타낼 수 있습니다. 일부 상수입니다. 한 번 선언되고 항상 자신과 동일합니다. 그러나 동시에 Number 클래스의 새 객체를 선언합니다. 값은 동일하지만 동일하지는 않습니다(이는 Number 클래스의 완전히 다른 두 객체이기 때문에).

배열/객체

그러나 배열과 객체의 경우 두 연산자는 동일성을 비교하여 동일한 방식으로 작동합니다.
변수 a = (); == (); // 거짓 a === (); // 거짓 a == a; // 참 a === a; // 진실

배열과 객체를 비교하기 위해 다음과 같은 특수 함수를 작성할 수 있습니다.
함수 isEq(a, b)( if(a == b) 반환 true; for(var i in a)( if(!isEq(a[i], b[i])) return false; ) for(var i b)( if(!isEq(a[i], b[i])) return false; ) return true; )
약간 엉성한, 두 개의 사이클, 그리고 대략 hasOwnProperty잊어버렸다; 잘 할 것입니다.

이것<-

또 다른 함정이 있습니다. 이것은 이것에 대한 패스입니다.
(function()( this == 5; // true this === 5; // false )).call(5);

여기에 그런 순간이 있습니다. 그것을 잊지 않을 가치가 있습니다.

총...

자, 이제 우리가 우리 자신의 슈퍼프레임워크를 작성하고 있다고 상상해보십시오. 단순히 == 대신 === 연산자가 더 예쁘기 때문에 적극적으로 사용하고 누군가 우리와 함께 몇 가지 버그를 발견합니다.
func(newNumber(5)); (함수()(함수(이); )).call(5);

그러한 예가 실행 가능하지 않은 것 같습니까? 제발!

제이쿼리:
$.each(, function()( func(this); ));

글쎄, 또는 그림을 확장하고 싶었습니다.
var 5 = 새로운 숫자(5); 5.a = 2; // 확장하고 싶었지만 5개만 확장되지 않았습니다. // 여기서 우리는 어떻게든 사용... func(Five);

그게 다야 누군가에게 유용하기를 바랍니다. 관심을 가져주셔서 감사합니다.