JS 아무 데 서 나 쓰 지 마 세 요.연산 자 같 아 요.

5279 단어 JS절대연산 자
개술
우 리 는 현재 의 개발 자 들 이 모두 사용 하고 있다 는 것 을 안다.
내 가 인터넷 에서 본 대부분의 튜 토리 얼 은 자바 스 크 립 트 의 강제 전환 이 어떻게 작 동 하 는 지 예측 하 는 것 은 너무 복잡 하 다 고 생각 하기 때문에 항상==을 사용 하 는 것 을 권장 합 니 다.
이 로 인해 많은 프로그래머 들 이 이 언어의 일 부 를 제외 하고 이 과정 에 대한 이 해 를 확대 하 는 것 이 아니 라 결함 으로 여 긴 다.
다음은 두 가지 사용 사례 를 통 해 사용=의 장점 을 설명 한다.
1.빈 값 테스트

if (x == null)
vs
if (x === undefined || x === null)
2.사용자 의 입력 읽 기

let userInput = document.getElementById('amount');
let amount = 999;
if (amount == userInput)
vs
if (amout === Number(userInput))
본 고 에서 우 리 는 차 이 를 비교 하고 강제 성 을 이해 하 며 유행 하 는 사례 를 연구 하고 최종 적 으로 우리 가 결정 하도록 지도 하 는 준칙 을 찾 아 이 주 제 를 깊이 이해 할 것 이다.
간단 한 소개
자 바스 크 립 트 에 서 는 같은 연산 자가 두 개 로 이 루어 집 니 다.
1.===엄격 한 상등 비 교 를 3 등 연산 자라 고도 한다.
2.==추상 적 인 상등 비교
나 는 줄곧 사용 하고 있다.
Kyle 이나@getfiy 의 You Do n't Know JS 작가 가 Frontend Masters 에 있 는'Deep JavaScript Foundation'을 볼 때 까지.
전문 적 인 프로그래머 로 서 저 는 제 가 매일 일 할 때 사용 하 는 조작 부 호 를 깊이 생각 하지 않 았 습 니 다.이 사실은 제 가 의식 을 전파 하고 사람들 이 우리 가 작성 한 코드 를 더 많이 이해 하고 관심 을 가지 도록 격려 합 니 다.
사실의 근원 은 어디 에 있 습 니까?
진실 한 원인 이 어디 에 있 는 지 아 는 것 이 중요 하 다.모 질 라 의 W3 스 쿨 이 아니 라====보다 우수 하 다 고 주장 하 는 수백 편의 글 중 에 도 이 글 에는 절대 없다.
자 바스 크 립 트 규범 에서 자 바스 크 립 트 가 어떻게 작 동 하 는 지 에 관 한 문 서 를 찾 을 수 있 습 니 다.
상식 을 타파 하 다
1.==값 만 검사(느슨 함)
규범 을 보면 정의 에서 알 수 있 듯 이 알고리즘 이 해 야 할 첫 번 째 일 은 사실상 검사 유형 이다.

2.===검사 값 과 유형(엄격)
여기 서 우 리 는 똑 같이 규범 에서 볼 수 있다.그것 은 유형 을 검사 하고 만약 에 그것들 이 다 르 면 다시 값 을 검사 하지 않 는 다.

2 등 호 와 3 등 호 사이 의 진정한 차 이 는 우리 가 강제 전환 을 허용 하 는 지 여부 이다.
JavaScript 의 강제 변환
강제 변환 이나 형식 변환 은 모든 프로 그래 밍 언어의 기초 중 하나 이다.이것 은 동적 유형 화 된 언어(예 를 들 어 JavaScript)에 특히 중요 하 다.유형 이 바 뀌 면 컴 파일 러 가 소 리 를 지 르 지 않 고 귀 찮 게 하지 않 기 때문이다.
강제 성 을 이해 하 는 것 은 우리 가 자 바스 크 립 트 와 같은 방식 으로 코드 를 해석 할 수 있다 는 것 을 의미 하 며,우리 에 게 더욱 큰 확장 성 을 제공 하고 오 류 를 최대한 줄 일 수 있다 는 것 을 의미한다.
외 현적 강제 전환
강제 전환 은 프로그래머 가 이러한 방법 을 호출 하 는 일시 적 으로 발생 하여 변수의 유형 을 강제로 바 꿀 수 있다.
Boolean(), Number(), BigInt(), String(), Object()
사례:

