[스파르타코딩클럽/앱개발 종합반] 1주차_Javascript 기초 문법
2021. 12. 23. 19:05ㆍPROJECT/스파르타코딩클럽_앱개발종합반
728x90
반응형
console.log("Hello World!");
- 변수
let으로 변수를 선언
let num = 20
num = 'Bob'
let a = 1
let b = 2
a+b //3
a/b //0.5
let first = 'Bob'
let last = 'Lee'
first+last //'BobLee'
first+' '+last //'Bob Lee'
first+a //Bob1
변수명은 쉽게 알아볼 수 있게 쓰는 게 중요하고,
다른 특수문자 또는 띄워쓰기는 불가능하다.
let first_name = 'bob' // snake case
let firstName = 'bob' //camel case
let value_box = '값'
value_box = '변경한 값';
console.log(value_box) //콘솔엔 '변경한 값'이 찍힌다.
const value_fix = '값';
value_fix = '변경한 값';
console.log(value_fix) //const로 선언한 변수엔 새로운 값을 재할당할 수 없다!
코드상에서 쉽게 변하면 안되는 고정 값을 관리할 땐 const로 선언하면 good
- 리스트(배열) & 딕셔너리(객체)
리스트 : 순서를 지켜서 가지고 있는 형태
리스트를 배열(Array)이라고도 부른다.
let a_list = []
let b_list = [1,2,'hey',3]
b_list[1] // 2 출력
b_list[2] // 'hey' 출력
// 리스트에 요소 넣기
b_list.push('헤이')
b_list // [1,2,'hey',3,'헤이']를 출력
// 리스트의 길이 구하기
b_list.length // 5를 출력
딕셔너리 : 키(key)-밸류(value) 값의 묶음
딕셔너리는 객체로도 불린다.
let a_dict = {}
let b_dict = {'name':'Bob', 'age':21}
b_dict['name'] //'Bob'출력
b_dict['age'] //21 출력
b_dict['height'] = 180 //딕셔너리에 키:밸류 넣기
b_dict // {'name':'Bob', 'age':21, height: 180}을 출력
리스트와 딕셔너리의 조합
names = [{'name':'bob', 'age':20},{'name':'carry', 'age':38}]
// names[0]['name']의 값은? 'bob'
// names[1]['name']의 값은? 'carry'
new_name = {'name':'john', 'age':7}
names.push(new_name)
// names의 값은? [{'name':'bob','age':20},{'name':'carry','age':38},{'name':'john','age':7}]
// names[2]['name']의 값은? 'john'
딕셔너리의 자주쓰는 또 다른 표현
let b_dict = {'name':'Bob', 'age':21}
//bob 이름을 꺼낼땐 두 가지 방식으로 값을 꺼낼 수 있다.
b_dict['name']
b_dict.name
딕셔너리가 필요한 이유 :
순서를 표시할 수 있고, 정보를 묶을 수 있다.
딕셔너리를 활용한다면 고객 별로 정보를 묶을 수 있고,
순서를 나타내기 위해 리스트를 사용하면 보기에도 깔끔해지고, 다루기도 쉬움.
새로운 고객이 더 오더라도 .push함수를 이용해 간단하게 대응할 수 있다.
- JSON 데이터 구조
리스트와 딕셔너리가 복합적으로 존재하는 데이터 구조

