본문 바로가기
javascript & jquery

자바스크립트 - 기본

by 부웡 2025. 3. 14.

[01]

  • javscript: 인터프리터 언어(바로실행), 컴파일을 거치지 않음.
    - 버그가 덜 걸러지고, 실행이 조금 느리다는 단점이 있음.
    - 객체 지향, 프로토타입 기반..

[02]

  • 변수와 상수
    - 데이터에 의미 부여
    - var (예전 자바스크립트 버전에서 사용. 오늘날에는 사용하지 x)
    - ES6 부터는 let, const 사용!!
    - 자바스크립트는 데이터의 종류에 있어 엄격하지 않음. (하나의 주머니에 텍스트, 숫자, 배열 등 담아도 됨)
    - 이미 만든 상수와 같은 이름의 상수를 다시 만들 수 없음.(브라우저 콘솔 예외)
  • let : 변수
    - 넣은 데이터를 바꿀 수 있음
  • const : 상수
    - 넣은 데이터를 바꿀 수 없음
    - 상수는 선언만 할 수 없음. 데이터를 넣어줘야함
  • 변수 명명 규칙
    - $나 _ 제외하고는 사용하지 않아야한다.
    - 숫자로 시작하지 않아야한다. (변수 중간이나 끝에 사용하는 것은 가능)
    - 변수명에는 예약어를 사용할 수 없다.

