[JS] 1. Basic (1)
in JS
1. Overview
JavaScript란?
- 객체(Object) 기반의 스크립트 프로그래밍 언어
- ECMAScript 사양을 준수하는 범용 스크립팅 언어
- 자바와 직접적인 연관은 없으며, 웹의 동적 동작을 구현하기 위해 제작
- Mocha > LiveScript > JavaScript 로 명칭 변경
- JavaScript는 JS 엔진 위에서 수행되며, Google V8, Firefox SpiderMonkey, Edge Chakra 존재
ECMAScript란?
- Ecma International이 ECMA-262 기술 규격에 따라 정의하고 있는 표준화된 스크립트 프로그래밍 언어
- 자바스크립트를 표준화하기 위해 만들어졌으며, 액션스크립트와 J스크립트 등 다른 구현체도 포함
- Ecma International : 정보 통신에 대한 표준을 제정하는 비영리 표준화 기구
- ECMA-262: Ecma International에서 제정한 기술 규격의 이름으로, 범용 목적의 스크립트 언어 명세 기술
- 97년 ES1 초판, 09년 ES5, 15년 ES2015(ES6)으로 매해 6월에 버전 갱신 중
코드 동작 흐름
개발자
가 코딩하여 스크립트 만듦스크립트
를 컴파일러나 인터프리터를 이용하여 Bytecode로 변경후 컴퓨터에서 실행컴퓨터
의 동작을 디버깅하며 개발자가 유지보수
컴퓨터 내부 동작 원리
Disk
: 자바스크립트 저장되어 있으며 메모리에 Load 된다Memory
: 변수, 상수 등 임시 저장소CPU
: Momery에서 연산 필요시 CPU에 Load/Save 된다
자바스크립트 변환 절차
JavaScript Source
> Parse > Abstract Syntax Tree (추상화된 의미있는 트리)
> Compile > Ignition Bytecode
2. 기본 입출력
입출력
- 사용자가 프로그램과 상호작용하기 위한 방법으로, 입력과 출력을 아우르는 개념
- Input/Output의 머리 글자를 따서 I/O로 줄여서도 표기
- 운영 체제에서의 대표적인 입출력을 “표준 입력 / 표준 출력 / 표준 오류 출력”
표준 입력 (stdin)
- 일반적으로 컴퓨터의 키보드의 응답을 받아 입력
- 프로그램의 데이터를 추가하기 위한 입력 장치
- 알고리즘에서는 문제의 Testcase 입력을 위해 사용
표준 출력 (stdout)
- 일반적으로 컴퓨터의 모니터에 문자열로 출력
- 프로그램의 실행 상태 혹은 실행 결과를 보고 판단
- 알고리즘에서는 문제의 정답 확인, 디버깅 용으로 사용
// 표준 입출력 예제
const fs = require("fs");
const input = fs.readFileSync("./input.txt", "utf-8");
console.log(input);
3. 기본 용어
코드구성
let 안녕 = "하세요"
let hi = "hello"
let HI = "HELLO"
console.log(안녕)
console.log(hi)
console.log(HI)
- Java Script 문법의 대부분은 C, C++, Java로부터 차용하여 제작된 스크립트 기반의 언어
- 다수의 표현식(expression)으로 하나의 명령문(statement)이 만들어지며, 명령문으로 프로그램이 수행
- 하나의 명령문 끝은 개행문자(Enter) 혹은 세미콜론(;)으로 표시
- 표현식(expression) > 명령문(statement) > 응용 프로그램(application)
키워드
- 자바스크립트에서 문법을 만들 때 미리 정해진 용도로 동작하기 위해 정의해 놓은 단어
- 자바 스크립트에 예약된 키워드 목록
식별자
- 스크립트에서 변수나 함수에 이름을 붙일 때 사용하는 단어
- 대소문자를 구별하며 유니코드 문자셋을 이용
- 자바스크립트 내 식별자 규칙
- 키워드 사용 불가
- 숫자로 시작 불가
- 특수문자는 _와 $만 허용
- 공백 문자 포함 불가 for, void, 123algo, al go 👎
주석
// single-line commnets
console.log("hello")
/* multl-line comments
어떤 문자가 와도
개행이 되어도 주석 처리가 된다
*/
console.log("world")
- 프로그램 구현 시 개발자의 설명 및 이해를 쉽게 도와주는 문장으로 실제 실행 코드에는 포함되지 않음
- 주석의 종류는 단일 행 주석 // 과 다중 행 주석 /* */ 존재
4. 변수와 상수
변수란?
let a = 123;
console.log(a);
a = 456;
console.log(a);
// SyntaxError: Identifier 'a' has already been declared
// 중복 선언 불가!
let a = 789;
변경 가능한
값을 저장하기 위한 기억 공간 (memory)- 사용하기 전 반드시 선언 필요
- 중복 선언 불가능
- 선언 후 할당 가능
- 키워드 :
let
상수란?
// 상수는 선언과 동시에 값을 초기화해야한다.
const b = 123
console.log(b)
// TypeError: Assignment to constant variable.
b = 456;
// SyntaxError: Missing initializer in const declaration
const c;
c = 123
변경 불가능한
값을 저장하기 위한 기억 공간- 사용하기 전 반드시 선언 필요
- 중복 선언 불가능
- 선언과 동시에 초기화 해야 한다.
- 상수는 보통 대문자로 표기
const TESTCASE = 5;
- 키워드 :
const
// 선언 후 할당
let hi;
hi = "hello";
// 선언과 동시에 초기화
let halo = "hello!";
// 한 줄에 여러 변수 선언하고 초기화
let name = "nahyun",
age = 13,
msg = "hello";
// 상수는 보통 대문자로 표기
const TESTCASE = 5;
const BIRTHDAY = "1997.03,19";
호이스팅 (Hoisting)
// using var
console.log(name1) //undefined
var name1 = "nahyun"
console.log(name1) //nahyun
// hoisting
var name2;
console.log(name2)
name2 = "nahyun"
console.log(name2)
// using let
// ReferenceError: name3 is not defined
console.log(name3)
name3 = "nahyun"
- 코드에 선언된 변수 및 함수를 유효한 범위의 코드 상단으로 끌어 올리는 작업
- var의 변수/함수의 선언만 위로 올려지고, 할당은 올려지지 않음
- let/const 변수 선언과 함수 표현식에서는 호이스팅 발생하지 않음
- var 사용 지양하기
나의 회고 🤫
컴퓨터 내부 동작 과정은 학부생때 공부하고 잊고 지냈어서 다시 한번 다음에 재대로 공부해봐야겠다.
기초 내용이여서 대부분 알고 있던 내용이었지만 맨날 까먹는 호이스팅에 대해 다시 한번 돌아볼 수 있는 시간이었다.
어서 js 공부하고 자료구조,알고리즘 하고싶다..!!!
이번에도 꾸준히 열심히 화이팅!👍👍