web-front
[ javaScript ] 간단정리 part 1
hanjuCoding
2024. 8. 2. 15:27

자바스크립트
- 인터프리터 방식 언어
- 동적 타이핑(dynamic typing)
script태그는 <body>태그의 닫는 태그 바로 앞에 위치해주는 것이 좋습니다.
변수
- var : 호이스팅,지역변수 재할당 O , 재선언 O
- let : 지역변수 재할당 O , 재선언 X
- const : 상수 재할당 X , 재선언 X → 재할당불가(기본자료형 값, 주소값)
비교연산자 ‘==’, ‘ ===’
- ‘==’ : 피연산자끼리 같으면 true
- ‘===’ : 피연산자끼리도 같고, 자료형도 같아야 true
지역변수 & 전역변수
- local : 해당지역에서만 사용
- global : 전체지역에서 사용
function test(){
var a1 = 1;
}
console.log(a1);
//오류발생 errcode: a1 is not defined
function test2(){
var a2 = 1;
}
test2();
console.log(a2);
//오류발생 errcode: a2 is not defined
function test3(){
a3 = 1;
}
console.log(a3);
// 1 출력 var를 빼면 전역변수로 사용할 수 있음.
자동 형변환
var x = '1';
var y = 2;
console.log(x+y,typeof(x+y)); // string
console.log(x-y,typeof(x-y)); // number
console.log(x*y,typeof(x*y)); // number
console.log(x/y,typeof(x/y)); // number
console.log(y+x,typeof(y+x)); // string
console.log(y-x,typeof(y-x)); // number
console.log(y*x,typeof(y*x)); // number
console.log(y/x,typeof(y/x)); // number
//이유는 string은 + 연산만 지원하기때문. string?num, num?string 순서 상관없
강제 형변환
var x1 = '3';
var y1 = 'A';
var x2 = Number(x1);
var y2 = parseInt(y1);
console.log(typeof x2, typeof y2);
//number number 출력
var e ='';
console.log(Number(e)); //0 출력
console.log(parseInt(e)); // NaN 출력
// -> 그래서 Number을 많이쓴다.(계산 등 할때)
함수선언 (익명함수 = 이름이 없는함수)
<script>
aaa();
function aaa(){
console.log('aaa');
}
aaa();
bbb();
var bbb = function(){
console.log('bbb');
}
bbb();
</script>
//aaa
//aaa
//Uncaught TypeError: bbb is not a function
//이해하기 쉽게 function()은 static처럼 디버깅할때 먼저 실행됨.
//그래서 aaa는 선언 전에 실행해도 상관 없지만,
//bbb는 객체로 받았기 때문에 존재하지 않는다.
//콜백함수
(function ccc(){
console.log('ccc');
})();
parseInt() vs Number()
parseInt(): 문자열 중 정수로 된 부분만 뽑아 출력 → 실수는 parseFloat
Number(): 문자열 전체가 숫자일때 소수점까지 숫자타입으로 반환
호이스팅
console.log(k); //undefined 출력
var k = 1;
console.log(j); //에러발생
j = 1;
//var은 static처럼 컴파일할때 메모리에 올라감
//BUT 변수만 선언되고, 값은 저장되지 않음
//따라서, k는 var선언 전에 출력을 먼저 했는데도 에러안뜨고 undefined를 출력한다.
배열타입
var season = ['봄','여름','가을','겨울'];
var season2 = season;
console.log(season==season2); //->true
season2[1] = 'summer';
console.log(season); //->summer포함
console.log(season2);//->summber포함
console.log(season==season2);//true
//java처럼 참조자료형이라 season2의 값을 바꾸면 season도 바뀜
var season3 = ['봄','여름','가을','겨울'];
console.log(season==season3); //false