



👉 f12눌러서 에러 확인
마음대로 쓰면
협업할 때 어디서문제가 발생했는지추측하기 힘들다.
표준코딩 스타일 따르자- 코드
들여쓰기를 잘하자- 세미콜론
;구분을 잘하자공백을 넣어 구분을 잘하자주석을 잘달자///**/<!---->식별자(변수명)에 맞게 지어라예약어를식별자로 쓰지말자

👉 구글의 자바스크립트 스타일 가이드
Java에서 기본적인 것은 했다. 조금 다른 것 위주로 배운다.
var(예약어) 변수명;
java처럼 일일이자료형을 써줄 필요 없이자동으로변환/추가된다.


👉 자동으로 바뀌는 것이 많고, 어떤게 문자열이고 숫자인지 어떻게 인식하는지 알고 있어야 한다.

👉 콘솔창에서도 확인이 가능하다



❗ 큰 따옴표 안엔 작은 따옴표로 표기한다
👉 실행은 됐지만 명령문이라 알 수 없는 자료형이다

자바스크립트의편리한 점이면서도약점인 부분은데이터 유형이 유연하다는 것이다. 변수의 데이터 유형이중간에 바뀔 수 있다는 것이다. 나이 계산 프로그램에서 프롬프트 창으로 사용자의 태어난 해를 입력 받았는데,입력받은 값은문자열이었지만 사칙연산에 사용된문자열은자동으로숫자형으로 변환된다.
스킵, 다 해봤고 다 아는 것
복합 대입 연산자와 같다
"나이는 " + age + "세 입니다."
java와 자료형 구분이 다르므로 약간 다른 것이 있다

👉 정확하게 자료형 까지 비교 하려면 연산자를 3개(!== ===) 써서 비교해야 한다.

👉 문자열 비교
||,&&,!
이미 알고 있다.
ifif~elseswitch(조건) ? true 일 때 실행할 명령 : false 일 때 실행할 명령





👉 취소 클릭해야 null 값이 들어간다

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var userNumber = prompt("숫자를 입력하세요");
if(userNumber !== null){
if(userNumber % 3 === 0) /*문자열을 넣었지만 자동으로 숫자형으로 바꿈*/
alert("3의 배수입니다."); /*한 줄은 { } 안 써도 된다.*/
else
alert("3의 배수가 아닙니다."); /*한 줄은 { } 안 써도 된다.*/
}
else
alert("입력이 취소됐습니다.") /*한 줄은 { } 안 써도 된다.*/
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body{
background-color: navy;
}
p{
color: wheat;
}
p b{
font-size: 2em;
color: yellow;
}
</style>
</head>
<body>
<script>
document.write("")
var session = prompt("관심 세션을 선택해 주세요. 1-마케팅, 2-개발, 3-디자인");
switch (session){
case "1" : document.write("<p>마케팅 세션은 <b>201호</b>에서 진행 됩니다.");
break;
case "2" : document.write("<p>개발 세션은 <b>203호</b>에서 진행 됩니다.");
break;
case "3" : document.write("<p>디자인 세션은 <b>205호</b>에서 진행 됩니다.");
break;
default: alert("잘못 입력했습니다.");
}
</script>
</body>
</html>
Int형으로 출력하려면paresInt( )함수를 이용하면 된다





<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var enterNum = prompt("입장객 수를 입력하세요.");
var onelineNum = prompt("한 줄에 몇 명씩 앉힐 것인지 입력하세요");
if(enterNum%onelineNum === 0){
document.write("총 " + parseInt(enterNum/onelineNum) + "줄 필요합니다.");
}
else{
document.write("총 " + parseInt(enterNum/onelineNum + 1) + "줄 필요합니다.");
}
</script>
</body>
</html>
이미 알고있다.
for- 중첩된
forwhilebreak,continue

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#container{
width: 100px;
height: 300px;
border: 1px solid black;
text-align: center;
padding: 10px;
margin: 10px;
float: left;
}
</style>
</head>
<body>
<script>
for (i = 1; i <= 9; i++) {
document.write("<div id = 'container'>");
document.write("<h2>" + i + "단</h2>" + "<br>");
for (j = 1; j <= 9; j++){
document.write(i + " x " + j + " = " + (i*j) + "<br>");
}
document.write("</div>");
}
</script>
</div>
</body>
</html>





