일주일 동안 복습하다가 겨우 수업 시작 전날 과제를 제출했었다.
뼛속까지 문과사람이라 함수 이런 거 듣기만 해도 닭살이 돋는다. 코드컴뱃 게임을 해보면서 느낀게 용어에 대한 적응도 적응이지만 수학적인? 사고도 어느정도는 필요한 것 같다. ( 나는 아니.. 😂)
그래도 어떻게 하나 ㅋㅋㅋ 이걸 배워야 동적인 다이나믹한 웹 사이트를 만들 수 있다는 데 뭐..
코딩 실습을 위해 진도를 스피디 하게 나갔기 때문에, 이렇게 복습해 보면서 모르는 부분이 듬성듬성 더 생겨나 버렸다. 일단 욕심을 버리고 연습 문제를 혼자 풀어냈다는 것에 만족한다.
: 2) 버튼에 함수를 연결하기. 연결하고자 하는 데는 버튼 쪽이니까 그 쪽에다가 자바스크립트 언어를 넣는 것이다. 버튼을 누르면 함수가 호출된다.function hey(){
alert('안녕!');
}'안녕!' 이라는 알람을 띄우는 기능의 함수.
hey는 함수의 이름이며 기능이나 역할을 짐작케 한다.
alert 는 어떤 기능을 하는지 알 수 있고 '안녕!'은 기능이 표시하는 것을 가리킨다.
<button onclick="hey()" type="button" class="btn btn-primary">기사저장</button>
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 ( python 방식 )
let firstName = 'bob' // camel case ( javascript 방식 )
나는 이것들을 순서가 중요하게 묶어 놓겠다 할 때 사용한다.
let aList = ['수박','딸기','참외']
여기서 나는 수박의 값을 불러오고 싶다면, aList[1];
어 이렇게 하니까 '딸기' 가 나온다. aList[1] = '딸기'
컴퓨터는 순서를 셀 때, 0 부터 센다!
그럼 다시 수박의 값을 불러오려면?
aList[0] = '수박'
그런데 갑자기 나는 '포도' 를 저 aList 에 넣고 싶어!! 구글에 '자바스크립트 배열 추가' 를 검색해 보니까 push 라는 단어가 나온다.
aList.push('포도') ------> 오, 들어갔다! aList = ['수박','딸기','참외','포도']
aList.length 를 하면 결과값 4를 낸다.
aList.push(bList)------> 결과값 6이 아닌 5를 낸다. bList 자체를 하나로 본다.
aList = ['수박','딸기','참외','포도',['철수','영희']];
aList[4] = ['철수','영희'];
저기서 난 철수만 꺼내서 값을 보고 싶은데? 할 땐..
aList[4][0] = ['철수'];
결론 : 리스트 안에 리스트를 넣을 때는 '리스트'가 들어감. 즉 묶음으로써 들어간다는 의미!
아래 예시를 보도록 하자.
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}을 출력
키와 밸류가 쌍으로 되어 있고, 왼쪽을 호출 했을 때 오른쪽을 돌려주는 것 (반대로는 불가)
중괄호와 키, 밸류 사이의 : 틀리지 않게 주의!!
aList 에 b_dict를 넣어보자
aList = ['수박','딸기','참외','포도',['철수','영희']];
aList.push(b_dict);
aList = ['수박','딸기','참외','포도',['철수','영희'],{'name':'Bob','age':21}];
여기서 bob의 값을 꺼내려면??
aList = [5]['name'];
'Bob'
let age = 17; ( age 를 17 로 선언, 17을 age 에 넣어주었다 )
let is_adult = age > 18; ( 두번째 선언, is_adult 를 18 보다 높은 age 로 넣음 )
is_adult ------> enter ------> 값은 false 가 나온다.
let a = 20
let b = 7
a % b = 6
let myname = 'spartacodingclub'
myname.toUpperCase() // SPARTACODINGCLUB
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 -> 간단하게 쓸 수도 있다!
let result = names.join('>'); // '서울시>마포구>망원동' (즉, 문자열 바꾸기!)
함수의 정의
: 어떤 기능을 정의해서 반복적으로 사용하기 위한 것.
고려할 것은 항상 입력값을 넣고 그에 대한 출력값을 어떤 형식으로 할지 정하면 된다고 함.
함수의 기본 형태
function name(입력값) {
return 입력값 + 10 ;
}
name(10) // 결과 20
// 입력값에 대한 출력값은 return으로 받아준다.
함수의 다른 예시
function f(x) {
return 3*x+2;
}
y = f(5)
console.log(y) ------> 콘솔에 괄호 안의 값, y 를 출력해라 라는 뜻.
function sum(a, b) {
return a + b; -------------> 뭔가 실행하라는 것, 둘을 더한 값을 돌려줘라 라는 뜻.
}
let result = sum(1,2);------>함수식에 의해서 결과값이 달라짐에 따라 다양한 값을 낼 수 있다.
result = 3
연습
function sum(a,b) {
alert('더하기를 시작하지:' + a + ' + ' + b);
return a + b;
}
console.log(sum(x, y)); --------> 값이 콘솔창에 표시되면서 경고 창이 나온다.
기본
if ( 조건식 ) {
명령문 e.g) console.log(' ');
}
여기서 조건식이 true이면 if문 안의 명령문을 실행하고 false이면 if문 안의 명령문을 무시한다.
조건이 여러개인 상황이 있을 수 있으므로 그러한 경우에는 else if와 else를 사용하면 된다.
if( 조건식 ) {
명령문
} else if( 조건식 ){
명령문
} else{
명령문
}
각각 if와 else if의 조건을 따져보고 해당하는 것이 없다면 else에 있는 명령문을 실행하게 된다. else if는 갯수 제한이 없다.
// 함수를 정의하기
function check_adult(person) {
if (person['age'] > 20){
return true;
} else {
return false;
}
}
// 함수를 사용하기
let person = {'name':'bob','age':24}
let result = check_adult(person);
result // true
// 나이가 20보다 크고 30보다 작은 경우 true
function check_adult(person) {
if (person['age'] > 20 && person['age'] < 30){
return true;
} else {
return false;
}
}
// 나이가 20보다 작거나, 30보다 크면 true
function check_adult(person) {
if (person['age'] < 20 || person['age'] > 30){
return true;
} else {
return false;
}
}
콘솔창에 일일이 0부터 99까지 console.log(0)...(99); 까지 찍을 수 없는 법이다. 반복문을 왜 쓰는가? 수많은 반복적인 기능을 자동화 하는데 있지 않을까?
for (시작 ; 끝 ; 실행내용) {
실행에 따른 출력값
}
그럼 반복문으로 0부터 99까지 콘솔에 출력하게끔 해보자. 단 세줄로 끝난다.
for (let i = 0; i < 100; i++) {
console.log(i)
}
기본 공식이라 생각하면 된다.
i = 0 이 가지는 의미는 i가 0 부터 출발할 거다 라는 의미이고, i < 100 은 i가 어디까지 가나?? i가 100보다 작은데 까지만 (99까지) 갈거다.
그리고 i++ 이것은 i를 1씩 증가시켜준다는 것을 의미한다. 만약 2씩 증가 시키고 싶다면, i = i + 2 (아직 줄여서 표시하는게 낯설다) 이렇게 하면 짝수를 찍게 될 것이다.
for 문에서
for (1. 시작조건; 2. 반복조건; 3. 더하기) {
4. 매번실행
}
1 -> 2체크하고 -> (괜찮으면) -> 4 -> 3
-> 2체크하고 -> (괜찮으면) -> 4 -> 3
-> 2체크하고 -> (괜찮으면) -> 4 -> 3
-> 2체크하고 -> (괜찮으면) -> 4 -> 3
와 같은 순서로 실행된다.
i가 증가하다가 반복조건에 맞지 않으면, 반복을 종료하고 빠져나온다.
반복문은 단순히 숫자를 찍어내는 형식보다도 배열(리스트)이나 딕셔너리와 결합된 형태로 쓰인다.
배열 내의 사람들을 하나씩 출력하기.
let people = ['철수','영희','민수','형준','기남','동희']
for (let i = 0 ; i < people.length ; i++) {
console.log(people[i])
}
리스트 내의 딕셔너리['name'],['score']를 하나씩 출력하기
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]);
}
만약 영희를 출력하고 싶다면, console.log(scores[1]['name']) 이 되겠지!
점수가 70점 미만인 사람들의 이름만 출력하기
for (let i = 0 ; i < scores.length ; i++) {
if (scores[i]['score'] < 70) {
console.log(scores[i]['name']);
}
}
- 오류를 일으킨 부분
1) 전체 합계의 기본값을 0으로 선언하는 부분을 반복되는 for 문 안에 집어넣고 돌렸다.
2) 더해서 반복만 하면 되는데 여기에서 if문을 넣고 () 안에 뭘 넣어야 되나 고민했다.
3) totalSum 의 n 값은 함수에서 임의의 n 이다.
- 오류를 일으킨 부분
1) for 문 작성에서 괄호를 빼먹었다.
2) console.log(guName, guMise); 를 for 문 바깥에 두었다.
3) 인간은 같은 실수를 반복한다.