1. 문자열 결합

  • + 연산자
    console.log('Hello' + 'World');	// "HelloWorld"
    
    console.log('Age: ' + 15);	// "Age: 15"
    
    let a = 'Hello';
    a += 'World';
    console.log(a);	// "HelloWorld";
    • 문자열 + 문자열의 경우 두 문자열을 이어붙인 문자열을 생성하여 반환
    • 문자열 + 다른자료형의 경우 다른 자료형을 문자열로 변환하여 이어붙인 문자열을 생성하여 반환
    • += 연산도 사용 가능

  • concat 메소드
    let a = 'Hello';
    b = a.concat(3);
    
    console.log(a);	// "Hello"
    console.log(b);	// "HelloWorld"

    • <문자열>.concat() 을 호출하여 concat의 인자로 넘겨준 값을 이어붙인 문자열을 반환받을 수 있음
    • concat에 문자열이 아닌 값을 인자로 넘길경우 +와 마찬가지로 문자열로 변환하여 이어붙임

 

 

2. 문자열 인덱스

let str = 'Hello World';

// 문자열의 첫 번째, 세 번째 문자 참조
console.log(str[0]);	// "H"
console.log(str[2]);	// "l"


// 문자열의 마지막 문자 참조
console.log(str[str.length-1]);	// "d"
  • 문자열은 인덱스를 통해 문자 하나하나를 참조가능
  • 문자열의 길이는 <문자열>.leght 로 알아낼 수 있음

 

 

3. 문자열 탐색

let str = 'JavaScript is Scripting Language';
let s = str.indexOf('Script');
let e = str.lastIndexOf('Script');

console.log(s, e)	// "4 14"
  • indexOf, lastIndexOf 메소드를 사용하면 문자열 내에 특정 문자열이 있는 위치를 탐색 가능
  • indexOf는 인자로 넘겨준 문자열이 처음 등장하는 인덱스를, lastIndexOf는 마지막으로 등장하는 인덱스를 반환

 

 

4. 문자열 슬라이싱

let a = 'Hello World';

// slice, substring, substr
let slice = a.slice(1, 3);
let substring = a.substring(1, 3);
let substr = a.substr(1, 3);

console.log(slice);		// "el"
console.log(substring);	// "el"
console.log(substr);	// "ell"



// slice vs substring
slice = a.slice(3, 1);
substring = a.substring(3, 1)
console.log(slice);		// ""
console.log(substring);	// "el"
  • 문자열에서 원하는 부분을 추출하기 위한 메소드

  • <문자열>.slice(start, end),  <문자열>.substring(start, end)
    • 문자열의 start부터 end-1까지의 부분문자열을 반환
    • end를 생략할 경우 문자열의 끝까지 반환
  • <문자열>.slice(start, length)
    • 문자열의 start부터 length길이만큼의 부분문자열을 반환
    • start + length - 1이 문자열의 마지막 인덱스를 벗어난다면 start부터 문자열의 끝까지의 부분문자열을 반환

  • slice와 substring의 차이
    • start 보다 end가 작을 경우 slice는 단순히 빈 문자열을 반환하지만 substring은 start와 end값을 뒤바꾸어 처리

 

 

5. 문자열 분할

let a = 'hello world this is JavaScript';

console.log(a.split(' '));	// ["hello","world","this","is","JavaScript"]
  • 문자열을 구분자로 분할하여 토큰화하기 위한 메소드

  • <문자열>.split(<구분자>)
    • 구분자를 기준으로 문자열을 분할하여 분할된 문자열들의 배열을 반환
    • 구분자를 생략할 경우 문자열 전체를 배열에 담아 반환
    • 빈 문자열을 구분자로 사용할 경우 한 문자씩 쪼갤 수 있음

 

 

6. 대소문자 변환

let a = 'hello world this is JavaScript';

let upper = a.toUpperCase();
let lower = a.toLowerCase();

console.log(upper);	// "HELLO WORLD THIS IS JAVASCRIPT"

console.log(lower);	// "hello world this is javascript"
  • 문자열을 구성하는 알파벳을 대/소문자로 변환하는 메소드
  • <문자열>.toUpperCase() ,   <문자열>.toLowerCase()
    • 각각 모든 문자를 대문자로 치환한 문자열과 소문자로 치환한 문자열을 반환

 

 

7. 공백 제거

let a = '   hello world this is JavaScript   ';

let afterTrim = a.trim();

console.log(a);			// "   hello world this is JavaScript   "

console.log(afterTrim);	// "hello world this is JavaScript"
  • 문자열 좌, 우의 공백과 줄바꿈을 제거한 문자열을 반환