<!DOCTYPE html>
<html>
<head>
<title>문제 1</title>
<style>
table{
border-collapse: collapse;
}
td{
padding: 5px;
border: 1px solid #ccc;
}
</style>
</head>
<body>
<script>
var hnumber = prompt("입장객은 몇 명인가요?");
var snumber = prompt("한 줄에 몇 명씩 앉습니까?");
var printNumber;
document.write("<h1>자리배치도</h1>")
if(hnumber % snumber == 0){
printNumber = parseInt(hnumber/snumber);
}
else{
printNumber = parseInt(hnumber/snumber) + 1;
}
document.write("<table>")
for(i = 0;i<printNumber;i++){ // 행
document.write("<tr>");
for(j = 1;j<=snumber;j++){ // 열
var temp = i*snumber+j;
if(hnumber<temp){
break;
}
document.write("<td> 좌석 "+temp+"</td>");
}
document.write("</tr>")
}
document.write("</table>")
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var num1 = prompt("알아볼 배수 입력");
var num2 = prompt("숫자 입력");
document.write("<h1>" + num1 + "의 배수일까 아닐까?" + "</h1>");
if(num2 % num1 ===0){
document.write("<p>" + num2 + "는 " + num1 + "의 배수입니다.")
}
else{
document.write("<p>" + num2 + "는 " + num1 + "의 배수가 아닙니다.")
}
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
p{
display: inline;
font-weight: bold;
font-size: 1.5em;
}
</style>
</head>
<body>
<script>
var num1 = prompt("알아볼 배수 입력");
var num2 = prompt("몇 까지의 " + num1 + "의 배수를 찾을까요?");
var count = "";
document.write("<h1>" + num1 + "의 배수찾기" + "</h1>");
for(i = 1; i <= num2; i++){
if(i % num1 ===0){
document.write("<p>" + i +" ,</p>")
count++;
}
}
document.write("<br>"+"<span style = 'color:red'>" +
"<p>" + num2 +" 까지의 " + num1+ " 의 배수의 개수 : "+ count +
"</span></p>");
</script>
</body>
</html>
java의method
void는 쓸 필요없이return이 필요하면 그냥 쓰면된다function name(a, b){ 명령; return a+b; }

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
function addNumber(){
var num1 = 5;
var num2 = 2;
alert("결과 값 : " + (num1 + num2));
}
addNumber();
</script>
</body>
</html>

👉 num1 , num2 는 지역 변수

👉 num1 은 지역 변수, num2는 전역 변수
❗ 함수 에서 var가 붙으면 지역 변수

👉 함수 밖인 var x 는 전역 변수

👉 num1 = 20; 덮어쓰기 된다.

❗ alert(num1);는 에러이다. var num1 = 5;로 이미 정의를 해놔서 지역변수이다.
상황에 따라 변수의 선언과 할당을 분리해서 선언 부분을 스코프의 가장 위쪽으로 끌어 올리는 것

👉 호이스팅 처럼 var예약어를 사용한 변수는 선언하기 전에 사용하면 오류를 발생 시킬 수 있다.

👉 java와는 다르게 에러가 안남
{ }안에서만 사용 할 수 있다

👉 let을 { } 안에 사용

👉 let을 { } 밖에 사용, 에러는 안나지만 이렇게 사용 하면 안된다!

👉 재선언 불가. 호이스팅이 없다
java의final과 같다. 한 번 선언하면 재할당 재선언 불가

- 전역 변수는 최소한으로 사용
var변수는 함수의 시작 부분에서 선언for문에서var변수 사용 자제ES6인 경우var보다let사용
아는 내용

❗ function multiple(a, b, c)
function multiple(a = 10, b, c)
function multiple(a, b = 5, c)
안됨!!! 👉 뒤에 변수는 채워줘야 함


<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
function calcSum(n){
let sum = 0;
for(let i = 1; i <= n; i++){
sum += i;
}
return sum;
}
var inputNumber = prompt("얼마까지 더할까요?");
if(inputNumber !== null){
document.write("1부터 " + inputNumber + "까지 더하면 " + calcSum(inputNumber));
}
else{
document.write("취소됐습니다.")
}
</script>
</body>
</html>
Node.js에서 엄청 나온다
정말 많이 쓴다
function(a, b){ 👉 이름이 없다. 익명 } var result = function(a, b){ return a+b; } result(10, 20); 👉 함수를 변수 처럼

