변수 선언 위치에 따른 구분
Java
자바 변수 선언을 기준으로
public class Srudent{
//필드(멤버 변수)
private String name; //인스턴스 변수
public static String schoolName;//클래스 변수, static 변수
//메소드
public setName(String name /*메소드 매개변수*/){
this.name=name;
int num=10; //메소드 지역 변수
if(){
int a = 20;// if 지역변수
}
}
}
변수 선언하기: var 뒤에 변수 이름 작성, var을 한번만 쓰고 뒤에 여러개의 변수를 한꺼번에 선언할 수도 있음
스코프: 변수가 적용되는 범위, 스코프에 따라 지역변수(로컬변수)와 전역변수(글로벌 변수)
Javascript
자바스크립트 변수 선언을 기준으로
var num1; //전역변수(선언된 후 같은 문서 내 어디서든 사용가능)
num2; //전역변수(변수명 앞에 아무런 키워드가 없으면 전역변수가 된다.)
function test(){
var num3; //function 지역변수
num4; //전역변수(변수명 앞에 아무런 키워드가 없으면 전역변수가 된다.)
if(조건식){
var num5; //function 지역변수
num6; //전역변수(변수명 앞에 아무런 키워드가 없으면 전역변수가 된다.)
}
}
호이스팅: 변수를 뒤에서 선언하지만, 마치 앞에서 선언한 것처럼 인식함, 함수 실행문을 앞에 두고 선언 부분을 뒤에 두더라도 앞으로 끌어올려 인식함.
재선언과 재할당이 가능하다.
재선언: 이미 선언한 변수를 다시 선언할 수 있음
재할당: 같은 변수에 다른 값을 할당할 수 있음
->재선언과 재할당이 가능하면 실수로 변수를 잘못 조작할 확률이 높아짐.
let을 사용한 변수의 특징
- 블록 변수- 블록({}) 안에서만 사용할 수 있다.->전역변수는 변수 이름과 초깃값만 할당하면 됨
- 재할당은 가능하지만 재선언은 할 수 없다.
- 호이스팅이 없다.
const를 사용한 변수의 특징
- 상수- 변하지 않는 값을 선언할 때 사용
- 재선언, 재할당할 수 없음
자바스크립트 변수, 이렇게 사용하자
- 전역변수는 최소한으로 사용
- var 변수는 함수의 시작 부분에서 선언
- for문에서 카운터 변수는 var보다 let변수로 선언
- ES6를 사용한다면var보다 let를 사용하는 것이 좋다.
변수 선언 방식
var: 변수, 변수명 중복 O(덮어쓰기), 함수 레벨 scope, 재선언과 재할당이 가능.
let: 변수, 변수명 중복 X, 블록{} 레벨scope, 재할당을 가능하나 재선언은 불가능
const: 상수, 변수명 중복X, 블록{} 레벨 scope
1순위: const(Js는 특정 요소를 선택해서 사용하는 경우가 많아서 변수에 고정시케둠)
2순위: let
3순위: var (ES6 이후부터 사용 빈도가 많이 적어짐)
기본 | 숫자형 | 따옴표 없이 숫자로만 표기합니다 | |
문자열 | 작은따옴표나 큰따옴표 묶어서, 숫자를 따옴표로 묶으면 문자로 인식 | ||
논리형 | 참과 거짓이라는 2가지 값만 있는 유형, true false는 소문자 | ||
복합 | 배열 | 하나의 변수에 여러개의 값 저장 | |
객체 | 함수와 속성을 함께 포함 | var date() = new Date | |
특수 | undefined | 자료향이 지정되지 않았을 때의 상태 예를 들어 변수 선언만 하고 값을 할당하지 않은 변수 | |
null | 값이 유효하지 않음 |
typeof: 콘솔에 입력하면 자료형을 알려줌
배열: 하나의 변수에 여러 값을 저장할 수 있는 복합 유형
배열명["값1", "값2",..]
배열명[ ]: 빈 배열 선언
자바스크립트 기능표현 함수 단위.
function 함수명([매개변수1, 매개변수2,...]){
명령
}
실행: 함수명() or 함수명(변수)
익명함수(함수 표현식)
function(매개변수){ // 함수 선언 ①
// 함수 정의
}
const 변수 = function(매개변수){ // 함수 선언 ②
// 함수 정의
}
즉시실행함수
(function(매개변수){
// 함수 정의
})();
(function(매개변수){
// 함수 정의
}());
- 익명 함수의 한 종류로써
함수가 정의 되자마자 바로 실행되는 함수
*** 즉시 실행 함수 사용 이유
1) 함수 선언, 정의, 호출의 일련의 과정을 수행하지 않아도 바로 실행된다.
-> 호출부가 없으므로 일반적인 함수보다 속도적 우위를 가지고 있음.
2) 사용하려는 변수명이 전역변수로 사용되어지고 있는 경우
즉시 실행 함수를 이용하여 내부의 지역 변수로 작성하여
변수명 충돌 문제를 해결할 수 있다.
화살표 함수
익명 함수의 표현식을 간단히(간결하게) 표현한 표기법
작성법 1. 기본 형태 ([매개변수]) => { 함수 정의 }
익명 함수 : function(){ }
화살표 함수 : () => { }
익명 함수 : function(num){ return num * 2; }
화살표 함수 : (num) => { return num * 2; }
작성법 2. 매개변수가 "하나"인 경우 () 생략 가능
익명 함수 : function(e){
e.target.style.backgroundColor = "yellow";
}
화살표 함수 : e => {
e.target.style.backgroundColor = "yellow";
}
작성법 3. 매개변수가 없을 경우 "무조건" () 작성
작성법 4. 함수 정의 부분이 return [식 또는 값] 으로만 작성되어 있는 경우
4-1. {}, return 생략 가능
4-2. return되는 값이 객체(object)인 경우 {}, return 생략 불가능