변수와 상수의 차이와 활용

JavaScript에서 변수(variable)상수(constant)는 데이터를 저장하고 관리하는 핵심 요소이다.
var, let, const는 각각의 특성과 용도가 다르며, 코드 작성 시 이를 적절히 사용하는 것이 중요하다.

 

변수와 상수 선언 방법

1. var

  • 특징:
    • 재선언 및 재할당 가능.
    • 함수 스코프(Function Scope)를 가짐.
    • 블록 스코프를 지원하지 않음.
  • 사용 예:
    var name = "John";
    
    name = "Doe"; // 재할당 가능

주의: var는 의도치 않은 호이스팅 문제를 유발할 수 있으므로 현대 코드에서는 let과 const 사용이 권장된다.

 

2. let

  • 특징:
    • 재선언 불가능하지만 재할당 가능.
    • 블록 스코프(Block Scope)를 지원.
  • 사용 예:
let age = 25;

age = 26; // 재할당 가능

 

3. const

  • 특징:
    • 재선언 및 재할당 불가능.
    • 반드시 선언 시 초기화 필요.
    • 블록 스코프를 지원.
  • 사용 예:
const PI = 3.14;

// PI = 3.15; // Error: 재할당 불가능

 

변수와 상수의 주요 차이점

특성 var let const
재선언 가능 여부 Yes No No
재할당 가능 여부 Yes Yes No
초기화 필요 여부 No No Yes
스코프 함수 스코프 블록 스코프 블록 스코프

 

스코프(Scope)와 호이스팅(Hoisting)

1. 스코프

  • 함수 스코프: var로 선언된 변수는 함수 내에서만 유효.
  • 블록 스코프: let과 const는 {}로 감싼 블록 내에서만 유효.
if (true) {
  let x = 0;
}

console.log(x); // Error: x is not defined​

 

2. 호이스팅

  • JavaScript는 변수 선언을 코드의 상단으로 끌어올리는 호이스팅을 수행한다.
  • var는 선언부만 끌어올려져 초기화되지 않은 상태로 처리된다.
console.log(a); // undefined
var a = 5;

console.log(b); // Error: Cannot access 'b' before initialization
let b = 10;​

 

let과 const의 추천 사용법

1. const를 기본적으로 사용.
값이 변하지 않는 데이터를 선언할 때 사용

const maxUsers = 100;
 

2. 필요할 때만 let 사용.
동적으로 변경되는 데이터에 적합

let userCount = 0;
userCount++;

 

 

3. var는 사용하지 않음.
var의 함수 스코프와 호이스팅 문제는 유지보수에 적합하지 않다.

 

객체와 배열의 상수 처리

const로 선언된 객체와 배열은 내부 데이터 변경이 가능하다.

const user = { name: "Alice" };
user.name = "Bob"; // 가능

const numbers = [1, 2, 3];
numbers.push(4); // 가능

 

하지만 참조 자체를 변경하는 것은 불가능합니다:

user = { name: "Charlie" }; // Error: 재할당 불가능

 

변수 선언 관련 유용한 팁

 

1. 명확한 변수 이름 사용:
변수의 목적을 쉽게 알 수 있도록 작성

let userAge = 30; // 명확한 변수명

 

2. 초기화와 함께 선언:

선언과 초기화를 동시에 하여 예측 가능한 코드를 작성

const isLoggedIn = false;

3. 스코프를 잘 이해하고 활용:
불필요한 전역 변수 사용을 지양

 

요약

  • var 대신 let과 const를 사용
  • const는 값을 변경하지 않을 때, let은 변경 가능성이 있을 때 사용한다.
  • 스코프와 호이스팅의 작동 방식을 이해하면 코드 오류를 줄이고 가독성을 높일 수 있다.

최적의 코드 작성: 명확한 변수 선언과 스코프 활용은 코드 품질을 높이고, 협업 시 이해도를 향상시킨다.

 

 

 

참조
https://tcpschool.com/javascript/js_intro_syntax#google_vignette

