Learn!!
- 데이터 타입 확인(typeof)
- 연산자
- 조건문
- 반복문
- 형변환
- 함수(화살표, 즉시실행)
- 호이스팅
typeof : 자바스크립트의 데이터의 타입을 확인하는 키워드 console.log(typeof 'Hello world!'); // string
console.log(typeof 123); // number
console.log(typeof true); // boolean
console.log(typeof undefined); // undefined
console.log(typeof null); // object
console.log(typeof {}); // object
console.log(typeof []); // object
typeof 를 통해 데이터 타입을 확인할수도 있지만 위와 같이 null, {}, [] 가 모두 object로 결과값이 나오는것을 확인 할 수 있다.function getType(data){
return Object.prototype.toString.call(data).slice(8, -1)
}
console.log(getType(123)) // Number
console.log(getType(false)) // Boolean
console.log(getType(null)) // Null
console.log(getType({})) // Object
console.log(getType([])) // Array
+, -, *, /, %(나머지값), **(제곱) +=, -=, *=, /=,%/let a = 2;
// a = a + 1
a += 1 ;
console.log(a); // 3
| 연산자 | 뜻 | 예제 | 결과 |
|---|---|---|---|
| == | 값이 같음 | a == b | a와 b의 값이 같으면 true, 그외에는 false |
| ! = | 값이 다름 | a ! = b | a와 b의 값이 다르면 true, 그외에는 false |
| === | 값과 타입이 같음 | a === b | a와 b의 값과 타입 모두 같으면 true, 아니면 false |
| ! == | 값과 타입이 다름 | a ! == b | a와 b의 값과 타입 모두 다르면 true, 아니면 false |
| < | 작음 | a < b | a가 b보다 작으면 true, 아니면 false |
| > | 큼 | a > b | a가 b보다 크면 true, 아니면 false |
| < = | 작거나 같음 | a < = b | a가 b보다 작거나 같으면 true, 아니면 false |
| > = | 크거나 같음 | a > = b | a가 b보다 크거나 같으면 true, 아니면 false |
| 연산자 | 뜻 | 예제 | 결과 |
|---|---|---|---|
| && | 논리곱 | a && b | a와 b가 모두 true일때 true |
| ll | 논리합 | a ll b | a와 b중 하나라도 true면 true, 모두가 false면 false |
| ! | 부정 | ! a | a가 true면 false, false면 true |
let num = 100;
num%2===0 ? console.log('짝수') : console.log('홀수');
if(조건) { }
if(조건) { } else { }
if(조건1) { } else if (조건 2) { } else { }
let luckyNum=20;
switch (luckyNum) {
// 10과 20에 같은 조건을 걸고 싶을때 case10의 조건과 break 생략 가능하다
case 10:
case 20: console.log('당첨!TV');
break; // 조건을 만족했을때 구문을 탈출하기 위해서
case 30: console.log('당첨!에어프라이어');
break;
default: console.log('꽝 다음기회에');
}
for(시작조건; 종료조건; 변화조건){}for(let i =1; i<5; i++){
console.log(i);
}
// 결과값: 1~4까지 출력됨
while(조건){ }let i = 1;
while(i<=50){
if(i%2===0 && i%7==0) console.log(i);
i++;
}
// 결과값 : 14, 28, 42
let i = 50;
do{
console.log('문장반복출력');
i++;
}while(i<=10)
const a = 1;
const b = '1';
console.log(a == b); // true
== 는 동등 비교 연산자로 type은 달라도 값만 같다면 true를 반환하게 된다. 이 과정에서 형 변환이 일어나게 되며 따라서 의도치않게 서로 다른 값이 같은 값을 반환할 수 있으므로 === 연산자를 사용하는것을 권장한다.Truthy(참 값은 값)
- true, {}, [], 1, 2, 'false', -12, '3.13' ...
Falsy(거짓 같은 값)
- false, '', null, undefined, 0, -0, NaN
- 원래 if문 안의 값이 false라면 무시되어야하지만 조건이 'false' 라면 false 문자열은 참의 값을 가지기 때문에 if 조건문이 실행되게 되며 이것은 형변환이라 한다.
if('false') { console.log(123); }
화살표 함수
() => {} vs function () {})- 중괄호와 return 키워드를 생략 가능
const doubleArrow = (x) => x*2;- 단 , 실행문 부분을 return을 생략한채로 중괄호로 감싹게 되면 실행이 불가하다. 따라서 중괄호 안에서 특정 값을 반환하려면
return을 사용해야함.const double = function(x){ return x * 2; } console.log('double: ', double(7));const doubleArrow = (x) => { return x * 2; } console.log('doubleArrow: ', doubleArrow(7));
즉시실행함수(IIFE)
- 즉시실행함수 사용시에는 함수가 끝난 후
;명시해줄것- 아래와 같이 두가지 방법으로 작성 가능하다.
(x)()(x())const a = 7 (function(){ console.log(a*2) })();(function(){ console.log(a*2) }());
콜백함수(Callback)
- 함수의 인수로 사용되는 함수
- 아래의 코드와 같이 timeout() 함수를 호출할때 하나의 익명함수를 인수로 사용했다.
- 그 인수는
cb라는 매개변수로 들어가게 되고 내가 실행을 원하는곳에서 호출하여 함수를 실행한다.- 따라서 아래의 코드는 3초가 지난뒤
honeybadger!가 먼저 출력되고 바로 그 뒤에Done!이 출력되게 된다.// setTimeout(함수, 시간) function timeout(cb){ setTimeout(() => { console.log('honeybadger!') cb() }, 3000) } timeout(() => { console.log('Done!') })
const a = 7;
double();
function double(){
console.log(a * 2);
}