✅ 1. HTML, JS 문법은 동일하다
- HTML과 JavaScript는 웹 개발의 기본 요소로, 문법 체계는 브라우저 환경에서도 동일하게 사용됩니다.
- HTML은 웹 페이지의 구조를 정의하고, JavaScript는 동적 기능을 추가하는 역할을 담당합니다.
✅ 2. CSS, JS에 제공되는 함수는 다르다 (브라우저마다)
- 각 브라우저는 자체적으로 제공하는 API와 함수들이 있습니다.
- 예를 들어, 최신 브라우저는
fetch()함수를 기본 제공하지만, 오래된 브라우저는 지원하지 않을 수 있습니다.
- 브라우저마다 지원하는 함수와 기능이 다르기 때문에 호환성 문제(Cross-browser Compatibility) 가 발생할 수 있습니다.
✅ 3. 브라우저의 점유율은 중요하다
- 개발자는 사용자가 많이 사용하는 브라우저 환경을 우선적으로 고려합니다.
- 예를 들어, Chrome, Safari, Edge, Firefox 등의 주요 브라우저가 대표적입니다.
- 브라우저 점유율이 높은 환경에서 원활하게 동작하도록 개발하는 것이 중요합니다.
- 특정 브라우저에서만 제공되는 기능을 사용할 경우, 다른 브라우저 사용자에게 문제가 발생할 수 있습니다.
✅ 4. 브라우저가 JS의 새로운 함수들을 만들어서 제공하는 이유
- 브라우저 제조사(예: Google, Mozilla, Microsoft 등) 들은 더 많은 개발자를 유치하기 위해 JavaScript의 기능을 개선합니다.
- 새로운 기능을 추가하면 개발자들이 해당 브라우저 환경에서 더 나은 사용자 경험을 제공할 수 있습니다.
- 예를 들어, Chrome에서
Service Workers,WebAssembly같은 최신 기술을 먼저 제공하기도 했습니다.
- 결과적으로, 브라우저 점유율을 높이는 경쟁이 발생합니다.
✅ 5. 독점 X, 시장 분할
- 과거에는 특정 브라우저가 시장을 독점하는 경향이 있었습니다. (예: IE6)
- 하지만, 현대 웹 환경에서는 다양한 브라우저가 공존합니다. (Chrome, Safari, Edge, Firefox 등)
- 개발자는 여러 브라우저 환경을 고려하여 개발해야 하기 때문에 다양한 호환성을 고려 해야 합니다.
- 이는 개발자가 더 많은 시간과 노력을 들여야 하는 문제로 이어집니다.
✅ 6. 표준이 만들어짐
- 브라우저마다 JavaScript의 구현 방식이 다르면 호환성 문제가 발생할 수 있습니다.
- 이를 해결하기 위해 ECMAScript (ECMA) 표준이 등장했습니다.
- ECMAScript는 JavaScript의 표준 사양으로, 다양한 버전이 있습니다.
- 특히 ECMAScript 6 (ES6, 2015) 부터는 많은 변화와 기능 추가가 이루어졌습니다.
✅ 7. 이전 문법 체계와 달라진 점
- ES2015 (ES6) 이전: 기존의 오래된 JavaScript 문법이 사용됨.
- ES2015 (ES6) 이후: 현대적인 JavaScript 문법이 추가됨.
let,const키워드 도입 (변수 선언 방식 개선)- 화살표 함수 (
=>) 도입 - 클래스 문법 (
class) - 템플릿 리터럴 (백틱 사용)
- 모듈 시스템 (
import,export) - 프로미스 (
Promise) - 비동기 처리 (
async/await) - Map, Set 자료구조 추가
- 각 브라우저의 업데이트에 따라 일부 기능은 지원하지 않기도 함.
✅ 8. Babel
- 새로운 JavaScript 문법(ES6 이후)으로 개발할 때, 구형 브라우저는 이를 이해하지 못하는 경우가 많습니다.
- Babel 은 최신 문법으로 작성된 코드를 구형 문법으로 변환해주는 트랜스파일러(Transpiler) 입니다.
- 예를 들어,
const,let같은 키워드를var로 변환하거나, 화살표 함수를 기존 함수 표현식으로 변환합니다.
- 즉, 모든 브라우저에서 호환되도록 코드를 변환해주는 도구 입니다.
✅ 9. JavaScript의 특징
- 브라우저 환경에서 동작: 기본적으로 브라우저 안에서 실행됩니다.
- JavaScript 엔진 (예: V8, SpiderMonkey, Chakra 등) 이 브라우저 내부에 포함되어 있습니다.
- JavaScript는
Script라는 이름이 붙은 이유로, 기생 언어(Scripting Language) 라고도 불립니다.
- 인터프리터 언어: 코드를 한 줄씩 읽고 즉시 실행합니다. (컴파일 언어와 다름)
- 타입 추론: 명시적 타입 선언 없이도 데이터의 타입을 추론하여 사용합니다.
✅ 10. 자바스크립트 엔진 분리시키기 (Node.js)
- 브라우저 없이 JavaScript를 실행할 수 있는 환경을 만들기 위해 Node.js 가 등장했습니다.
- Node.js는 V8 엔진 (Google Chrome의 JavaScript 엔진)을 사용하여 JavaScript를 독립적으로 실행할 수 있게 합니다.
- 이를 통해 서버 측 프로그래밍, 파일 시스템 접근, 네트워크 통신 등을 JavaScript로 구현할 수 있습니다.
- 브라우저 없이도 JavaScript를 실행할 수 있다는 점에서 큰 혁신 입니다.
Share article