let x = 'foo';
typeof x // string
x = Boolean('foo')
typeof x // boolean
변환 숨 기기
자 바스 크 립 트 에 서 는 변수의 유형 이 약 하기 때문에 자동 으로 변환 할 수 있 음 을 의미 합 니 다(암시 적 강제).우리 가 산술 연산 자+/*를 사용 할 때 주위 의 문맥 이나 사용==을 사용 할 때 보통 이런 상황 이다.

2 / '3' // '3'       3
new Date() + 1 //        1        
if(x) // x        
1 == true // true      1
1 == 'true' // 'true'       NaN
`this ${variable} will be coreced to string
내 현적 강 제 는 양날 의 검 으로 합 리 적 으로 사용 하면 가 독성 을 증가 시 키 고 지루 함 을 줄 일 수 있다.잘못 사용 하거나 오 해 를 받 으 면 실 망 스 러 운 공식 이 있 고 사람들 은 자 바스 크 립 트 를 외 치 며 비난 할 것 이다.
비교 알고리즘
==연산 기호의 알고리즘
1.X 와 Y 가 같은 유형 이면 실행===.
2.X 가 null 이 고 Y 가 정의 되 지 않 거나 반대로 되면 true 입 니 다.
3.하나 가 숫자 라면 다른 하 나 를 숫자 로 강제 합 니 다.
4.한 사람 이 대상 이 라면 원시 대상 으로 강제로 전환한다.
5.기타,false 로 돌아 갑 니 다.
===비교 알고리즘
1.형식 이 false 와 일치 하지 않 으 면.
2.형식 이 일치 하면-비교 값 이 NaN 일 때 false 로 되 돌아 갑 니 다.
3.-0 ― true.
유행 하 는 용례
1.같은 유형(다수 상황)
만약 유형 이 같다 면====과 완전히 같다.그래서 의미 가 더 강 한 것 을 사용 해 야 한다.

1 == 1 // true                ......        1 === 1 // true
'foo' == 'foo' // true        ......       'foo' === 'foo' //true
유형 이 다 르 기 때문에 나 는 사용 하 는 것 을 더 좋아한다.
2.서로 다른 유형(원본 유형)
우선,서로 다른 유형 이 알 수 없 는 유형 을 의미 하지 않 는 다 는 것 을 알려 드 리 고 싶 습 니 다.유형 을 모 르 면 코드 의 문 제 는 사용 만 하 는 것 보다=vs==더 큽 니 다.유형 을 이해 하 는 것 은 코드 에 대해 더욱 깊이 이해 하 는 것 을 나타 내 고 더 많은 오 류 를 줄 일 수 있다.
숫자 나 문자열 이 있 을 가능성 이 있다 고 가정 합 니 다.알고리즘 이 숫자 형식 에 더 치 우 치기 때문에 toNumber()를 사용 하려 고 시도 한 다 는 것 을 기억 하 십시오.

let foo = 2;
let bar = 32; // number    string
foo == bar //    bar     ,      number
foo === Number(bar) // doing basically the same
foo === bar //    bar   string       false
3.null 과 undefined
사용==시,null 과 undefined 는 서로 같 습 니 다.

let foo = null
let bar = undefined; 
foo == bar // true
foo === bar // false
4.비원 초적 유형[대상,배열]
대상 과 배열 등 비 원시 형식의 데 이 터 를 비교 하기 위해 서 는=또는==을 사용 해 서 는 안 됩 니 다.
정책 결정 준칙.
1.사용 할 수 있 는 모든 상황 에서==을 사용 하 는 것 이 좋다.
2.==이미 알 고 있 는 형식 이 있어 강제 형식 변환 을 선택 할 수 있 습 니 다.
3.유형 을 아 는 것 이 모 르 는 것 보다 낫다.
4.타 입 을 모 르 면 사용 하지 마 세 요==.
5.유형 이 일치 하지 않 을 때===의미 가 없습니다.
6.유형 이 일치 할 때==은 불필요 합 니 다.
사용 을 피하 다
어떤 경우 자바 스 크 립 트 의 가상 값 을 제대로 알 지 못 한다 면==을 사용 해 서 는 안 됩 니 다.

== with 0 or "" or "   "
== with non primtives
== true  or  == false
총결산
제 경험 에 따 르 면 지금까지 저 는 제 가 처리 해 야 할 변수의 유형 을 알 고 있 습 니 다.만약 에 제 가 모 르 면 type of 를 사용 하여 제 가 원 하 는 변수 만 허용 하 겠 습 니 다.
주의해 야 할 네 가지.
1.변수 유형 을 모 르 면==을 사용 하 는 것 이 유일한 합 리 적 인 선택 입 니 다.
2.유형 을 모 르 면 코드 를 이해 하지 못 할 수도 있 습 니 다.코드 를 재 구성 해 보 세 요.
3.형식 을 알 면 더 좋 은 코드 를 만 들 수 있 습 니 다.
4.유형 이 알려 지면==을 사용 하 는 것 이 좋 습 니 다.
이상 은 JS 가 더 이상 연산 자 와 같은 상세 한 내용 을 여기저기 사용 하지 마 세 요.JS 에 관 한 자 료 는 다른 관련 글 에 주목 하 세 요!

좋은 웹페이지 즐겨찾기