Javascript part.1
Chanpter 별로 많이 다뤄본 부분은 간략하게 요점만, 중요한 부분은 상세히 설명하며 넘어갈 예정 🔥🔥🔥
Java랑 Javascript는 아무런 상관이 없다. Car 와 Carpet이 다른것처럼, Java만 공유한다고 같은게 아니자나!!!!(갑자기 부부의 세계 이태오가 생각나는건 무엇..?앗 그만그만 본론으로 돌아가자'🤦♀️)
프론트엔드 개발자로서 뗄레야 뗄수 없는 언어가 바로 JavaScript!
JavaScript가 바로 정적인 웹페이지를 동적으로 만들어 줄 수 있게 해준다.(물론 css 애니메이션으로 어느정도 구현은 가능하지만 넘어서서, 로그인정보 넘겨주기나 서버와 대화하는 그런 의미로서도 이해가 가능함)
-기본적인 자바스크립트의 약속어(Reserved Words)
는 아래와 같다 약속어 이기 때문에 내가 약속어로된 이름의 function을 임의로 만들수 없다
- alert();//웹페이지에 뜨는 경고창, 알림장에 사용
- console.log();//브라우저의 개발자 도구에서 () 내용을 출력 하게 하는 것
- ... 더 많고 이후에 사용될 예정
통일된
룰👌로 같이 작성해주는 것이 중요하다!const 변수이름 = 값;
var : 버전이 업그레이드 되면서 이제 사용 안하는 변수
: 특.히. scoping rule을 어김🤦♀️, var는 함수 호출하기 전에 정의해도 불러오고 해서 혼선 있을수 있음! (var는 hoisting 됨)
: 해당부분의 이유에 대해서는 잘다룬 블로그가 있어 공유함
let : 사용법은 var와 같으나 hoisting 되지 않는다.let은 변수값을 수정가능
✅하다.
const : 변수값을 영원히 수정할 수 업다
❌
let money;
console.log(money);
money="$4";
console.log(money); // 이렇게 하면 $4가 출력된다
const joanneKim = "나이키"
const jojoKim= "나이키" // 이렇게 jojo와 joanne은 같이 나이키를 신을 수는 있다.
const joanneKim="나이키"
const joanneKim="아디다스"//joanne이 나이키와 아디다스 신발을 같이 신을 수는 없다.
함수는 특별한 목적의 작업을 수행하도록 만들어진 '독립적인 블록'이다.
간단하게 함수의 어원에 대해 생각하면
함수 (상자 함, 수 수) 즉 상자🎁에 수를 넣어 새로의 수가 되게 한다는것을 의미한다.
호출, 즉 명하여 불러내다 라는 뜻이니 "***함수님 나오세요~" 하는것과 같다
아래 joanneKim이라는 함수를 만들어 줬다면 불러줘야 나오는 법.
function joanneKim () {
return "Please enter"
}
joanneKim(); //함수이름(); 이것이 호출하는 구조이다
꽃 🌹
김춘수
내가 그의 이름을 불러주기 전에는
그는 다만
하나의 몸짓에 지나지 않았다.
내가 그의 이름을 불러주었을 때
그는 나에게로 와서
꽃이 되었다.
김춘수 시인의 꽃의 일부분을 발췌해 보았다.😊
웬 갑자기 시? 라고 하겠지만 잘 생각해보자!
함수를 정의만 한 상태
에서는 just 함수에 불과 했으나
함수를 호출해주니/실행해주니
함수가 무엇인지 보여주게 된다.
즉 3.3에서 본 예제에서
-----------------------
function joanneKim () { // 이 하늘색 점선 사이의 내용이 '함수정의'
return "Please enter"
}
------------------------
joanneKim(); //이 실선 아래 부분이 '함수의 실행(호출)'
함수는 정의 하고 호출해주면 실행되는데, 실행을 하려면 함수 안에서 실행되면 이걸 보여주세요
🤞 하는 return 값이 있어야 한다.
함수를 열심히 만들었다 한들, 실행되면 보여주세요 라는 return 값을 주지 않으면 실행하더라도 그 함수는 undefined
라는 값을 반환한다. 즉 'define되지 않은 함수야~ 다시 알려줘!!🤔' 라고 말하는 것 이다.
return은 직접 return "이걸리턴해";
으로 명명 하기도 하고 return의 특징을 가진 console.log("이걸보여줘");
도 가능하다.
const joanneKim () {
return "I'm hangry 247!"
}
let joanneStatus = joanneKim();
//함수의 반환값을 joanneStatus의 변수에 넣어주면?
console.log(joanneStatus);
//console.log에서 joanneStatus변수 값으로도 확인 가능!✅
console.log(joanneKim());
//console.log에서 값처럼 확인 가능!✅
이제 함수에 값을 넣어 함수가 실행될때 값을 함수에 실행시켜 출력하는 법을 보려고 한다.
이 말이 어려울수 있어서 정말정말 간단히 소개된 블로그 글이 있어서 소개한다! parameter와 argument를 재미있게 소개한 블로그
쉽게 정리하면, 함수를 레시피와 비교했는데 우리가 잘 아는 파스타🍝 만들기
로 생각해보면 된다!
아래 코드에 보면 function boilWater(water,pasta,pot)
에서 water,pasta,pot이 매개변수(parameter), 그리고 이 함수를 호출할 때boilWater(30,"spaghetti",120);
의 30,spaghetti, 120 을 인자(argument) 라고 한다.
function boilWater(water, pasta, pot) {
console.log("We are going to boil"+water+
"ounces of water with"+pasta+
"in a"+pot+"ounce pot"); }
boilWater(30,"spaghetti",120);
Math Expressions에서 중요한 부분은 grouping
과 올바른++ & --
사용법 이다.
JavaScript에서의 연산도 일반 수학 사칙연산의 순서 괄호 > 제곱 > 곱하기, 나누기 > 더하기, 빼기 (➗✖➕➖) 와 동일하다.
그러므로 다양한 연산이 있을 경우 꼭 꼭 꼭 먼저 해결해야 하는 부분을 괄호안에 넣을 것😉
// Increment
let a = 1;
console.log(a++); // 1이 출력됨
console.log(a); // 2이 출력됨
// Decrement
let b = 1;
console.log(b--); // 1이 출력됨
console.log(b); // 0이 출력됨
console.log(a++) 나 console.log(a--)
를 했지만 출력값이 여전히 1 인 이유는 ++나--를 원하는 값 뒤에 입력하면, 먼저 해당 값을 출력하고 이후에 해당 값을 출력할때 변한 값이 적용되기 때문이다!// Increment
let a = 1;
console.log(++a); // 2이 출력됨
console.log(a); // 2이 출력됨
// Decrement
let b = 1;
console.log(--b); // 0이 출력됨
console.log(b); // 0이 출력됨
console.log(++a) 나 console.log(--a)
을 입력하면 먼저 해당 값적용 된 부분을 return 한다는 의미이기 때문에 바로 적용이 된다! 잘 모르겠다면 잘 설명된 해당 블로그도 참조하면 좋겠다! (최소 참조쟁이...😂)
"만약에 너가~(조건문) 한다면 ~ (이런코드 실행)할거야" 💁🏼♀️를 의미하는 말그대로 if 문이라고 볼수 있으며 구조는 아래와 같다.
if ▶ else if ▶ else
의 순서로 이거면 이거, 이것도 아니면 저거 저거도 아닌 나머지는 다!
의 구조로 이해할 수 있다.
자세한 구조는 아래 코드를 찬찬히 읽어보자!
let joanneHeight = 164;
if(joanneHeight>170) {
alert("Wow, she is actually taller than I thought !");
}
else if (joanneHeight>160) {
alert("Yea I thought she would be aroud that height!");
}
else {
alert("Really? I think she is not that short though!");
}
let isThisTrue = 3=="3"
isThisTrue
를 입력하면 true
가 출력된다. 즉 숫자3과 문자열 3은 같다고 받아들여 지는것 ! 뭐 type까지 따지지 말고 거 거의 비슷하면 맞다고 칩시다! 😅하는 아재
같은 동등연산자사용을 안하는게 좋다!
❌let isThisReallyTrue = 3 ==="3"
false
가 출력된다.꼰대아재
이다 type이 저건 number 이건 string 인데 어떻게 같아요!? 🤨라고 말하는 꼰대아재
let joanneWeight = 54;
if(joanneWeight !== 48) {
alert("어머! 48키로 아니에요?");
}
let seafood = prompt("해산물 좋아하시나요?");
let spicy = prompt("매운음식 좋아하시나요?");
if (seafood === "네" && spicy === "네") {
alert("아구찜을 추천합니다.");
} else {
alert("아구찜은 입맛에 안맞으실것 같네요");
}
grouping은 필수! 순서는 선택!
🎶🎵🎤if (age > 18 || age < 65 && nationality === "한국")
해당 if문에서 ||을 기준으로 나눈다면 18세가 넘거나 65세이하의 한국인
을 보는 것이고 && 을 기준으로 나눈다면 18세초과하거나 65세는미만
이면서 한국인
을 보는것인데 답은 "전자" 이다.
Why? 컴퓨터 문서는 항상 왼쪽에서 오른쪽 으로 읽기 때문에 저렇게만 되어 있다면 우리가 찾고자 하는것은 18세가 넘거나 65세이하의 한국인
이다.
만약 && 을 기준으로 나누고 싶다면? 즉 18세넘고65세미만 이면서 한국인
을 찾고 싶다면 GROUPING GROUPING GROUPING 을 해주도록 하자
이렇게!
if ((age > 18 || age < 65) && nationality === "한국")
(사실 내가 몰라서 정리하는건 안비밀...)
👍👍