잘 모르는 "간단한" 자바스크립트 문법 5가지>
이거는 객체죠 , 객체리터럴이라고도 부르죠
{
let a = '3';
}
console.log(a); // 이렇게 하면 레퍼런스에러죠 밖에서 찾았으니까..
그리고
중요한 점은
a는 블록스코프 니까 실행후 메모리에서 사라져 버리죠.
그리고
let a = '5';
{
let a = '3';
}
console.log(a);
이렇게하면
위에 a가 나오겠죠 5..
이런게
응용된게
if(){} 문
fo(){}r문
function() {}
while(){}
등등
이죠
블록스코프요
================================
소괄호는,,
즉시 실행 함수 할떄도 쓰죠
(function () {}())
(function () {})()
그리고
화살표함수도
(() => {})();
됩니다.
그리고
화살표함수에서
() => {}
이거 대신에
소괄호로 감쌀수 있어요
() => ()
이렇게
즉,
(x, y) => {
return x + y;
}
이거를
(x, y) => x + y;
이렇게 줄일 수 있죠,
줄일때,
(x, y) =>( x + y);
이렇게 구별하기 쉽기 위해서 소괄호로 감쌀 수 있어요.
뭐,,
객체를 리턴할다 할때도,
const a = (x, y) => ({x, y});
이렇게 소괄호 안에 객체 작성해서 쓸 수 있고,
뭐 그냥
const a = (x, y) => {x, y};
이렇게 소괄호 빼고 작성해도 문제는 없습니다.
map 쓸때 객체 리턴할때 소괄호로 감싸야 하는거도
이런거죠.
쓰임세가...
참고로
소괄호는 무제한으로 쓸수있긴 합니다. 짝만 맞으면,,,
그리고
const a = (x, y) => {
return (1, 2);
}
이런거 처음보는분도 계실텐데
이거 됩니다.
그리고
a(1,2) 호출하면
// 2
가 나옵니다
왜?
리턴값을 소괄호로 감싸면,
마지막 인자가 리턴 됩니다.
앞에꺼는 그냥 실행되고 지나가는겁니다.
그래서 2만 찍히게 되죠.
(1,2,3,4,5,6);
이렇게 해도
6만 나옵니다.
이게 콤마 연산자라는건데
항상 마지막 것이 나옵니다.
잘 안쓰긴하죠.ㅋㅋㅋ
그리고
소괄호의 또다른 쓰임세는,,,,
const a = 1;
a.toString();
// '1'
문자열로 바껴 나옵니다.
그리고
'hello'.toUpperCase();
//'HELLO'
대문자로 나오죠.
1.toString();
하면 에러가 나죠.
이럴때
소괄호를 씁니다.
(1).toString();
//'1'
에러없이 잘 됩니다.
소괄호가 문제 해결사 입니다.
ㅎㅎ
왜냐면
자바스크립트 엔진이
소괄호 단위로 구별을 해주기 때문에,
뭐가 문법적으로 잘 안된다 싶으면
소괄호 감싸주면 될때가,,,? 많습니다.
명확하게 구분을 지어주는게 소괄호임.
const h = 'hello' : 'cat' , 'hi' : 'zerocho' , 1: 3, true: false};
for (const k in h) {
console.log(k);
}
//
1
hello
hi
true
키를 뽑아낸거죠.
for in
타입스크립트에서 in 이 나옵니다.
'hi' in h
//true
for 안에 안들어있어도 , 즉 for 없이 저렇게 작성해도 된다.
if 안에도 저렇게 넣을 수 있습니다.
if ('hi' in h) {
true
}
//true
또다른예)
const dog = { bark: '멍멍' };
const cat = { meow: '야옹' };
if ('bark' in dog ) {
//강아지
}else{
//강아지 아님
}
====================================