'use strict'
added in es5 , use this for vanila javascript
바닐라자바스크립트를 사용할때는 항상 strict모드를 사용할것
엄격 모드는 평범한 JavaScript 시멘틱스에 몇가지 변경이 일어나게 한다.
1. 기존에는 조용히 무시되던 에러들을 throwing합니다.
2. JavaScript 엔진의 최적화 작업을 어렵게 만드는 실수들을 바로잡습니다.
3. 가끔씩 엄격 모드의 코드는 비-엄격 모드의 동일한 코드보다 더 빨리 작동하도록 만들어집니다.
4. 엄격 모드는 ECMAScript의 차기 버전들에서 정의 될 문법을 금지합니다.
let name = 'ellie';
let name= 'hello';
이렇게 변경가능하다.
{let name = 'minji' }
block 안에다가 선언시 안에서만 유효 <-> global scope
- null = 너는 텅텅 비었어.
- undefined = 선언은 되었지만 값은 할당되지 않았다.
- symbol = 고유한 식별자로 다른 값과 중복되지 않는 유일무이한 값.주로 이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용.
const symbol1= Symbol('id');
const symbol2= Symbol('id');
console.log(symbol1 === symbol2)
// false
만약 true로 하고 싶다면(form를 쓴다)
symbol for매서드는 키와 심벌 값의 쌍들이 저장되어 있는 전역 심벌 레지스트리에서 해당 키아ㅘ 일치하는 심벌 값을 검색한다. 검색에 성공하면 새로운 심벌값을 생성하지 않고 검색된 심벌값을 반환한다.
const gsymbol1= Symbol.for('id');
const gsymbol2= Symbol.for('id');
console.log(gsymbol1 === gsymbol2)
//true
추가로...
js의 특징 dynamic typing : 변수선언시 값의 type을 선언하지 않고 나중에 변경가능
text = '7' +5 ;
console.log(value${text}, type: ${typeof text});
//type = string
text = '8'+ '2';
console.log(value${text}, type: ${typeof text});
//type= number