https://ko.javascript.info/variables

https://inpa.tistory.com/entry/JS-%F0%9F%93%9A-var-let-const-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EB%B3%80%EC%88%98-%ED%98%B8%EC%9D%B4%EC%8A%A4%ED%8C%85#thankYou

 

 

'Web Programming Language > JS' 카테고리의 다른 글

JavaScript란?  (0) 2024.12.03
JavaScript) eval() 함수  (0) 2020.10.29
java script) history.back(), history.go(), history.forward()  (0) 2020.10.27

JavaScript란 무엇인가?

JavaScript는 웹 페이지를 동적으로 만들기 위해 사용하는 프로그래밍 언어로, 주로 브라우저에서 실행된다.
HTML 및 CSS와 함께 웹 개발의 핵심 기술로 자리 잡았으며, 다양한 기능을 통해 사용자 경험을 풍부하게 한다.

 

JavaScript의 정의

  • 정의: JavaScript는 클라이언트에서 실행되며, HTML 및 CSS와 함께 동작해 웹 페이지를 동적으로 제어한다.
  • 역사: 초창기에는 브라우저 내에서 간단한 동작을 수행하기 위해 개발되었으나, 현재는 서버, 앱, 게임 개발 등으로 확장되었다.

대표적인 실행 환경:

  • 브라우저: Chrome(V8 엔진), Firefox(SpiderMonkey), Edge(Chakra), Safari(WebKit).
  • 서버: Node.js.

 

브라우저에서 JavaScript로 할 수 있는 일

JavaScript는 브라우저에서 다양한 동적 기능을 제공한다.

  1. HTML 콘텐츠 조작:
    페이지 내용을 실시간으로 수정하거나 업데이트.
  2. 이벤트 처리:
    클릭, 입력, 스크롤 등의 사용자 인터랙션에 반응.
  3. 데이터 통신:
    AJAX를 통해 서버와 비동기적으로 데이터 송수신.
  4. 애니메이션 효과:
    요소의 움직임과 변화를 부드럽게 구현.

 

브라우저에서 JavaScript로 할 수 없는 일

브라우저의 JavaScript는 보안상의 이유로 몇 가지 제한이 있다.

  • 파일 시스템 접근.
  • 운영 체제나 하드웨어 직접 제어.
  • 다른 도메인의 서버 데이터에 접근(CORS 정책 적용).

 

JavaScript의 장점

  1. HTML/CSS와의 완벽한 통합:
    • 웹 페이지를 동적으로 업데이트 가능.
  2. 비동기 처리:
    • 비동기 통신(AJAX)을 통해 사용자 경험 개선.
  3. 광범위한 사용:
    • 브라우저뿐만 아니라 서버(Node.js), 모바일 앱에서도 사용 가능.

 

JavaScript의 확장 가능성

JavaScript는 다양한 파생 언어와 프레임워크를 통해 확장되었다.

  • TypeScript: JavaScript의 상위 언어로, 정적 타입을 제공.
  • Dart: Google이 개발한 언어로, JavaScript로 변환 가능.
  • Frameworks: React, Angular, Vue 등은 JavaScript로 강력한 웹 애플리케이션 개발을 지원.

 

요약

JavaScript는 웹 개발의 중심 기술로, 정적 콘텐츠에 생동감을 부여하고, 사용자와의 상호작용을 가능하게 한다.

  • 브라우저에서 실행: HTML, CSS와 통합.
  • 서버에서도 활용 가능: Node.js.
  • 강력한 확장성: 다양한 프레임워크와 라이브러리를 통해 현대적인 웹 개발을 지원.

 

참조:
https://ko.javascript.info/intro

'Web Programming Language > JS' 카테고리의 다른 글

변수와 상수  (0) 2024.12.03
JavaScript) eval() 함수  (0) 2020.10.29
java script) history.back(), history.go(), history.forward()  (0) 2020.10.27

eval() 함수 : 문자열을 코드로 인식하게 하는 함수

 

eval()

