JavaScript의 장단점

이진희·2022년 5월 17일
0

개념정리

목록 보기
6/10
post-custom-banner

📍장점

1. 속도(Speed)

: Js는 인터프리터 언어이기 때문에 JAVA와 같이 컴파일이 필요한 다른 프로그래밍 언어에 비해 시간이 적게 소요된다. 또한 클라이언트 스크립트이기 때문에 서버 연결에 드는 시간을 절약할 수 있어서 프로그램 실행 속도를 높인다.

2. 단순함

3. 인기

: 현대의 모든 브라우저들은 JS를 지원하기 때문에, 사실상 우리는 js를 거의 모든 곳에서 발견할 수있다.

4. 정보에 대한 상호운용성(Interoperability)

: 다른 프로그래밍 언어와 완벽하게 호환되기 때문에 개발자들이 다양한 애플리케이션을 만들 때 JS를 선호한다. 다른 웹페이지나 다른 프로그래밍 언어의 스크립트 안에 JS code를 임베드 할 수 있다.

5. 서버 로딩(Server Load)

: (클라이언트에서 동작하는 Js의 경우)서버로 데이터를 주고 받지 않아도 브라우저 자체에서 데이터 유효성 검사를 할 수 있다. 만약 데이터가 불일치 하는 경우, 전체 페이지를 새로고침하지 않고, 브라우저가 페이지의 일부만 업데이트 한다.

6. 풍부한 인터페이스(Rich Interfaces)

: 드래그 앤 드롭이나 슬라이더는 페이지에 풍부한 인터페이스를 제공한다. 이로 인해 웹페이지에서의 사용자 상호작용이 향상된다.

7. 확장된 기능성(Extended Functionality)

: npm 등을 통해 라이브러리를 추가할 수 있다. 이러한 풍부하고 잘 관리된 써스파티 라이브러리는 개발자로 하여금 빠르고 쉽게 JS application을 구축할 수 있도록 한다.

8. 다재다능

: 프론트엔드 뿐만 아니라 백엔드에서도 개발할 수 있다. (Node.js를 사용)

9. 오버헤드 감소(Less Overhead)

: 코드 길이를 줄임으로써 웹 어플리케이션의 성능을 향상시킨다. 이 코드에는 루프, DOM 접근 등 다양한 내장 기능을 사용함으로써 오버헤드가 적다.


📍단점

1. 클라이언트 보안(Client-side Security)

: Js code는 user에게 보이기 때문에, 누군가가 악의적인 의도로 Js code를 사용할 수 도있다. 인증(authentification)없이 소스 코드를 사용하는 것이 이에 해당한다. 또한 데이터 보안을 손상시킬 수 있는 악성 코드를 웹사이트에 삽입하는 것은 매우 쉽다.

2. 브라우저 지원(Browser Support)

: 브라우저마다 JS를 해석(interpret)하는 방법은 제각기 다르다. 따라서, 코드를 배포하기 전에 다양한 플랫폼에서 잘 돌아가는지 시험해봐야한다. 또한 구형 브라우저는 새로운 기능을 지원하지 않는 경우가 있기 때문에 그 부분도 늘 확인해야 한다.

3. 디버깅 기능의 부족(Lack of Debugging Facility)

: 몇몇 HTML 에디터가 디버깅 기능을 제공하긴 하지만, C/C++ 에디터와 같은 다른 에디터에 있는 것처럼 유용하지는 않다. 또한, 브라우저는 에러를 보여주지 않기 때문에 개발자가 문제를 찾아내는 것 자체도 어렵다.

4. 단일상속(Single Inheritance)

: Js는 단일 상속만 지원하고 다중 상속은 지원하지 않는다.

5. 느린 비트 함수(Sluggish Bitwise Function)

:Js는 64비트 부동소수점 숫자(64-bit-floating-point number)로 숫자를 저장하고, 연산자는 32비트 연산자(32-bit bitwise operands)에서 동작한다. 따라서, Js는 숫자를 32-bit signed integer로 변환하고, 그걸 기반으로 연산을 수행하고, 그 결과를 다시 Js숫자로 변환한다. 이러한 연속적인 변환은 시간을 많이 소요하기 때문에 스크립트를 실행하는 데 드는 시간을 늘리고, 스피드는 줄이게 된다.

6. 렌더링 중지(Rendering Stopped)

: 코드에 에러가 딱 하나만 있어도 웹 사이트에서 동작하는 Js code가 완전히 렌더링을 중지해버린다. 사용자에게는 Js가 아예 없는 것처럼 보일 것이다. 그러나 브라우저는 이러한 에러에 매우 관대하다.

7. 다른 OOP 언어와의 차이점 1 - 은닉화의 한계

: JAVA나 TypeScript에는 클래스 내부에서만 쓰이는 속성과 메서드를 구별하는 private 이라는 키워드가 존재한다. 따라서 클래스에 정의된 속성이나 메서드에 private 딱지가 붙어있으면, 클래스 외부에서는 접근할 수 없다.

JavaScript에서는 private 이 있긴 하지만, 지원하는 브라우저가 별로 없다.

8. 다른 OOP 언어와의 차이점 2 -추상화 기능 부재

: OOP의 추상화는 속성과 메서드의 이름만 노출시켜 사용을 단순화함을 의미한다. 다시 말해, 인터페이스를 단순화함을 의미한다.
인터페이스를 명시적으로 작성해놓음으로써, 이 클래스가 메서드 이름이 의도한 대로 작동할 것임을 드러낸다. 또한 실질적인 구현은 공개하지 않고 사용법만 노출시킬 수 있다.

특히 이러한 인터페이스 기능은 스크립트가 외부에 공개되는 모듈(ex. API)일 때 유리하다.
하지만 JavaScript에는 이러한 인터페이스 기능이 없다.

post-custom-banner

0개의 댓글