JavaScript 정의와 역사
- 프론트엔드 동작 -- *
- 백엔드 동작
전통적으로 자바스크립트는 jsp 와 마찬가지로 웹프로그래밍 언어이며 동적인 Html 을 생성하는 것이 목적이다.
초기에 자바스크립트는 jsp 와 달리 실행되는 위치가 웹브라우저이기 때문에 소스코드가 모두 노출된다. 따라서 웹 초기에는 이러한 자바스크립트를 그다지 중요하게 여기지 않았다. 그러나 현재는 사용자의 요청에 의해서 다른 문서로 이동이 될 때 문서 전체를 모두 변경시키는 풀 브라우징보다는 문서의 일부분만 변경시키는 동작이 상당하다. 이 때 서버로부터 필요한 데이터만 받아와서 동적인 html 을 생성할 수 있다.
이것은 모두 자바스크립트로 표현할 수 있다.
또 2007년 쯤 크롬 브라우저가 발표되면서 웹브라우저가 아닌 곳에서도 자바 스크립트를 동작시킬 수 있는 기술인 node.js 가 만들어진다. 웹 브라우저가 아닌 곳에서도 동작하는 이 node.js 를 이용하면 톰캣같은 무거운 웹어플리케이션 서버를 별도로 두지 않고 서버를 가동시킬 수 있다. 그래서 현재는 자바스크립트가 굉장히 중요하게 여겨진다.
또 서버로부터 데이터를 받아와서 동적인 html 을 생성하는 기술로서는 자바스크립트를 기반으로 한 jquery, react, angular, VueJS 등이 중요하게 여겨지고 있다.
JavaScript 와 Java 언어가 이름이 유사하지만 전혀 상관이 없다. 그러나 둥 다 C언어를 기반으로 만들어졌기 떄문에 문법이 60% 정도 비슷한 부분이 있다.
기본 문법
- 명령어 끝에 세미콜론을 붙여도 되고 안붙여도 된다. (자바보다는 유연하다)
- 자바와 같은 의미의 예약어를 사용할 수 있다.
- break, if, else, for, ...
- 식별자 : 변수이름 또는 함수, 클래스 이름과 같은 이름을 정해주는 것을 뜻한다.
- 자바 식별자 규칙과 같은 규칙을 따른다.
- 주석문 : 자바와 같은 방법으로 주석문을 표현할 수 있다.
- 웹브라우저에 경고창 띄우기
- alert("메세지내용");
변수의 사용
- 자바의 경우는 변수를 선언하고 값을 저장할 수 있다. 그러나 자바스크립트는 따로 변수를 선언하는 명령이 없다. 따로 선언하는 문장 필요없이 값을 바로 저장할 수 있다.
오류의 처리 방법
- 크롬 > 개발자도구 > console 에서 오류 메세지를 확인하고 고친다.
var의 사용
- 이러이러한 변수를 사용하겠습니다. 라고 명시하기 위해 사용하는 키워드
- 변수 선언에 사용됨.
타이머 설정
setIntercal(함수, 시간);
- 정해진 시간 간격마다 함수를 동작시킨다. 시간은 밀리세컨드 단위를 받는다.
선택문과 반복문
- if, switch, for 문 등을 자바와 같은 방법으로 사용할 수 있다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
function aaa(){
var today = new Date();
var year = today.getFullYear();
var month = today.getMonth();
var startDate = new Date(year, month, 1);
var endDate = new Date(year, month+1, 0);
var last = endDate.getDate();
var yoil = startDate.getDay();
var str = "<h2>";
str += year + "년 " + (month+1)+"월";
str += "</h2>";
str += "<table>";
str += "<thead><tr><th>일</th><th>월</th><th>화</th><th>수</th><th>목</th><th>금</th><th>토</th></tr></thead>"
str += "<tr>";
//첫 날 요일만큼 빈칸 출력
for(var i=0; i<yoil; i++){
str += "<td></td>";
}
for(var i=1; i<=last;i++){
str += "<td>"+i+"</td>";
if((i+yoil) % 7 == 0){
str += "</tr><tr>"
}
}
str += "</tr>";
str += "</table>";
document.getElementById("tableWrap").innerHTML = str;
}
//html 문서를 모두 다 읽어들인 다음에
//우리가 작성하게 되는 모든 자바스크립트 코드는 이 속에 넣도록 해야한다.
window.onload = function(){
aaa();
}
</script>
<style>
h2{
text-align: center;
}
table{
width:100%;
border:1px solid #DDD;
border-spacing: 0;
border-collapse: collapse;
}
th{
background:#F0F0F6;
}
th, td{
padding:4px;
border:1px solid #DDD;
text-align: center;
}
tr th:first-child, tr td:first-child{
font-weight: bold;
color:rgb(192, 0, 0);
}
tr th:nth-child(7), tr td:nth-child(7){
font-weight: bold;
color:rgb(0, 0, 189);
}
.today{
background:#c3ccff;
font-weight: bold;
}
</style>
</head>
<body>
<div id="tableWrap"></div>
</body>
</html>
배열
- 대괄호 안에 배열값을 나열한다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var data = ["김예은", "홍석영", "유요한", "조영흔", "이재원"];
function pro(){
var str ="<ul>";
for(i=0; i<data.length;i++){
str += "<li>"+data[i]+"</li>";
}
str+= "</ul>";
document.getElementById("list").innerHTML=str;
}
</script>
<style>
button{
min-width:100px;
padding:4px 8px;
border-radius: 20px;
background:#000;
color:#FFF;
font-weight: bold;
font-size:14px;
}
.list ul{
padding:0;
border-top: 2px solid #000;
}
.list ul li{
padding:8px 0;
border-bottom:1px solid #ddd;
list-style:none;
}
</style>
</head>
<body>
<h2>저기어때</h2>
<div class="list" id="list"></div>
<button onclick="pro()">출력</button>
</body>
</html>
함수(function)
- 어떤 기능을 수행하기 위한 서로 관련있는 명령어들의 집합
- 함수 생성방법
- 선언적 함수
- function 함수 이름 (){}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
window.onload = function(){
function pro(){
var today = new Date();
document.getElementById("output").innerHTML=today;
}
setInterval(pro, 1000);
}
</script>
</head>
<body>
현재 시간 : <span id="output"></span>
</body>
</html>
- 익명함수(이름 없는 함수)
- function(){}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
window.onload = function(){
setInterval(function(){
var today = new Date();
document.getElementById("output").innerHTML=today;
}, 1000);
}
</script>
</head>
<body>
현재 시간 : <span id="output"></span>
</body>
</html>
콜백함수
- 어떤 함수를 호출할 때 그 함수가 완료된 다음에 바로 또 다른 함수를 동작시키고자 할 때가 있다.
- 함수 호출 시 그 함수가 끝나고 동작할 함수를 매개변수로 전달한다. 이 함수를 콜백 함수라고 한다.
- 대체로 익명함수로 많이 사용함.
function pro(){}
function end(){}
pro(end);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
let add = function (arr, k){
let tot = 0;
for(i = 0; i<arr.length; i++){
tot+= arr[i];
}
alert("배열의 총합 : " + tot);
k();
}
let data = [10, 20, 30, 40, 50];
add(data, function(){
alert("작업완료");
});
/*
let end = function(){
alert("작업완료");
}
add(data, end);
*/
</script>
</head>
<body>
</body>
</html>
- 콜백 지옥: callback 안에 callback 안에 callback 이 끊임없이 있는 것
'Kosta DevOps 과정 280기' 카테고리의 다른 글
div, span와 시멘틱 태그 (2) | 2024.07.05 |
---|