👉 에러

👉 에러 X
일회용 함수. 한 번 돌리면 끝
function ( ){ 명령; } (function (num){ // 즉시 실행 함수 명령; }(5)) 👉 5를 넣어서 실행 됨


java의람다식(lambda)과 비슷
(매개변수) => { 함수 내용 }

👉 익명 함수. 쓰기 귀찮다

👉 화살표 함수. return도 귀찮다

👉 많이 줄어듦.




click: 사용자가HTML요소를 클릭할 때 이벤트 발생dbclik: 사용자가HTML요소를 더블클릭할 때 이벤트 발생mousedown: 사용자가 요소 위에서 마우스 버튼을 눌렀을 때 이벤트 발생mousemove: 사용자가 요소 위에서 마우스 포인터를 움직일 때 이벤트 발생mouseover: 마우스 포인터가 요소 위로 옮겨질 때 이벤트 발생mouseout: 마우스 포인터가 요소를 벗어날 때 이벤트 발생mouseup: 사용자가 요소 위에 놓인 마우스 버튼에서 손을 뗄 때 이벤트 발생
keydown: 사용자가 키를 누르는 동안 이벤트 발생keypress: 사용자가 키를 눌렀을 때 이벤트 발생keyup: 사용자가 키에서 손을 뗄 때 이벤트 발생
abort: 문서가 완전히 로딩되기 전에 불러오기를 멈췄을 때 이벤트 발생error: 문서가 정확히 로딩되지 않았을 때 이벤트 발생load: 문서 로딩이 끝나면 이벤트 발생resize: 문서 화면 크기가 바뀌었을 때 이벤트 발생scroll: 문서 화면이 스크롤되었을 때 이벤트 발생unload: 문서에서 벗어날 때 이벤트 발생
blur: 폼 요소에 포커스를 잃었을 때 이벤틑 발생- ⚡
change: 목록이나 체크 상태 등이 변경되면 이벤트 발생.<input>,<select>,<textarea>태그에서 사용⚡focus: 폼 요소에서 포커스가 놓였을 때 이벤트 발생.<label>,<select>,<textarea>,<button>태그에서 사용reset: 폼이 리셋됐을 때 이벤트 발생submit:submit버튼을 클릭했을 때 이벤트 발생
<태그 on이벤트명 = "함수명">



<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body{
margin: 20px auto;
}
#result{
width: 500px;
height: 400px;
margin: 30px auto ;
border: 1px solid black;
border-radius: 20px;
}
ul{
list-style: none;
width: 500px;
margin: 0 auto;
}
ul li{
display: inline-block;
width: 120px;
border: 1px solid black;
text-align: center;
}
a:link, a:visited{
color: black;
text-decoration: none;
}
</style>
</head>
<body>
<ul>
<li><a href = "#" onclick="changeBG('red')">Red</a></li>
<li><a href = "#" onclick="changeBG('orange')">Orange</a></li>
<li><a href = "#" onclick="changeBG('yellow')">Yellow</a></li>
</ul>
<div id = "result"></div>
<script>
function changeBG(color){
var result = document.querySelector("#result");
result.style.backgroundColor = color;
}
</script>
</body>
</html>


❗ 내 답
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.detail{
width: 400px;
height: 300px;
line-height: 1.7em;
}
.over{
position: absolute;
top : 270px;
left: 20px;
background-color: rgba(255, 255, 255, 0.5);
}
#close{
background-color: rgba(255, 255, 255, 0.5);
}
#open{
background-color: rgba(255, 255, 255, 0.5);
}
#desc{
display: none;
}
</style>
</head>
<body>
<img src = "images/등심붓꽃.jpg" alt ="">
<button class = "over" id = "open" onclick="showDetail()">상세 설명 보기</button>
<div id = "desc" class="detail">
<h4>등심붓꽃</h4>
<p>
북아메리카 원산으로 각지에서 관상초로 흔히 심고 있는 귀화 식물이다.
길가나 잔디밭에서 흔히 볼 수 있다. 아주 작은 씨앗을 무수히 많이 가지고
있는데 바람을 이용해 씨앗들을 날려보내거나, 뿌리줄기를 통해 동일한
개체들을 많이 만들어 냄으로써 번식한다.
</p>
<button id = "close" onclick="hideDetail()">상세 설명 닫기</button>
</div>
<script>
function showDetail(){
document.querySelector('#desc').style.display = "block";
document.querySelector('#open').style.display = "none";
}
function hideDetail(){
document.querySelector('#desc').style.display = "none";
document.querySelector('#open').style.display = "block";
}
</script>
</body>
</html>
❗ 강사님 답
<!DOCTYPE html>
<html lang="ko">
<head>
<title>문제 6(등심붓꽃)</title>
<style>
#dsbgm{
margin: 20px auto;
width: 400px;
border: 1px solid hotpink;
padding: 20px;
}
#dsbg{
position: relative;
width: 400px;
height: auto;
}
#open{
position: absolute;
left: 40px;
bottom: 30px;
}
#desc{
border: 1px solid red;
background-color: yellow;
display: none;
width: 400px;
}
</style>
</head>
<body>
<div id="dsbgm">
<div id="dsbg">
<img src="images/flower.jpg">
<button class="over" id="open">상세 설명 보기</button>
</div>
<div id="desc" class="detail">
<h4>등심붓꽃</h4>
<p>북아메리카 원산으로 각지에서 관상초로 흔히 심고 있는 귀화식물이다.
길가나 잔디밭에서 흔히 볼 수 있다. 아주 작은 씨앗을 무수히 많이 가지고
있는데 바람을 이용해 씨앗들을 날려보내거나, 뿌리줄기를 통해 동일한 개체들을 많이 만들어 냄으로써 번식한다.
</p>
<button id="close">상세 설명 닫기</button>
</div>
</div>
<script>
document.querySelector("#open").onclick = showDetail;
document.querySelector("#close").onclick = function (){
document.querySelector("#desc").style.display = "none";
document.querySelector("#open").style.display = "block";
};
function showDetail(){
document.querySelector("#desc").style.display = "block";
document.querySelector("#open").style.display = "none";
}
</script>
</body>
</html>
DOM: 문서 객체 모델,<img>, document 태그 들
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.detail{
width: 400px;
height: 300px;
line-height: 1.7em;
}
.over{
position: absolute;
top : 270px;
left: 20px;
background-color: rgba(255, 255, 255, 0.5);
}
#close{
background-color: rgba(255, 255, 255, 0.5);
}
#open{
background-color: rgba(255, 255, 255, 0.5);
}
#desc{
display: none;
}
</style>
</head>
<body>
<img src = "images/등심붓꽃.jpg" alt ="">
<button class = "over" id = "open">상세 설명 보기</button>
<div id = "desc" class="detail">
<h4>등심붓꽃</h4>
<p>
북아메리카 원산으로 각지에서 관상초로 흔히 심고 있는 귀화 식물이다.
길가나 잔디밭에서 흔히 볼 수 있다. 아주 작은 씨앗을 무수히 많이 가지고
있는데 바람을 이용해 씨앗들을 날려보내거나, 뿌리줄기를 통해 동일한
개체들을 많이 만들어 냄으로써 번식한다.
</p>
<button id = "close">상세 설명 닫기</button>
</div>
<script>
document.querySelector("#open").onclick = showDetail;
document.querySelector("#close").onclick = hideDetail;
function showDetail(){
document.querySelector('#desc').style.display = "block";
document.querySelector('#open').style.display = "none";
}
function hideDetail(){
document.querySelector('#desc').style.display = "none";
document.querySelector('#open').style.display = "block";
}
</script>
</body>
</html>
document.querySelector("#open").onclick = showDetail;
document.querySelector("#close").onclick = hideDetail;
👉 이런 식으로 바꿔 쓸 수 있다
java와 같다
new 객체명


👉 java와 다르게 배열에 어떤 자료형이든 넣을 수 있다. 배열을 감쌀 때 { } 아니고 [ ] 이다.
다음 날에 예제 하나씩 다 해볼 예정