Skip to content

강제로 설명된 자바스크립트

BbangYa edited this page Apr 15, 2019 · 1 revision

자바스크립의 강제를 탐구하기 전 JS가 유형이 지정되지 않은 언어(사용자 정의에 따라 약한 유형일 수 있는)이기 때문에
이 게시물이 있다를 것에 주목할 가치가 있습니다.

언어 형식

강력한 형식의 프로그래밍 언어는 각 유형희 데이터 (정수, 문자, 16진수, 10진수 등등) 프로그래밍 언어의 일부로  
미리 정의되고 주어진 프로그램에 대해 정의 된 모든 상수 또는 변수가 데이터 유형 중 하나와 함께 설명된다.

이것이 JS 사용자로서 우리에게 의미하는 것은 언어가 컴파일 타임에 특정 규칙 기반의 유형을 결정 하도록 강요 받을 수 있다는 것이다.
이 글에서는 명백하거나 절대적인 두 가지 유형의 강제 변환을 참조 할 것입니다.

명시적 강제 변환은 한 유형의 값을 다른 유형으로 변환하는 명백한 시도입니다.
암시적 강제 변환은 조금 덜 분명한 부작용을 발생시킵니다.
아래의 예를 참조하십시오

let a = 100

let b = a+'' // IMPLICIT COERCION
console.log(b) // 100

let c = String(a) // EXPLICIT COERCION
console.log(c) // 100

위의 예시에서 암시적 및 명시적 접근 방식 모두 동일한 결과를 초래한다는 것에 유의하세요.
이는 흥미로운 논쟁의 결과입니다.
즉, 가독성이 논쟁의 요지입니다. 거의 대부분 항상 여러분 이외의 누군가가 여러분의 코드를 읽을 것입니다.
위의 방법 중 어느 것이 더 읽기 쉽습니까?

결론적으로 JS가 == 그리고 === 를 사용하여 데이터 유형 간의 비교를 처리하는 방법과
null 및 undefined 을 사용할 때 살펴 보겠습니다.

null VS undefined

아래에 몇가지 코드 예가 있습니다.

console.log( typeof(undefined)) // 'undefined'
console.log( typeof(null)) // 'object'

let a
console.log( typeof(a)) // 'undefined'

let b 
console.log( typeof(b)) // 'undefined'
b = null 
console.log( typeof(b)) // 'object'

위 코드의 주요 알아야할것 :

  • null 은 객체이다.
  • undefined는 정의되지 않은 고유의 유형이다.

비교

이제 평등 == 비교와 엄격한 평등 === 비교를 사용하여 여러 유형의 값을 비교한 결과를 살펴 보겠다.

자, JS 통역사가 우리의 의도에 대해 추측 해 보도록 하겠습니다.

// returns true
undefined == null
null == undefind

// returns false
undefined === null
null === undefind

undefined 와 null은 평등 비교로는 같지만 엄격한 평등 비교에서는 서로 동일하지 않습니다.

String, Number 및 Boolean 비교를 살펴 보겠습니다.

let stringVar, integerVar, boolVar
stringVar = '100'
integerVar = 100
boolVar = true

// returns true
stringVar == integerVar

// returns false
stringVar === integerVar

// returns true
integerVar == boolVar

// returns false
integerVar === boolVar

// returns true
stringVar == boolVar

// returns false
stringVar === boolVar

지금까지 패턴을 볼 수 있습니다.
평등 비교를 사용하여 다른 유형의 값을 비교할 때 JS는 값을 올바르게 강제 변환합니다.
정확도는 엄격한 비교를 통해 달성됩니다.

결론

결국 강요는 유형이 없는 언어의 필수 악이다. 나의 제안은 :
당신이 코드를 작성하는 동안 엄격한 비교를 항상 사용해라

Clone this wiki locally