Categories

  • posts

Tags

  • JavaScript

자바스크립트

  • 자바스크립트는 웹 브라우저에서 동작하는 스크립트 언어로 시작
    초창기 자바스크립트는 웹 페이지 제작에 있어서 보조적인 기능을 수행하는 용도로만 사용되었다.

  • 브라우저에서만 사용된다 하여 저평가된 언어 였으나
    웹이 발전되고, jQuery가 등장하면서 DOM 핸들링이 쉬워지면서 급격히 발전되었고,
    Node Js의 등장으로 백단 개발까지 가능해진 지금은 github 프로젝트 기준 가장 많이 사용되고 있는 언어가 되었다!

자바스크립트 분석

  • 데이터 타입이 느슨하다. (타 언어(C#, Java 등) 처럼 타입과 함께 변수 선언을 하지 않아도 된다.)

엄격한 타입으로 변수 선언을 해야한다면
문자(char), 정수(int), 실수(float or double) 등

int a = 10; // integer 선언
String b = "test text"; // String 선언

이런 식이 되어야 하겠지만,
자바스크립트는 느슨한 타입이여서

var a = 10; // Number 선언
var b = "test text"; // 문자열 선언

이정도로 된다.

  • 함수가 일급 객체로 다뤄진다.
    함수가 변수에 대입되거나, 반환값이 함수이거나, 인수로 넘겨지는 등 의 제약이 전혀 없음

  • 클래스를 지원하지 않지만 객체지향 프로그래밍이 가능(모든 객체가 갖는 프로토타입을 활용)
    프로토타입 체인과 클로저로 상속, 캡슐화 등이 가능하다.

  • 강력한 객체 리터럴 표현법

  • 단순 변수선언이 전역변수(global)로 생성 되어버리는 점,
    함수 내에서도 var 키워드 없이 변수를 선언하면 전역변수로 선언된다.

WhiteSpace

  • 공백을 표현하는 문자. 인터프리터가 무시하는 문자
  • 주석으로는 여러줄 주석 /* */ 와 한줄주석 // 가 있음

### 이름

  • 변수, 매개변수, 속성 명 등에 사용되는 이름선언
  • 하나 이상의 영문, 숫자, _ 를 사용, 영문은 대소문자를 가린다.
  • 예약어(타 언어와 비슷함) 는 사용 불가

### 숫자

  • 자바스크립트는 숫자형은 하나만 존재함 (정수형이 따로 없고 모든 숫자를 실수로 처리함)
  • NaN (Not a Number) 는 수치연산을 해서 정상값을 얻지 못할 때 출력된다
(문자) - (숫자) 
 'hello' - 10 = NaN

문자열

  • ” “ 또는 ‘ ‘ 사이에 들어가는 모든 문자
  • 모든 문자는 16비트 유니코드 (전 세계의 모든 문자를 다루도록 설계된 표준 문자 전산 처리 방식, UTF-8 이런거..)
  • 문자열은 length 속성있음 (문자열 길이 체크, 문자열은 문자 배열처럼 인덱스로 접근이 가능)
    • 문자열은 변하지 않는다. + 연산자를 사용할 경우 ‘t’ + ‘e’ + ‘s’ + ‘t’ = ‘test’ 가 된다.
      즉, 자바스크립트에서는 한번 생성된 문자열은 읽기만 가능하지 수정은 불가능하다.
  • 문자열을 다루는 메소드가 있음.
    toUpperCase() : 대문자로 변환
    toLowerCase() : 소문자로 변환
    

    …등등 문자열을 다루는 메소드는 무지 많다.

표현식(expressions)

  • 무언가를 표현하는 수식. 프로그래밍 언어에서 expression이란, 변수, 상수, 연산자로 이루어진 식을 말한다.
  • 표현식은 항상 결과값(연산 후의 결과) 가 존재한다.
  • 변수와 상수를 묶어서 피연산자(Eperand) 라고 하기도 함.

리터럴

  • 데이터를 표현하는 방식(표기법), 쉽게 생각해서 변수 등에 저장되는 값 자체를 말함
  • 숫자, 문자열, 객체, 배열, 함수, 정규표현 등

함수

  • 선언문 방식과 표현문 방식으로 함수를 정의 할 수 있다.
//선언문
function test (a, b) {

   return a + b;

}

//표현문
var test = function (a, b){

   return a + b;

}
  • 함수명은 선택사항이므로 함수명이 없는 익명함수도 존재할수 있으나, 선언문 방식은 함수명이 반드시 정의되어야 함
  • 함수 선언 방식에 따라 동작방식이 차이가 있다.
  • 표현식 함수선언만 사용하길 권장함. 함수 호이스팅은 나중에 서술…