eval()은 문자열을 코드로 인식하게 하는 함수입니다.

 

문법

  eval( string )

 

 

예를 들어,

  eval( '2+2' )

 

는 문자열 2+2가 아니라 계산한 결과 4입니다.

 

 

 

예제

 

<소스 코드>

<!doctype html>
<html lang="ko">
    <head>
       <meta charset="utf-8">
       <title>JavaScript</title>
       <style>
          body {
              font-family: Consolas, monospace; }
       </style>
    </head>
    <body>
       <script>
           var jb = '2+2';
           document.write( '<p>' + jb + '</p>' );
           document.write( '<p>' + eval( jb ) + '</p>' );
       </script>
    </body>
</html>

 

 

<웹페이지 출력값>

 

 

 

출처 : 

www.codingfactory.net/11024

'Web Programming Language > JS' 카테고리의 다른 글

변수와 상수  (0) 2024.12.03
JavaScript란?  (0) 2024.12.03
java script) history.back(), history.go(), history.forward()  (0) 2020.10.27

# 자바스크립트 이전 페이지로 이동하는 방법이 경우 자바스크립트 객체인 history 객체를 사용하여 이동하는 방법이 존재합니다. history 객체는 페이지를 이동하기 위한 다양한 메소드를 가지고 있습니다. 가장 대표적인 메소드는 무엇이고 어떻게 사용하는지 예제와 함께 알아보도록 하겠습니다.

우선 아래는 가장 많이 쓰이는 history 객체의 메소드 값입니다.

history.back();
history.go();
history.forward();


위 메소드, 즉 함수들을 사용하면 현재 페이지에서 뒤로가거나 앞으로 이동이 가능합니다. 이에 대하여 간략하게 설명하자면...

@ history.back()
현재 페이지의 한단계 이전페이지로 이동합니다. 이는 history.go(-1)과 동일합니다.

@ histroy.go()
이전 또는 이후 페이지의 이동이 가능합니다. 사용방법은 전달할 인자에 숫자를 넣어 이동하게 됩니다. 1 또는 -1 등을 사용하여 이전 또는 이후로 이동할 수 있습니다.

@ history.forward()
이 방법을 사용할 경우 이후 페이지인 다음 페이지로 이동합니다. 동작하는 것은 history.go(1)과 동일합니다. 만약 다음으로 이동할 페이지가 없는 경우 동작하지 않습니다.


여기까지 자바스크립트를 이용해 이전 또는 이후 페이지로 이동하는 방법에 대하여 간단하게 확인해보았습니다. 다시 보자면 history.back() history.go() 둘 다 뒤로 돌아가는 기능은 동일합니다. 다만 가장 큰 차이점이라면 history.back()은 한 페이지 이전으로만 돌아갈 수 있고, history.go()는 원하는 만큼 뒤로 이동이 가능하다는 점입니다. history.forward() 역시 비슷합니다. 그럼 아래는 이를 사용하여 실제로 구현한 예제소스입니다.



# history.go(), history.back() 예제 소스아래 예제를 봐주세요. 이전 또는 다음 페이지로 이동하는 예제입니다.

 

histroy.go(-1);
// 이전 페이지... 즉 한단계 뒤로 돌아가기

histroy.go(-2);
// 두단계 이전의 페이지로 이동

histroy.go(-3);
// 세단계 이전의 페이지로 이동

history.back();
// history.go(-1)과 동일한 기능을 구현하나 go(-1)이 보편적으로 사용됨

history.forward();
// history.go(1)과 동일하며 앞으로 이동

 

 

 

 

출처 :

webisfree.com/2016-05-27/[javascript]-%EC%9D%B4%EC%A0%84-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A1%9C-%EB%8F%8C%EC%95%84%EA%B0%80%EA%B8%B0-history-back()-history()-go()

'Web Programming Language > JS' 카테고리의 다른 글

변수와 상수  (0) 2024.12.03
JavaScript란?  (0) 2024.12.03
JavaScript) eval() 함수  (0) 2020.10.29

+ Recent posts