'언어 > JavaScript' 카테고리의 다른 글

#5 기본 구문  (0) 2022.02.17
#4 함수(Function)  (0) 2022.02.17
#3 배열(Array)  (0) 2022.02.15
#1 기본 문법  (0) 2022.02.14
#0 자바 스크립트  (0) 2022.02.14

1. 변수(Variable)의 선언

/* var 키워드 */
var v_1 = 5;
var v_1 = 3;
var v_2;
v_2 = 7;


/* let 키워드 */
let l_1 = 1;
// let l_1 = 2;   => 에러발생
let l_2;
// console.log(l_2);   => 에러발생
l_2 = 4;


/* const 키워드 */
const c_1 = 3;
// const c_2;   => 에러발생
  • JavaScript에서 변수는 자료형 대신 var, let, const 3가지 키워드를 통해 정의할 수 있다.

  • var
    • 같은 이름의 변수 중복선언 가능
    • scope가 함수레벨이기 때문에 선언 위치에 상관없이 함수가 종료될 때까지 유지
    • 선언 이후 초기화 전에 참조시 undefined 반환

  • let
    • 같은 이름의 변수 중복선언 불가능(scope가 다르다면 가능)
    • scope가 블록레벨이기 때문에 선언된 블록(반복문, 조건문 등) 내에서만 유지
    • 선언 이후 초기화 전에 참조시 에러 발생
    • 일반적인 변수를 선언할 경우 이 키워드를 사용하는 것이 권장됨

  • const
    • let과 거의 동일하지만 값의 변경이 불가능
    • 선언과 동시에 초기화된 이후 값이 변경되지 않는 불변값

 

 

2. 원시 자료형(Primary Data Type)

  • Number
    • 말 그대로 숫자를 나타내기 위한 자료형
    • -(2^53 - 1) ~ (2^53-1) 까지의 수와 +Infinity, -Infinity, NaN(Not a Number)를 나타낼 수 있음

  • BigInt
    • Number의 안전 한계(Number.MAX_SAFE_INTEGER)를 넘어서는 큰 정수를 안전하게 저장/연산 가능
    • 정수뒤에 n을 붙이거나 생성자를 호출하여 생성 가능
    • Number타입과 같은 연산자를 지원하지만 Number타입과의 연산은 불가능

  • Boolean
    • 참/거짓을 나타내기 위한 논리타입
    • true, false의 두 가지 값을 가짐

  • String
    • 텍스트 데이터를 나타내기 위한 문자열타입
    • 배열처럼 index를 통해 각 문자에 접근 가능(ex: 문자열 str의 첫 번째 문자는 str[0])
    • 불변 타입이기에 값의 변경은 불가능
    • substr이나 concat, + 연산자 등을 통해 새로운 문자열을 생성하는 것은 가능

  • Symbol
    • 고유하고 변경 불가능한 타입
    • Symbol 함수를 호출하여 생성 가능
    • Symbol 함수 생성시 Description에 해당하는 문자열을 인자로 넘겨줄 수 있음
    • Description이 같아도 별도의 함수호출로 생성된 Symbol은 서로 다른 Symbol

  • Object
    • 이름: 값으로 이루어진 속성(attribute)의 집합
    • Python 등 다른 언어의 딕셔너리(Dictionary)와 유사한 구조를 가진다.
    • 속성의 이름(key)에는 String과 Symbol만이 사용될 수 있음
    • 속성의 값에는 어떤 타입의 데이터도 올 수 있음(함수도 가능)

  • Null
    • 아무 값도 없음을 나타내기 위한 변수
    • null 하나의 값만을 가짐

  • Undefined
    • 아직 정의되지 않았음(초기화 x)을 나타내기 위한 변수
    • undefined 하나의 값만을 가짐

 

 