큰 딕셔너리 값 안에 딕셔너리 또는 리스트가 얽혀있는 모습
- 자바스크립트 기본 제공 함수
let a = 20
let b = 7
a % b = 6 //나눗셈 나머지 구하고 싶은 경우
let myname = 'abcdefg'
myname.toUpperCase() // ABCDEFG : 모든 알파벳을 대문자로 바꾸고 싶은 경우
// 특정 문자로 문자열을 나누고 싶은 경우 1
let myemail = 'sparta@gmail.com'
let result = myemail.split('@') // ['sparta', 'gmail.com']
result[0] // sparta
result[1] // gmail.com
let result2 = result[1].split('.') // ['gmail', 'com']
result2[0] // gmail
result2[1] // com
myemail.split('@')[1].split('.')[0] // gmail
// 특정 문자로 나누고 싶은 경우 2
let txt = '서울시-마포구-망원동'
let names = txt.split('-'); // ['서울시', '마포구', '망원동']
// 특정 문자로 합치고 싶은 경우
let result = names.join('>'); // '서울시>마포구>망원동'
- 함수
// 만들기
function 함수이름(필요한 변수들) {
내릴 명령들을 순차적으로 작성
}
// 사용하기
함수이름(필요한 변수들);
// 예시
// 두 숫자를 입력받으면 더한 결과를 돌려주는 함수
function sum(num1, num2) {
console.log('num1: 1', num1, ',num 2: ', num2);
//return으로 값을 돌려주는, 뱉는 구조로 변수에 값을 전달할 수도 있다.
return num1 + num2;
}
sum(3,5); //8
sum(4, -1); //3
let result = sum(10,10)
console.log(result) // 20
//또다른 함수 선언 방식
let a = function(){
console.log("리터럴 방식 이라고 한다.");
}
a()
- 조건문
function is_adult(age){
if(age > 20){
alert('성인이에요')
} else {
alert('청소년이에요')
}
}
is_adult(25)
// if, else if, else if, else if else
function is_adult(age){
if(age>20){
alert('성인이에요')
} else if (age>10) {
alert('청소년이에요')
} else {
alert ('10살 이하!')
}
}
is_adult(12)
// AND조건과 OR조건
// AND조건
function is_adult(age, sex){
if (age > 20 && sex =='여'){
alert('성인 여성')
} else if (age > 20 && sex == '남'){
alert('성인 남성')
} else {
alert('청소년이에요')
}
}
// OR조건
function is_adult(age, sex){
if (age > 65 || age < 10) {
alert('탑승하실 수 없습니다')
} else if (age > 20 && sex == '여'){
alert('성인 여성')
} else if (age > 20 && sex == '남'){
alert('성인 남성')
} else {
alert('청소년이에요')
}
}
is_adult(25,'남')
- 반복문
// 예를 들어 0부터 99까지 출력해야 하는 상황이라면
console.log(0)
console.log(1)
console.log(2)
console.log(3)
console.log(4)
console.log(5)
...
console.log(99)
// 이렇게 쓰기엔 무리
// 반복문 이용!
for (let i = 0; i < 100; i++) {
console.log(i)
}
let people = ['철수','영희','민수','형준','기남','동희']
for (let i = 0; i < people.length; i++){
console.log(people[i])
}
let scores = [
{'name':'철수', 'score':90},
{'name':'영희', 'score':85},
{'name':'민수', 'score':70},
{'name':'형준', 'score':50},
{'name':'기남', 'score':68},
{'name':'동희', 'score':30},
]
for (let i = 0; i < scores.length; i++){
console.log(scores[i]);
}
// 이렇게 하면 리스트 내의 딕셔너리를 하나씩 출력할 수 있고,
for (let i = 0; i < scores.length; i++) {
if (scores[i]['scores']<70) {
console.log(scores[i]['name']);
}
}
// 이렇게 하면 점수가 70점 미만인 사람들의 이름만 출력할 수 있다.
// 0부터 n-1까지 더하는 함수를 만들고 싶다면?
function get_sum(n) {
let sum = 0
for (let i = 0; i < n; i++) {
sum += i;
}
return sum
}
let result = get_sum(10); // return 결과인 sum이 result에 저장
console.log(result) //45를 출력
// 배열에서 특정 원소 갯수 구하기
// 다음에서 '딸기'는 몇 개일까?
let fruit_list = ['사과','감','감','배','포도','포도','딸기','포도','감','수박','딸기']
let count = 0;
for (let i = 0; i<fruit_list.length; i++{
let fruit = fruit_list[i];
if (fruit == '딸기'){
count += 1;
}
}
console.log(count);
// 서울특별시 미세먼지 지수가 40보다 작은 구 찾기
for (let i = 0; i < mise_list.length; i++){
let mise=mise_list[i];
if (mise["INDEX_MVL"] < 40) {
let gu_name = mise["MSRSTE_NM"];
let gu_mise = mise["IDEX_MVL"];
console.log("40보다 작은 구: " + gu_name + "," + gu_mise);
}
}
- 앱개발에 자주 쓰이는 Javascript
함수를 더 짧게 표현하는 화살표 함수(Arrow Function)
// 기존 방식
let a = function() {
console.log("function");
}
a();
// 최신 방식
let a = () => {
console.log("arrow function");
}
a();
딕셔너리 키와 값을 빠르게 꺼내기 - 비구조 할당
// 객체
let blog = {
owner : "noah",
url : "noahlogs.tistory.com",
getPost() {
console.log("ES6 문법 정리");
}
};
// 기존 할당 방식
let owner = blog.owner
let getPost = blog.getPost()
// 비구조 할당 방식
let {owner, getPost } = blog;
// 함수에서 비구조 할당 방식으로 전달된 딕셔너리 값 꺼내기
let blogFunction = ({owner,url,getPost}) => {
console.log(owner)
console.log(url)
console.log(getPost())
}
blogFunction(blog)
자바스크립트 안에서 줄바꿈 자유롭게 하기 - 리터럴
const id = "myId";
const url = `http://noahlog.tistory.com/login/${id}`;
const message = "줄바꿈을 하려면 \n 기호를 써야 했지만"
const message = `줄바꿈도 마음대로
사용 가능.`
딕셔너리를 짧게 만들어보기 - 객체 리터럴
var name = "스파르타";
var job = "developer";
var user = {
name,
job
}
console.log(user); // {name: "스파르타", job: "developer"}
map - 반복문의 또 다른 방식
map은 리스트의 길이값을 몰라도 되며, for와는 반대로 리스트안에서 몇 번째에 있는 값인지 순서를 알려준다.
let numbers = [1,2,3,4,5,6,7];
numbers.map((value,i) => {
console.log(value,i)
})
'PROJECT > 스파르타코딩클럽_앱개발종합반' 카테고리의 다른 글
[스파르타코딩클럽/앱개발종합반] 5주차_배포 (0) | 2022.02.13 |
---|---|
[스파르타코딩클럽/앱개발종합반] 4주차_API, 파이어베이스(firebase) (0) | 2022.01.10 |
[스파르타코딩클럽/앱개발 종합반] 3주차_앱 다운 앱을 위한 기능 적용 (0) | 2022.01.02 |
[스파르타코딩클럽/앱개발 종합반] 2주차_메인화면 만들기 (0) | 2021.12.26 |
react-native 화면 기본 틀 (0) | 2021.12.20 |