개발(Web)/Web

[JavaScript] JS 기초 (1)

shinyelee 2021. 2. 2. 00:43

개요

자바스크립트 [JavaScript, JS] 객체기반 스크립트 프로그래밍 언어
HTML, CSS에서 만든 정적인 페이지를 동적으로 만듦
특징

C언어 기반의 문법 사용
오픈된 소스코드
다양한 라이브러리 제공(ex. jQuery, Ajax, JSON)
넷스케이프에서 개발한 스크립트 언어
HTML 문서 내부에 포함된 기능
웹 브라우저, 인터프리터 이용해 실행
(위에서 → 아래로, 순차적으로 실행)

참고

JSP [Java Server Pages] JAVA를 이용한 서버 스크립트 언어(한마디로 JAVA 확장판)
자바 vs 자바스크립트 서버에서 제공하는 언어 vs 클라이언트에서 받는 언어
자바-자바스크립트는 인도-인도네시아와 같음
(이름만 비슷하고 관계도 없는 아예 다른 언어)

같이 사용해 서로의 부담을 줄임

컴파일러 VS 인터프리터

컴파일러 [compiler] 자바 소스코드 → 기계어 변경(JVM) ⇒ 소스코드 분석 해석
인터프리터 [interpreter] 소스코드를 인터프리터가 바로 읽고 사용
(웹 브라우저에 포함돼 있음)

주석 종류

HTML 주석문 <!-- 내용 -->
JS 주석문 <script type="text/javascript">
//주석문 : 실행이 안 되는 코드로, //는 한 줄 주석
/*
화면에 출력 안 되기 때문에 주로 코드 설명, 테스트용
2줄 이상, 즉 블럭 주석 필요할 땐 슬래시(/)와 별(*) 이용
*/
</script>

001.html

입력 양식 설명
document.write(내용); 브라우저에 내용 표시
console.log(내용); 개발자도구(F12) 콘솔창에 내용 표시
alert(내용); 경고창에 내용 표시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
p {color: red;}
/* 주석 */
</style>
</head>
<body>
	<!-- 주석 -->
	<p id="one">hello world</p>
	<script>
	// 주석
	document.getElementById('one').innerHTML = 'paul<strong>lab<strong>'
	document.write('내용');
	window.alert('경고창');
	console.log('개발자도구(F12)-Console에 메시지 출력');
	</script>
</body>
</html>


 

변수

변수 [var, variable] 데이터를 저장하는 공간(메모리)
공간 하나에 데이터 하나만 저장할 수 있음
새로운 데이터가 들어오면 기존 데이터 덮어씀
undefined : 변수에 아무 값도 안 넣음
null : 변수에 빈 값을 넣음
변수 유형 문자형(string), 숫자형(number), 논리형(boolean)
변수 사용 1. 변수 선언(데이터 저장공간에 이름 붙이고 메모리 확보)
2. 변수 초기화(변수 선언하자마자 값 대입)3. 변수 사용
입력 양식 var 변수명;
var 변수명 = 값;
변수명 작성 1. 영문자, 숫자, 특수문자(_,$) 사용 가능2. 첫 글자는 무조건 대문자로 시작(소문자, 숫자 불가)3. 짧으면서 구체적인 단어로(코드는 나만 보는 것이 아님)4. 대소문자를 구분하며 여러 단어일 시 카멜표기법 사용5. 예약어 사용 불가(ex. if, for, while, switch, else, var, class)
카멜표기법 [camelCase] 변수명에 띄어쓰기 대신 대문자 이용해 단어 구분간헐적인 대문자 등장이 낙타 등처럼 보임
변수명 입력 양식 var dlwlrma_iu; (X)var dlwlrmaIu; (O)

참고

typeof 연산자 변수/데이터 타입을 알아낼 때 사용
입력 양식 document.write(typeof 변수/데이터);

예시

입력 출력 설명
document.write(typeof "123");
document.write("<br>");
document.write(typeof 123);
document.write("<br>");
document.write(typeof null);
문자는 string
숫자는 number
객체나 null은 object
value = "1000";
document.write("<br>");
document.write(typeof value);

value = 1000;
document.write("<br>");
document.write(typeof value);

