느슨한 타입의 동적 언어
JavaScript 형 변환
- Number 타입
- String 타입
- Boolean 타입
- Null 과 underfine
- Symbo 타입
== , === 차이
== : a == b의 값이 같은지를 비교해서 같으면 true , 다르면 false (값만 같으면 true)
=== : 엄격하게 같아야 한다 값과 값의 종류(Data Type) 모두 같은지를 비교한다
let a = 1;
let b = "1";
console.log(a == b); // true 1 == 1 값이 같으므로 true
console.log(a === b); // false 1 == 1 값이 같지만 숫자형 !=문자형이기 때문에 false
JavaScript 의 단점
- 클라이언트 보안
- js코드는 유저에게 보이기 때문에 누군가 악의적인 의도로 코드를 사용할 수 있다
- 랜더링 중지
- 코드에 에러가 있으면 동작하는 코드가 완전히 랜더링을 중지한다 그래서 사용에게는 자바스크립트가 아예 없는 것처럼 보일 것이다
- 브라우저 지원과 디버깅 기능의 부족
- 구형 브라우저는 기능 지원이 부족함으로 그 부분을 확인해야한다
- 몇몇 HTML 에디터가 디버깅 기능을 제공하지만 C/c++ 에디터와 같은 다른 에디터에 있는것 처럼
유용하지 않다 또한 브라우저는 에러를 보여주지 않기에 개발자가 문제를 찾아내는 것 자체가 어렵다
JavaScript 보완
- 자바 스크립트 소스를 안보이게 암호화를 해 줄 필요가 있다
- 에러가 발생하면 쉽게 찾을수 있게 개발자의 코드정돈 습관도 필요하다
- TypeScript 와 Flow 등을 사용하는 방법도 있다
undefined 와 null
undefind와 null 비교