① 선언 : 실행 컨텍스트에 변수 객체를 등록
② 초기화 : undefined로 초기화한 등록된 변수를 위해 메모리에 공간을 확보
③ 할당 : 초기화된 변수에 실제 값을 할당
① 정수, 소수점을 저장하는 int형
② 아주 큰 숫자를 저장하는 BigInt형
③ 문자열을 저장하는 string형
④ 논리값(true/false) boolean형
⑤ 값이 할당되지 않음을 나타내는 독립 자료형 undefined
⑥ 값이 존재하지 않음을 나타내는 독립 자료형 null
⑦ 복잡한 자료구조를 저장하는 객체형
⑧ 고유 식별자를 만드는 Symbol형
: key로 구분된 다양한 데이터의 집합하고, 복잡한 구조의 데이터를 저장한다.
: 코드들을 묶어놓은 블럭으로 행동을 할 수 있는 객체
function cat() {
console.log('perl');
}
let cat = function() {
console.log('perl');
}
let cat2 = () => {
console.log('perl2');
}
: 함수를 값처럼 전달할 때, 인수로 넘겨주고 전달한 함수를 나중에 필요할 때 호출해서 사용하는 함수
const playWithCat = (cat, action) => {
action(cat);
}
const useBall = (cat) => {
alert(cat+"과 공으로 놀아줍니다.");
}
//playWithCat 함수에 넘겨주는 useBall 함수가 콜백 함수
playWithCat("perl", useBall);
: 자바스크립트의 객체는 자신의 부모 객체의 원형과 연결되어 있어 property나 메소드를 상속받아 사용할 수 있는 부모 객체
import React from "react";
const PostList = () => {
return (
<React.Fragment>
postList
</React.Fragment>
);
}
export default PostList;
import './App.css';
import React from "react";
import {BrowserRouter, Route} from "react-router-dom";
import PostList from "../pages/PostList";
function App() {
return (
<React.Fragment>
<BrowserRouter>
<Route path="/" exact component={PostList}/>
</BrowserRouter>
</React.Fragment>
);
}
export default App;
Post.defaultProps = {
user_info: {
user_name: "mean0",
user_profile: "https://mean0images.s3.ap-northeast-2.amazonaws.com/4.jpeg",
},
image_url: "https://mean0images.s3.ap-northeast-2.amazonaws.com/4.jpeg",
contents: "고양이네요!",
comment_cnt: 10,
insert_dt: "2021-02-27 10:00:00",
};
const GridBox = styled.div`
width: ${(props) => props.width};
height: 100%;
box-sizing: border-box;
${(props) => (props.padding ? `padding: ${props.padding};` : "")}
${(props) => (props.margin ? `margin: ${props.margin};` : "")}
${(props) => (props.bg ? `background-color: ${props.bg};` : "")}
${(props) => props.is_flex
? `display: flex; align-items: center; justify-content: space-between; `
: ""}
`;
const Image = (props) => {
if(shape === 'circle'){
return(
<ImageCircle {...styles}></ImageCircle>
)
}
if(shape === 'rectangle'){
return(
<AspectOutter>
<AspectInner {...styles}></AspectInner>
</AspectOutter>
)
}
}
const AspectOutter = styled.div`
width: 100%;
min-width: 250px;
`;
const AspectInner = styled.div`
position: relative;
padding-top: 75%;
overflow: hidden;
background-image: url("${(props) => props.src}");
background-size: cover;
`;
const ImageCircle = styled.div`
--size: ${(props) => props.size}px;
width: var(--size);
height: var(--size);
border-radius: var(--size);
background-image: url("${(props) => props.src}");
background-size: cover;
margin: 4px;
`;
const P = styled.p`
color: ${(props) => props.color};
font-size: ${(props) => props.size};
font-weight: ${(props) => (props.bold)? '600' : '400'};
`;
import Grid from './Grid';
import Image from './Image';
import Text from './Text';
export { Grid, Image, Text };
import { Grid, Image, Text } from '../elements';