일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 노마드코더
- Hooks
- 논리연산자
- Props
- JavaScript
- github
- js
- 클래스
- 자바스트립트
- 캡슐화
- 패스트캠퍼스
- webdevelopment
- 웹개발
- 상속
- 프론트엔드
- typeScript
- 투두앱만들기
- OOP
- frontend
- 자바스크립트
- 부트캠프
- REACT
- CSS
- 불변성
- 추상화
- 타입스크립트
- 리액트
- 객체지향프로그래밍
- Zustand
- Fetch
- Today
- Total
connecting dots
JS 1회차 | 식, 값, 문, 실행(run), 변수를 만드는 방법, 메커니즘, 객체의 특징, 함수를 만드는 방법 본문
JS 1회차 | 식, 값, 문, 실행(run), 변수를 만드는 방법, 메커니즘, 객체의 특징, 함수를 만드는 방법
dearsuhyun 2024. 6. 15. 23:21참고 사이트
Javascript Playground (Sandbox, Repl)
Javascript Playground (Sandbox, Repl)
playcode.io
식
1 + 1 (식)
1 (값)
= 2(값)
==> 식 --> 결국 값이 된다 !
값
값의 종류
1. 기본형 값 유형, 원시형
123 // number_숫자
// Bigint(엄청 큰 숫자를 다룰 때)
'123' // string_문자열
"123" // string
`123` // string
true, false // boolean
null // null_아무것도 없다는 의미
undefined // undefined
Symbol // Symbol
2. Object
{object}
값만 있을 때 단점
- 의미를 표현할 수 없음 (ex. 참은 참인데 무슨 의미 ??) --> 식별자(값에 의미를 부여하는 방법)
// 식별자_age, displayAge
let age = 52
let displayAge = function() {}
class Person {}
// class 식별자
식별자 naming 규칙
- 예약어(reserved word)를 쓸 수 없다 (ex. let, const ..)
- 공백을 포함할 수 없음
- 숫자로 시작할 수 없음
- 기호의 사용이 제한적임
문(statement)
= (할당한다, 옮긴다, 연결한다)
실행(run)
let name = '김민태'
let age = 52
console.log(name)
console.log(age)
// 김민태
// 52
// --> 실행되었다
실행이 뭘까 ?
자바스크립트를 이해하는 소프트웨어가 실행하는 것
소스코드(text)는 컴퓨터가 이해할 수 없는 구조임. 컴퓨터가 이해할 수 있는 구조로 바꿔야 함 (변경)
--> 실행(run): 메모리에 변경된 코드를 저장해두고 CPU가 한줄 한줄 꺼내서 한번에 하나씩 실행을 시키는 것임
cf. 적재(feche): 메모리에 변경 코드를 옮겨두는 것
cf. 저장(save): 변경된 것을 다시 하드디스크에 저장하는 것
js 소스코드는 서버(컴퓨터) 하드디스크에 있음.
인터넷(network)를 이용해서 연결.
web server(브라우저가 요청하는 html, css, js를 로컬 하드디스크에서 네트워크를 통해 전송해주는 소프트웨어)
브라우저에서 실행되는 환경(run time)과 서버에 있는 자바스크립트 환경(source time)은 다를 수 있음
--> 타입스크립트에서 많이 사용
식과 문
그것의 결과로 값이 나오는지 안나오는지 유무 확인
- 값은 무조건 식이다 ! (ex. '김민태')
- 값이 나오지 않는건 문이다 ! (ex. =, if)
- 문의 역할: 실행의 흐름을 바꿈
let myName = '김민태'
let age = 52
// age는 52로 '평가된다'
// '=': 대입문
// if문
if (age > 40){
console.log(myName + '늙었어')
} else {
console.log(myName + '안 늙었어')
}
변수를 만드는 방법
let b = 10 // 변수
const c = 10 // 상수, 값을 재할당하지 못함
var a = 10 // 거의 안 씀
변수를 아예 안 쓰면 좋음 (?)
let myAge = 80 // 상태(변한다는 뜻)
const dieAge = 80 // 데이터
const result = 1 + 20 // 상수로만 이루어짐
const result2 = 1 + myAge // 결과 예측 불가
모든 값은 상수 ! (바꿀 수 없음) 그래서 간접적인 방식으로 변수가 필요한 것임 (변수는 바꿀 수 있으니까)
상수로만 이루어진 코드는 결과가 늘 같음
버그: 코드가 의도대로 작동하지 않는 것
메커니즘
let myAge = 80;
const dieAge = 80;
// 문장이 끝났다는 뜻으로 ';'를 씀
// 함수정의문
function my() {
const a = 10
const b = 30
if (a) {
}
}; // 문으로 작성
const my2 = function() {
let a = 10
}; // 값 = 식, ; 필요
let a = 10
let b = 10
let c // undefined
let k = 30
// let k
// k = 30 --> 축약형
let x = 20, y = 30, z = 40
object
let kimMinTae {
name: 'mintae',
age: 52,
height: 176,
bloodType: "B"
};
// 값을 묶는 역할
중첩 가능
let kimMinTae {
name: 'mintae',
age: 52,
height: {
head: 20,
body: 150,
foot: 5
}
bloodType: "B"
};
// 읽기
console.log(kimMinTae.height.head) // 특정 값 출력 가능
객체의 동적 바인딩
const myOject = {
id: 'ibare',
['age number']: 30
};
myObject.name = 'person' // 객체의 동적 바인딩
console.log(myObject) // {id: 'ibare', name: 'person'}
console.log(myObject['name']) // console.log(myObject.name)
// 속성 명을 데이터로 입력받게, 코드와 데이터를 분리해줌으로써
// 프로그램 바깥에서 데이터를 열어 제어할 수 있는 방법을 제시 (유연한 소프트웨어)
myObject['age number'] = 40;
cobsole.log(myObject) // {id: 'ibare', name: 'person', age number: 40}
함수를 만드는 방법
let a = 20;
let b = 30;
let result = a * b;
let c = 220;
let d = 530;
let result2 = c * d;
console.log(result2);
// 계산식이 같음 (중복코드)
function add(a, b) {
return = a * b;
}
let a = 20;
let b = 30;
let result = add(a, b)
let c = 220;
let d = 530;
let result2 = add(c, d)
함수의 확장
function add(a, b) {
return = a * b;
}
let myAdd = add; // 값
let a = 20;
let b = 30;
let result = add(a, b) + 20; // 함수
let c = 220;
let d = 530;
let k = c;
let result2 = myAdd(c, d) // (k, d)랑 같음
'Live Class > DevCamp' 카테고리의 다른 글
JS 3회차 6/4 | this, 동기와 비동기, event system, class, closure (0) | 2024.06.16 |
---|---|
JS 6회차 | 토이 프로젝트 설명, import/export, axis, express, app.get, SQL (0) | 2024.06.16 |
HTML/CSS 3회차 | CSS 기초, flex, grid, 미디어 쿼리, CSS 네이밍 방법론, css framework (1) | 2024.06.15 |
HTML/CSS 2회차 | CSS 기초, box model, flexbox (0) | 2024.06.14 |
HTML/CSS 1회차 | html 기초, DOM (1) | 2024.06.14 |