var value = null;
document.write("<br>");
document.write(typeof value);
문자는 string
숫자는 number
객체나 null은 object

참고로

정의X 변수는 undefined
참/거짓은 boolean
함수는 function

002.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<script>
	var 변수하나 = 100;
	변수하나 = 200;
	document.write(변수하나 + 변수하나);
	// 100+200 아니고 200+200임
	// (변수를 처음에 100으로 정의했다가 나중에 200으로 바꾼 것으로 간주함)
	document.write('<br>');
	
	var 변수둘 = '200';
	document.write(변수둘 + 변수둘);
	// 200은 숫자(이백), '200'은 문자(이영영)임
	document.write('<br>');
	
	var name = 'shinyelee'
	document.write(name[0]);
	// shinyelee에서 첫번째(1이 아닌 0부터 시작) 문자 출력
	// -> s h i n y e l e e
	// -> 0 1 2 3 4 5 6 7 8
	</script>
</body>
</html>


산술연산자

+ 더하기(string+number=string이니 주의)
- 빼기(string도 number처럼 연산 되나, 오류 발생 가능성)
* 곱하기(string도 number처럼 연산 되나, 오류 발생 가능성)
/ 나누기(string도 number처럼 연산 되나, 오류 발생 가능성)
% 나머지(나눗셈 후 몫 말고 나머지)

대입연산자

대입연산자 [=] 변수에 데이터(값)을 저장하는 연산자
왼쪽 피연산자 값에 오른쪽 피연산자 값 대입
산술연산자와 다르게, 연산의 방향이 왼쪽 ← 오른쪽
입력 양식 A = B;

복합대입연산자/할당연산자

+= 왼쪽 값에 오른쪽 값 더함 → 왼쪽에 대입
-= 왼쪽 값에 오른쪽 값 뺌 → 왼쪽에 대입
*= 왼쪽 값에 오른쪽 값 곱함 → 왼쪽에 대입
/= 왼쪽 값에 오른쪽 값 나눔 → 왼쪽에 대입
%= 왼쪽 값에 오른쪽 값 나눈 나머지 → 왼쪽에 대입

예시(양쪽 수식은 같은 내용)

A += B;   ⇔   A = A + B;   (누적합)
A -= B;   ⇔   A = A - B;
A *= B;   ⇔   A = A * B;
A /= B;   ⇔   A = A / B;
A %= B;   ⇔   A = A % B;

003.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<script>
	var x, y, z;
	x = 3;
	y = 5;
	z = 7;
	
	// 더하기
	document.write(x + y);
	document.write('<br>');
	
	// 빼기
	document.write(x - y);
	document.write('<br>');
	
	// 곱하기
	document.write(x * y);
	document.write('<br>');
	
	// 나누기
	document.write(y / x);
	document.write('<br>');
	
	// 제곱
	document.write(x ** y);
	document.write('<br>');
	
	// 나눈 나머지
	document.write(y % x);
	document.write('<br>');
	
	// 1 증가
	x++;
	// 1 감소
	y--;
	document.write('x값=', x, ', y값=', y);
	document.write('<br>');
	
	// z*=3 은 z에 3 곱한다는 뜻
	</script>
</body>
</html>


비교연산자

> 변수(왼쪽) 값이 더 크면 참(초과)
>= 변수(왼쪽) 값이 더 크거나 같으면 참(이상)
< 변수(왼쪽) 값이 더 작으면 참(미만)
<= 변수(왼쪽) 값이 더 작거나 같으면 참(이하)
= 비교연산자가 아닌, 대입연산자
== 양쪽 값이 같으면 참
=== 양쪽 값과 데이터 타입이 같으면 참
!= 양쪽 값이 다르면 참
!== 양쪽 값과 데이터 타입이 다르면 참

참고

논리형 데이터 [boolean] 참(true), 거짓(false) 판별 데이터
0, null, undefine 값이 아닌 경우 항상 true 값을 돌려줌
0 값이 0
null 값이 없음 (의도적으로 빈 값 명시, 변수 초기화에 사용)데이터 형태 : object
undefined 값이 없음 (선언/정의/초기화 안 해 값이 할당되지 않은 변수)데이터 형태 : undefined
비교연산자 주어진 값이 서로 같은지/다른지, 큰지/작은지 계산함