[03] 자료형(타입)

  • 다른말로 집합
    - 원시타입(Number, String, Boolean, Null, Undefined)
  • Number
    - 표현가능한 숫자(1, 1.1, -1..)
    - 사칙연산 가능 / 나머지 연산도 가능(모듈러 연산)
    - NaN(연산이 실패했을 경우)
  • String
    - let myName = ‘홍길동’; (*따옴표로 감싸줘야함)
    - 덧셈 연산을 지원(문자열을 이어붙임)
    - `(백틱) : 변수의 값을 동적으로 넣을 수 있음.
    - let introduce = ${myName} : 템플릿 리터럴 문법 (실무에서도 자주 이용됨!) `${변수명}`
  • Boolean
    - 상태(참, 거짓)
  • Null
    - let empty = null; (아무것도 들어있지 않다.)
  • undefined
    - 어떠한 값도 넣지 않았을 때 자동으로 할당됨.
  • null은 어떠한 값도 없다는 뜻(프로그래머가 할당),
    undefined는 자동으로 할당

[04] 형 변환

  • 다른 타입으로 변경하는 것 (Number → String)
  • 묵시적 형 변환 (암묵적 형변환) : 자바스크립트 엔진이 형 변환
let num = 10;
let str = '20';

const result = num + str;

console.log(result); //1020 (문자열간의 덧셈 연산)

 

  • 명시적 형 변환 : 개발자가 직접 함수를 이용해 변환(내장함수등을 이용)
let str1 = '10';
let strToNum1 = Number(str1);

console.log(10 + strToNum1); //20

let str2 = '10개';
let strToNum2 = Number(str2);

console.log(strToNum2); //NaN

// 문자 --> 숫자 형변환
let strToNum2 = parseInt(str2);
console.log(str2) // 10

// 숫자 --> 문자 형변환
let num = 20;
let numToStr1 = String(num);

console.log(numToStr1 + '입니다.');

 


[05] 연산자1

  • 다양한 연산을 위한 기호, 키워드 등(덧셈, 뺄셈, 곱셈, 나눗셈등..)
// 1. 대입연산자
let var1 = 1;

// 2. 산술연산자
let num1 = 1 + 2;
let num2 = 1 - 2;
let num3 = 1 * 2;
let num4 = 1 / 2;
let num5 = 1 % 2;

let num6 = 1 + 2 * 10;

console.log(num6) // 21

// 3. 복합 대입 연산자 (산술 + 대입)
let num7 = 10;
num7 += 20;

console.log(num7) // 30

num7 -= 20;
console.log(num7) // 10

// 4. 증감 연산자
let num8 = 10;
num8++; // 후위 연산

console.log(num8++) // 11
console.log(++num8) // 전위연산

// 5. 논리 연산자(true & false)
let or = true || false;

let and true && false;

let not = !true;

console.log(or, and, not) // true false false

// 6. 비교 연산자
let comp1 = 1 === 2;
let comp2 = 1 !==2;

let comp3 = 2 > 1;
let comp4 = 2 < 1;

let comp5  = 2 >= 2;
let comp6  = 2 <= 2;

[06] 연산자2

  • null 병합 연산자
    - 존재하는 값을 추려내는 기능
    - null, undefind가 아닌 값을 찾아내는 연산자
let var1;
let var2 = 10;
let var3 = 20;

let var4 = var1 ?? var2; //10
let var5 = var1 ?? var3; //20
let var6 = var2 ?? var3; //var2값인 10이 출력

// 예시
var userName = '이원경'
var nickName = 'Wendy';

let displayName = userName ?? nickName; //둘중에 하나가 없을 떄 보여줄 값 출력

 

  • typeof 연산자
    - 값의 타입을 문자열로 반환하는 기능을 하는 연산자
let var7 = 1;
var7 = 'hello';
var7 = true;

let t1 = typeof var7;
console.log(t1) // string, number, boolean 등 변수가 가진 타입을 반환해줌

 

  • 삼항 연산자
    - 항을 3개 사용하는 연산자
    - 조건식을 이용해서 참, 거짓을 판별하여 값을 다르게 반환
let var8 = 10;

// 요구사항 : 변수 res에 var8의 값이 짝수 -> '짝', 홀수 -> '홀'
let res = var8 % 2 === 0 ? "짝수" : "홀수";
// 조건식 ? 참 : 거짓

console.log(res) // 짝수

 


[07] 조건문

  • 특정 조건을 만족했을 때에만 실행되는 코드를 작성하기 위한 문법
  • 대표적으로 if, switch
// 1. if 조건문 (if문)
let num = 4;

if (num >= 10) {
  //console.log("num은 10 이상입니다");
  //console.log("조건이 참 입니다!");
} else if (num >= 5) {
  //console.log("num은 5 이상입니다");
} else if (num >= 3) {
  //console.log("num은 3 이상입니다");
} else {
  //console.log("조건이 거짓입니다!");
}

// 2. Switch 문
// -> if문과 기능 자체는 동일
// -> 다수의 조건을 처리할 때 if보다 더 직관적이다.

let animal = "owl";

switch (animal) {
  case "cat": {
    console.log("고양이");
    break; //조건을 만족할 때 중지시키려면 필요!!
  }
  case "dog": {
    console.log("강아지");
    break;
  }
  case "bear": {
    console.log("곰");
    break;
  }
  case "snake": {
    console.log("뱀");
    break;
  }
  case "tiger": {
    console.log("호랑이");
    break;
  }
  default: { // 어떤 케이스에도 해당되지 않을 때
    console.log("그런 동물은 전 모릅니다");
  }
}

 


[08] 반복문

  • 어떠한 동작을 반복해서 수행할 수 있도록 만들어주는 문법
for (let idx = 1; idx <= 10; idx++) {
  if (idx % 2 === 0) {
    continue;
  }
  console.log(idx);

  if (idx >= 5) {
    break;
  }
}

[09] 함수

  • 중복으로 작성된 유사한 기능을 하는 코드
    - 동일한 기능을 일일히 타이핑 해야하는 불편함, 유지보수 시 문제가 될 수 있음.
  • 함수
    - 공통 코드를 묶고 이름을 붙여서 가져다 쓸 수 있도록 하는 자바스크립트 문법
// 함수선언
function greating() {
	console.log('안녕하세요');
}
greating(); // 함수호출 시 소괄호 필수!!

// 함수
let area1 = getArea(10, 20);
console.log(area1);

let area2 = getArea(30, 20);
console.log(area2);

getArea(120, 200);

// 호이스팅
// -> 끌어올리다 라는 뜻
function getArea(width, height) {
  function another() {
    // 중첩 함수
    console.log("another");
  }

  another();
  let area = width * height;

  return area;
}

[10] 함수 표현식과 화살표 함수

  • 함수 표현식 : 함수를 변수에 저장
  • 화살표 함수 : 함수를 더 간결하게 표현하는 방식
function funcA(){
	console.log("funcA");
}

let varA = funcA; // 함수 자체를 변수에 담을 수 있다.
console.log(varA);

// 1. 함수 표현식
let varB = function funcB(){
	console.log("funcB");
}

varB();
funcB(); // 함수의 이름으로 호출 불가

// 2. 화살표 함수
let varC = (value) => {
  console.log(value); // 10
  return value + 1;
};

console.log(varC(10)); // 11

[11] 콜백함수 LINK

  • 자신이 아닌 다른 함수에, 인수로써 전달된 함수를 의미 함
// 1. 콜백함수
function main(value){
	console.log(1);
	console.log(2);
	value(); // 원하는 타이밍에 호출해서 사용 가능.
}

function sub(){
	console.log("I am sub");
}

// main(1);
main(sub);
main() => { // sub 콜백 함수를 main에 넣어서 단축시킨 형태
	console.log("I am sub");
});
// 2. 콜백함수의 활용
function repeat(count, callback){
	for(let idx = 1; idx <= count; idx++){
		callback(idx);
	}
}

repeat(5, (idx) => {
	console.log(idx);
});

repeat(5, (idx) => {
	console.log(idx * 2);
});

repeat(5, (idx) => {
	console.log(idx * 3);
});

/*
function repeatDouble(count){
	for(let idx = 1; idx <= count; idx++){
		console.log(idx * 2);
	}
}
*/

repeat(5); //1 2 3 4 5
repeatDouble(5) //2 4 6 8 10

[12] 스코프

  • 변수나 함수에 접근하거나 호출할 수 있는 범위를 말 함
// 스코프
// -> 전역(전체 영역) 스코프 / 지역(특정 영역) 스코프
// -> 전역 스코프 : 전체 영역에서 접근 가능
// -> 지역 스코프 : 특정 영역에서만 접근 가능

let a = 1; // 전역 스코프

function funcA(){
	let b = 2; // 지역 스코프
	console.log(a);
}

funcA();
console.log(b); // b is not defined

if (true){
	let c = 1;
}
console.log(c); // error

for(let i = 0; i < 10; i++){
	let d = 1;
}
console.log(d); // error

--> 중괄호 안에 선언된 변수는 외부에서 접근할 수 없다!!
--> 함수도 지역 스코프를 갖게 된다.
--> 조건문이나 반복문에서는 지역 스코프를 갖지 않는다.(함수 선언식만 그렇다.)

[13] 객체1

  • 원시 타입이 아닌 객체 타입의 자료형
  • 여러가지 값을 동시에 저장할 수 있는 자료형
  • 객체를 이용하면 현실세계에 존재하는 어떤 사물이나 개념을 표현하기 용이함
// 1. 객체 생성
let obj1 = new Object() // 객체 생성자
let obj2 = (); // 객체 리터럴(대부분 사용)

// 2. 객체 프로퍼티(객체 속성) key : value
let person = {
    name : "홍길동",
    age : 27,
    hobby : "테니스",
    job : "FE Developer",
    extra: {},
    10 : 20,
    "like cat" : true,
};

// 3. 객체 프로퍼티를 다루는 방법
// 3-1. 특정 프로퍼티에 접근하는 방법(점 표기법, 괄호 표기법)
let name = person.name;
console.log(name); // 홍길동

let age = person["age"] // 쌍따옴표와 함께 문자열로 작성해야한다!!
console.log(age) // 27

let property = "hobby";
let hobby = person[property];
console.log(hobby); // 테니스

// 3-2. 새로운 프로퍼티를 추가하는 방법
person.job = "fe developer";
person["favoriteFood"] = "떡볶이";

console.log(person);

// 3-3. 프로퍼티를 수정하는 방법
person.job = "educator";
person["favoriteFood"] = "초콜릿"

// 3-4. 프로퍼티를 삭제하는 방법
delete person.job;
delete person["favoriteFood"];
console.log(person);

// 3-5. 프로퍼티 존재 유무를 확인하는 방법 (in 연산자)
let result1 = "name" in person;
let result2 = "cat" in person;

console.log(result1) // true
console.log(result2) // false

[14] 객체2

// 1. 상수 객체
const animal = {
	type : "고양이",
	name : "나비",
	color: "black",
}

animal.age = 2; // 추가
animal.name = "야옹이"; // 수정
delete animal.color; //삭제

console.log(animal); // {type: '고양이', name: '야옹이', age: 2}

animal = '123'; // 새롭게 할당하는 것은 불가!!! 추가, 수정, 삭제 가능*

// 2. 메소드
// -> 값이 함수인 프로퍼티를 말함
const person = {
  name: "홍길동",
  // 메서드 선언
  sayHi() {
    console.log("안녕!");
  },
};

person.sayHi();
person["sayHi"]();

[15] 배열

  • 여러개의 값을 순차적으로 담을 수 있는 자료 형
// 1. 배열 생성
let arrA = new Array(); // 배열 생성자
let arrB = []; // 배열 리터럴(대부분 사용)

let arrC = [ // 어떤 타입의 값이든 다 저장할 수 있다.
  1,
  2,
  3,
  true,
  "hello",
  null,
  undefined,
  () => {},
  {},
  [],
];
console.log(arrc);

// 2. 배열 요소 접근
let item1 = arrC[0];
let item2 = arrC[1];

console.log(item1, item2); // 1 2

arrC[0] = "hello"; // 배열의 값을 변경하는 것도 가능

 

 

* 출처 : 한입 크기로 잘라먹는 리액트

'javascript & jquery' 카테고리의 다른 글

자바스크립트 - 심화  (0) 2025.03.14

댓글