Javascript

[Javascript] 자바스크립트란 / 변수 / 배열 / 조건문 / 반복문 / this

sian han 2022. 4. 25. 16:49

HTML = 구조

CSS = 표현

Javascript = 동작처리

 

 

 

※ 자바스크립트 : 

 - 객체지향언어 – 실세계의 사물(객체)을 모델링해서 이를 프로그래 밍에 적용한 것

 -  HTML문서에 <script> 태그를 이용하여 자바스크립트 프로그램을 직접삽입

 - 오라클과 넷스케이프에서 공동으로 개발한 클라이언트쪽 스크립트 언어

 - 웹브라우저 내에서만 돌아가는 스크립트언어

         ㄴ 웹브라우저의 구성요소 : html문서 처리엔진 , 자바스크립트엔진

 

 

 

웹스크립트언어

 - 바로바로 컴파일과정없이 보여주는 것 , 자바 - class같은 실행파일이 만들어지지않음

 - 인터프리터언어의 형태

       ㄴ 사용자의 요청이 있을 때마다 각 언어 해석기에 의해 프로그램이 실행

           컴파일 과정 없이 그대로 웹 브라우저로 실행

 

클라이언트 스크립트

  - 실행위치가 클라이언트의 웹브라우저인 스크립트 언어

  - 브라우저에 의해 해석되어 실행됨

 

 

 

 

▶ 자바스크립트 동작원리

 - [1] html문서엔진이 <script> 태그를 만나면

   [2] 자바스크립트엔진 호출해서 코드의 실행지시

   [3] 자바스크립트엔진이 <script> 태그 내의 코드를 실행함

 - 브라우저는 문서의 끝까지 위의방식으로 태그를 해석하여 출력하며, 사용자의 이벤트가 발생하면

    그에 상응하는 이벤트 핸들러를 실행시킴

 

 

 자바스크립트 특징

  - 변수자료형을 선언하지 않고도 사용할 수 있음

  - 운영체제( 윈도우, 유닉스, 리눅스 ) 에 제한없이 사용할 수 있음

  - 소스코드가 노출되므로 보안유지가 어려움

  - 한정된 객체와 메서드

 

 

 

 자바스크립트 동작하기

 [1] <script> ~ </script> 태그를 이용

   - 자바스크립트 프로그램을 <script> 태그 안에 기술

   - 위치 : 주로 자바 스크립트 함수는 <head>태그 사이에 정의, 함수 호출은 <body>태그 내에서 함

<HTML>
<HEAD>
  <script type="text/JavaScript">
  <!--document.write("<h2>안녕하세요</h2>");-->
  </script>
</HEAD>
<BODY>
  <h1>html문서 - script 태그 이용</h1>
</BODY>
</HTML>

· document.write() = system.out.println()

   - document : html 문서를 의미하는 객체

   - write : document 객체의 메서드 - ()안의 태그를 html 문서에 써라 ! 

 

 

 

[2] 외부 자바스크립트 불러오기

  - 내용이 많으면 자바스크립트파일을 외부에 별도로 만들어놓고, 이를 html문서에 불러서 실행

<script type=“text/javascript“ src=“파일명”>
</script>
<script type="text/javascript" src="../js/test1.js" charset="utf-8">
</script>

 

 

[3] html 태그의 EventHandler를 자바스크립트 코드로 표현하여 동작

[4] 자바스크립트 코드를 URL로 사용

<body>
	//html 태그 내부임
	<input type = "button" value ="배경색 변경" onclick = "document.bgColor = 'skyblue'"><br>
	<a href = "http://www.naver.com" // **[3] 
	onmouseover = "document.bgColor ='pink'"
	onmouseout="document.bgColor=''">naver</a><br>
	<hr>
	<a href = "#" onclick="alert('안녕!')">메시지띄우기</a> // **[4]
	<script type="text/javascript"> 
	document.write ("<h3>body태그 내의 자바스크립트코드 ! </h3>");
	</script>
</body>

bt배경색변경 = onclick 시 bgcolor 가 skyblue 로 변경

a태그 naver = mouseover 시 bgcolor 가 pink로 변경

                   mouseout 시 bhcolor 가 none ' ' 으로 변경

a태그 메시지띄우기 = onclick 시 안녕 alert 띄워짐

 

 

 


 

※ 변수

 - 변수의 type을 정의하지 않아도 코드를 실행할때 자동으로 type이 결정된다

 - js 에는 자료형이랄게 따로 없어서 type 이라고 부르는 것 같던데

 

 

▶ 선언 

  - 선언만 하고 할당안할경우 : undefined

var a;

 

 할당

  - 선언없이 할당만 해서 사용가능

a=10;

 

 선언과 할당 (초기화)

 var a=5, b

 

 출력

  - 선언한적도, 할당한적도 없는 변수 냅다 출력시 : error

    - error 가 나면 그 뒷부분이 실행되지 않는다. error는 F12 console 에서 확인 가능하다

document.write("a="+a+"<br>");

  - js 에서는 태그를 "" 안에 넣어서 사용하는 것 같음

 

 

 

 

 