3. 연산자(Operator)

  • 산술연산자(+, -, *, /, %) 
    • 기본적으로는 C나 Java와 동일하게 동작
    • + 연산자의 경우 String 타입간의 연산시 두 문자열을 이어붙인 문자열을 생성하여 반환/
    • / 연산자의 경우 C나 Java와 달리 0으로 나누었을 경우 에러를 발생시키는 대신 Infinity를 반환
    • 양수를 +0(0)으로 나눌 경우  +Infinity를, -0으로 나눌 경우 -Infinity를 반환

  • 증감연산자(++, --)
    • C나 Java와 동일하게 동작

  • 복합대입 연산자(+=, -=, *=, /=, %=, ...)
    • C나 Java와 동일하게 동작
    • += 연산자의 경우 +연산자가 그랬듯이 String 타입간에도 사용가능

  • 논리연산자(!, ||, &&)
    • C나 Java와 동일하게 동작

  • 비교연산자(<, >, <=, >=, ==, !=, ===, !==)
    • 기본적으로는 C나 Java와 동일하게 동작

    • 동등(==, !=)
      • 단순히 두 변수의 값을 비교
      • 서로 다른 타입의 변수일 경우 한쪽을 강제 형변환하여 비교
      • 3 == '3'은 true이며 3 != '3'은 false가 된다.

    • 일치(===, !==)
      • 두 변수의 값과 타입 모두가 일치하는지 비교

    • 객체간의 비교
      • 동등 혹은 일치 연산자를 사용한 비교는 당연하게도 불가능함
      • JSON.stringify를 사용하여 직렬화한 뒤 비교하는 방법 => 속성의 순서가 다르면 사용할 수 없음
      • 가장 좋은 방법은 비교함수를 별도로 정의하는 것

  • 비트 연산자(&, |, ^, ~)
    • C나 Java와 동일하게 동작 

  • 비트 시프트 연산자(<<, >>, >>>)
    • a << b 는 a를 b번 왼쪽으로 비트 시프트하고 오른쪽을 0으로 채움
    • a >> b 는 a를 b번 오른쪽으로 비트 시프트하고 1 미만으로 이동된 비트는 버림
    • a >>> b는 a >> b에서 왼쪽을 0으로 채우는 비트 시프트 연산자

  • 삼항연산자(<조건> ? <참일 때  값> : <거짓일 때 값>)
    • C나 Java와 동일하게 동작

  • 쉼표연산자
    • 쉼표(,)로 여러개의 명령어를 한줄에서 실행 가능
    • 반복문에서 한번의 반복으로 여러개의 변수의 값을 변경시키는 경우를 제외하면 권장되지 않는 스타일

  • delete 연산자
    • 객체의 속성을 제거하기 위한 연산자
    • delete object[propertyKey];
    • delete object.property;
    • delete objectName[index];
    • 제거에 성공할 경우 true, 실패할 경우 false 반환
    • 배열또한 기본적으로는 객체이기 떄문에 delete를 사용할 수 있지만 권장되지 않음
    • 배열의 원소를 삭제할 경우 배열용 메소드를 사용하거나 단순히 값을 덮어씌우는 것이 권장됨

  • typeof 연산자
    • typeof <피연산자>
    • typeof(피연산자)
    • 피연산자의 타입을 나타내는 문자열("number", "string", "object", "function", "undefined" 등)을 반환

  • void 연산자
    • void (구문)
    • void 구문
    • 구문을 실행한 뒤 결과를 반환하지 않도록 지정
    • 괄호를 사용하는 것이 권장됨

  • 관계연산자
    • in 연산자
      • a in b
      • a 속성이 b객체 안에 존재하는지 확인
      • a는 인덱스일 수도 있음(b가 배열일 경우)

    • instanceof
      • a instanceof b
      • 객체 a가 b타입의 인스턴스인지 확인하는 연산자
      • Primary Data Type의 비교에는 사용할 수 없음
      • 상속관계에 있는 객체일 경우에도 검출이 됨

 

 

4. 주석(Comment)

// in-line comment

/* 
    multi
    line
    comment
*/
  • C나 Java와 마찬가지로 // 로 in-line 주석을,  /*  */ 로 multi-line 주석을 쓸 수 있음

'언어 > JavaScript' 카테고리의 다른 글

#5 기본 구문  (0) 2022.02.17
#4 함수(Function)  (0) 2022.02.17
#3 배열(Array)  (0) 2022.02.15
#2 문자열(String)  (0) 2022.02.14
#0 자바 스크립트  (0) 2022.02.14

 JavaScript는 객체지향 기반의 스크립트 프로그래밍 언어이다. 이름때문에 종종 자바에서 파생된

언어로 오해받곤 하지만 사실 둘 다 C의 문법을 기반으로 설계되어 문법적으로 유사하다는 점을

제외하면 그다지 공통점이 없는 완전히 별개의 언어이다. 주로 사용되는 영역은 웹의 프론트엔드

개발이지만 요즘은 Node.js를 통해 백엔드 개발에서도 활용되고있다.  웹 개발을 위해서는 사실상
필수라고 봐도 좋을 언어이기에 기본적인 문법부터 차근차근 배워나가며 정리해보기로 한다.

'언어 > JavaScript' 카테고리의 다른 글

#5 기본 구문  (0) 2022.02.17
#4 함수(Function)  (0) 2022.02.17
#3 배열(Array)  (0) 2022.02.15
#2 문자열(String)  (0) 2022.02.14
#1 기본 문법  (0) 2022.02.14

+ Recent posts