web-front

[ javaScript ] 간단정리 part 1

hanjuCoding 2024. 8. 2. 15:27

자바스크립트

  • 인터프리터 방식 언어
  • 동적 타이핑(dynamic typing)

script태그는 <body>태그의 닫는 태그 바로 앞에 위치해주는 것이 좋습니다.

변수

  1. var : 호이스팅,지역변수 재할당 O , 재선언 O
  2. let : 지역변수 재할당 O , 재선언 X
  3. 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