1) 웹 브라우저에서 동작하는 자바스크립트
2) 웹 브라우저를 벗어난 자바스크립트
<script>
태그 안에서 document.getElementById()
등의 메소드를 이용해 DOM 선택DOM을 이용해서 문서의 엘리먼트를 생성, 추가, 삭제, 변경 가능
1) 원시값(언어의 최고 로우레벨에서 직접 표현되는 불변 데이터)
2) Object 객체(속성의 컬렉션)
3) 논리 식에서 null, undefined를 모두 false로 간주
var count = 0;
// var는 범위가 함수 단위이다
function addCount() {
// 함수에서 var로 선언하면 함수 범위에서만 사용 가능
var count = 0;
count += 1;
}
addCount();
console.log(count); // 결과 : 0
var count = 0;
function addCount() { count += 1;}
addCount();
console.log(count); // 결과 : 1
if(true) var a = 200;
console.log(a); // 결과 : 200
var는 함수 단위이기 때문에 블럭 안에서 선언한 변수를 블럭 외부에서 접근이 가능하다.
var myObj = {
name : '홍길동',
email : 'hong@gmail.com',
showInfo : function() {
var a = 'a변수값';
let b = 'b변수값';
this.c = 'c변수값';
console.log(this.name, this.email );
console.log(this);
}
}
myObj['showInfo']();
a와 b는 myObj에 속해있지 않음! var 변수의 범위는 함수로 변수 a는 showInfo 함수 범위 내에서만 사용 가능하며, let의 범위는 블록이므로 변수 b는 블럭 안에서만 사용 가능하다. 변수 c는 this로 myObj 객체에 선언하여 myObj에 속하게 된다.
1) 자바스크립트는 변수 선언 시에 타입을 지정 X (dynamic type)
2) 자바스크립트는 모든 데이터가 객체처럼 사용됨
3) 함수도 변수나 배열에 저장 가능
4) 데이터 처리를 위해 배열 타입을 많이 사용
5) Object 및 Class
1) Math.random( )
2) Math.floor( )
3) Math.random( ) 결과에 100을 곱하면 0~99사이의 난 수 발생
function 함수명(매개변수, 매개변수,...){
실행문;
return 반환문;
}
1) arguments
2) 자바스크립트의 arguments는 call by value 방식
3) Object를 참조하는 변수의 값은 메모리상의 주소인 pointer형
: 호출 된 함수의 기능이 모두 끝난 후 실행 할 함수를 인자로 넘겨주는 것
: 함수가 자기 자신을 호출하는 방식으로 동작
모든 재귀 호출 구현은 while문과 stack 구조로 구현 가능함