▷ 문자열과 숫자 (type)

 - 문자열은 작은 따옴표(') 또는 큰 따옴표(")를 이용하여 정의

 - 숫자.length = undefined, 문자.length = 문자의길이

 - type 에 따라 기본적으로 제공되는 기능들을 내장함수라고 한다

 

 

 

▷ 변수의 type 확인 : typeof

document.write("a type: "+ typeof a + "<br>");

 

 

 

 


※ 배열

  - 같은 타입의 데이터를 여러 개 저장할 수 있는 저장소

 

 

▶ 선언

  - Array 객체 : 자바스크립트에서 배열을 사용할때 이용되는 객체

var arr=new Array(2); // 요소2개인 배열선언
var arr = []; // 빈배열선언

 

할당 : 직접 인덱스에 접근해서

//숫자
arr[0]=10;
arr[1]=20;
//문자열
colors[0] = “red”;
colors[1] = “blue”;
colors[2] = “green”;

 할당 : 자바스크립트 내장 API를 사용해서 (추천)

var arr = [];
arr.push(100); // [100]
arr.push(20); // [100, 20]
arr.splice(0, 1, 10); // [10, 20] //index 0에서 1개 삭제하고 10 추가
console.log(arr); // [10, 20

 

 선언 및 할당

var arr=[1, 2, 3]; //숫자
var arr = [“red”, “blue”,”green”]; //문자열

 

 for 문에서 출력

for(var i=0; i<3; i++)
document.write(i + " : " + colors[i] + "<br>");

 

 

▷ 배열에서 자주사용하는 배열 API

· push() : 배열에 데이터 추가 (맨 끝 인덱스부터 추가됨)

· slice() : 배열의 특정 인덱스에 있는 값을 반환 (배열의 내용이 변환되지 않음)

· splice() : 배열의 특정 인덱스에 있는 값을 변경 또는 삭제 (배열의 내용이 변경됨)

· pop() : 배열의 마지막 인덱스의 값을 꺼냄 (배열의 내용이 변경됨)

· shift() : 배열의 첫번째 인덱스의 값을 꺼냄 (배열의 내용이 변경됨

 

 

 

 배열과 forEach() 문

  - forEach 반복문은 배열에 사용하기 좋은 반복문

var arr = [10, 20, 30];
arr.forEach(function(value, index) {
	console.log('array index: ' + index + ' value : ' + value);
});

array index: 0 value : 10

array index: 1 value : 20

array index: 2 value : 30

 

 


※ 조건문

if(조건식1) {
	조건식1 이 참인 경우 실행할 내용;
}else if(조건식2) {
    조건식 2가 참인 경우 실행할 내용;
}else {
    조건을 모두 만족하지 않는 경우실행할 내용;
}

 


※ 반복문

 

▶ while 문

  - 조건이 참인 동안은 계속 반복 수행

  - 처음부터 조건이 거짓이면 반복되는 실행구문은 한번도 처리하지 않음.

while(반복 조건){
반복 내용;
}

 

▶ do while 문

  - 조건이 거짓이더라도 실행구문을 반드시 한번은 수행

do{
반복될 문장;
} while(조건);

 

 

for 문

  - 지정된횟수만큼 반복

for(초기화식;조건식;증감식){
반복될 문장;
}
for (var i = 0; i < 10; i++) {
console.log(i); // 0부터 9까지 출력
}

 

 

for in 객체제어문

            ㄴ 객체를 제어하고 조작하는 방법

  - 객체의 모든 속성을 변수에 할당하는 경우에 사용하기때문에

    각 객체가 가지고 있는 속성의 개수만큼 지정된 문장을 수행

for(변수명 in 객체){
실행블록;
}

 


▶ new 

  - 사용자가 새로운 객체를 정의할 수 있도록 해줌

새로운 객체명 = new 객체형식(매개변수1, 매개변수2)
<script type="text/javascript">
    var d = new Date();
    month1 = d.getMonth() + 1;
    document.write(1900+d.getYear()+ "년" + month1+ "월" +d.getDate()+ "일"+"<br>");
</script>

 = > 자바스크립트에서도 Date객체생성해서 getMonth로 금월 가져오려면 +1 해야함 !

 

 

▶ this

다른 언어와 다르게 자바스크립트의 this는 상황에 따라 다른 값들을 가리킴

 

[1] this 의 가장 기본적인 컨텍스트( = 맥락 ) 는 글로벌 컨텍스트

 console.log(this);

 => window : 자바스크립트의 최상위 객체

 

 

[2] 객체 속성 함수 안에서의 this는 기본적으로 해당 객체를 가리킴

var obj = {
    num: 10,
    printNum: function() {console.log(this.num);}
};
<script type="text/javascript">
	//[1] javascript 이용
	function disappear(element){
		element.style.display = "none";
	}
</script>
</head>
<body>
	<div onclick="disappear(this)">1. 클릭하면 사라짐</div>

 

 

[3] 일반함수에서 this : 일반 함수의 this는 전역 컨텍스트

function showComment() {
console.log(this);
}

위 함수를 실행시키면 window 객체를 가리키고 있다는 것을 알 수 있다

 

 = > 위 함수로 new 인스턴스 생성해서 함수가 실행되게한다면 ? 

         - this : Developer {} // 생성자 함수의 this는 함수의 내부를 가리킨다

function Developer() {
    console.log(this);
}
var dev = new Developer();

 

[4] HTTP 요청과 같은 비동기 처리 코드는 전역 컨텍스트를 갖는다 ... 와 이게 무슨말이지

  - 실제로 웹 개발을 할 때 가장 많이 마주하게 되는 this

function fetchData() {
    axios.get('domain.com/products').then(function() {
    console.log(this);
});
}

fetchData(); // window