예시

입력 출력 설명
document.write(Boolean(-20));
document.write("
");
document.write(Boolean(7.5));
document.write("
");
document.write(Boolean(12/13));
모든 숫자는 항상 true 출력
document.write(Boolean(0));
document.write("
");
document.write(Boolean(null));
document.write("
");
document.write(Boolean(undefined));
0, null, undefined는 false 출력

004.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<script>
	var x, y, z;
	x = 3;
	y = 5;
	z = '3';
	
	document.write(x > y);
	document.write('<br>');
	
	document.write(x >= y);
	document.write('<br>');
	
	document.write(x < y);
	document.write('<br>');
	
	document.write(x <= y);
	document.write('<br>');
	
	// 같음(생김새만 같으면 타입 노상관)
	document.write(x == z);
	document.write('<br>');
	
	// 다름
	document.write(x != y);
	document.write('<br>');

	// 존똑(데이터 타입도 동일해야 함)
	document.write(x === z);
	document.write('<br>');
	</script>
</body>
</html>


논리연산자

논리연산자 논리값(true, false)을 가지고 연산
종류 And [&&] 둘 다 참일 때 true, 그 외는 false 반환
Or [||] 둘 중 하나 이상 참일 때 true, 그 외는 false 반환
Not [!] true나 false를 반대로 바꿈

&&, || 논리표

변수/값 연산자
A B && ||
true true
거짓 false true
거짓 false true
거짓 거짓 false false

!=, !== 논리표

변수/값 연산자
A != 또는 !==
false
거짓 true

005.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<script>
	var x, y, z;
	x = 3;
	y = true; // 1
	z = false; // 0
	
	document.write(x && y); // and, *
	document.write('<br>');
	
	document.write(x || y); // or, +
	document.write('<br>');
	
	document.write(!y); // not, 반대
	document.write('<br>');
	
	</script>
</body>
</html>


006.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<script>
	function f(x, y) {
		var z;
		z = x + y;
		return z
	}
	document.write(f(3,6));
	</script>
</body>
</html>


007.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<script>
	var txt = 'shinyelee';
	
	// 문자열 길이
	document.write(txt.length);
	document.write('<br>');
	
	// 문자열 위치
	document.write(txt.indexOf('lee'));
	document.write('<br>');
	
	// 문자열 자르기
	document.write(txt.slice(0, 7));
	document.write('<br>');
	
	// 문자열 대치
	document.write(txt.replace('lee', 'kim'));
	document.write('<br>');
	
	// 대문자로 전환
	document.write(txt.toUpperCase());
	document.write('<br>');
	
	var num = 10;
	
	// 소수점 5자리까지 표기
	document.write(num.toFixed(5));
	document.write('<br>');
	
	// 숫자를 문자열로 바꿈
	document.write(num.toString());
	document.write('<br>');
	
	// 파이(π, 3.14웅앵)
	document.write(Math.PI);
	document.write('<br>');
	
	// 최댓값 구하기
	document.write(Math.max(10, 20, 30));
	document.write('<br>');
	
	// 무작위로 숫자 생성
	document.write(Math.random());
	document.write('<br>');
	</script>
</body>
</html>


008.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<script>
	var date = new Date();
	
	// 연월일시분초 full
	document.write(date);
	document.write('<br>');
	
	// 0  1  2 ... 11
	// 1월 2월 3월 ... 12월
	document.write(date.getMonth());
	document.write('<br>');
	
	// 0 1 2 3 4 5 6
	// 일  월  화  수  목  금  토
	document.write(date.getDay());
	document.write('<br>');
	
	// 날짜
	document.write(date.getDate());
	document.write('<br>');
	
	// 시
	document.write(date.getHours());
	document.write('<br>');
	</script>
</body>
</html>

나중에 수정한 이미지라 포스트한 기준 시각과 표시된 시각이 상이함


009.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<script>
	var l = [10, 20, 30, 40];
	// 여러개의 자료를 순서를 정해 저장할 때 배열 사용.
	
	document.write(l[2]);
	document.write('<br>');
	</script>
</body>
</html>


출처

반응형