문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 JavaScript (문단 편집) == 기타 == * [[Java]]와는 이름의 유사성과 같은 C-족 언어라는 걸 빼면 전혀 상관이 없는, 완전히 별개의 언어다. 프로그래밍에 대해 잘 모르는 사람들이 아직까지도 자주 헷갈려하는 부분.[* Java는 객체 지향, JavaScript는 객체 기반 언어이다.] * JavaScript 언어 자체는 ECMA-262 표준 스펙에 따른 공개된 언어이지만 '''JavaScript라는 용어는 [[오라클(기업)|오라클]]의 등록 상표이다.''' 물론 오라클은 JavaScript에 대한 간섭을 하지 않으나, 엄연히 등록 상표인 만큼 공개적으로는 ECMAScript라 명명하고 있고 개발자들 사이에서도 ECMAScript 부르기 운동을 전개하긴 했지만 큰 성과는 없었다. 커뮤니티 상에서는 JavaScript라 불러도 문제는 없으니. * 해외에서는 JavaScript를 결과물로 내보내는 컴파일러가 많이 등장하고 있다. 이와 함께 고성능을 요구하는 프로그램을 작동시키기 위해 가비지 컬렉터와 산술 연산을 지금보다 효율적으로 수행하기 위한 서브셋 개발이 진행 중이다. LLJS(Low-Level JavaScript)와 asm.js가 대표적이다. 이러한 서브셋과 컴파일러는 C++ 같은 언어로 작성된 프로그램을 JavaScript로 컴파일 해서 돌릴 수 있게 한다. 또한 JSIL은 CIL과 .Net 가상기계를 다시 JavaScript로 컴파일하는 프로젝트다. 이러한 방식을 사용한 예로, [[https://archive.org/details/classicpcgames|archive.org에서 제공하는 Classic PC Games Archive]]가 있다. [[DOSBox]], [[MAME|MESS]]를 [[LLVM]]/[[Clang]]으로 컴파일하여 웹 브라우저에서 구동하게 한 것이다. Core i5 정도의 컴퓨터라면 플레이 하는 데 거의 지장이 없는 수준을 보여준다. * 웹 애플리케이션의 개발 트렌드를 따라가다 보면 흥미로운 사실을 발견할 수 있는데, 웹 클라이언트 사이드 언어인 JavaScript를 사용하는 방식이 절차형에서 객체 지향으로, 다시 함수형으로 이동하고 있다는 사실을 발견할 수 있다. 현재는 함수형에서 더 발전해 반응형(Reactive)으로 가고 있고 reactive 구현체인 rxjs는 현재 프론트엔드 3대장 프레임워크인 [[AngularJS]]/[[Angular]]의 필수 패키지 중 하나이다. 다른 reactive 구현체로는 Java에서 쓰이는 rxjava가 있다. * JavaScript는 멀티패러다임 언어로, 절차형, 함수형, 논리형을 포함한 그 어떤 방식으로도 코딩이 가능하다. 단, 이걸 JavaScript 킹왕짱 만능 끝판왕 종결자로 생각해서는 안 된다. 나쁘게 말하면 잡탕이기 때문. 정확히는 개발자가 패러다임을 흩뜨리지 않고 잘 쓸 수 있을 정도의 수준이 되어야 멀티 패러다임 언어를 이용한 소프트웨어가 잡탕이 안 된다. [[C++]]를 예시로 보면 너무 많은 패러다임을 지원해서 배우기도 쓰기도 어려운 언어 중 하나가 되어버렸고, 결국 좋은 개발자를 찾기가 힘든 상황이 됐다.[* 그래도 언매니지드 언어류에서는 대체가 없다. 웹에서 JS를 대체할 언어가 없는 것과 비슷하다. [[Rust(프로그래밍 언어)|Rust]]가 그 자리를 노리고는 있으나, 아직까지 큰 진전은 없다.] * 얼마 전까지만 해도 언어가 아닌 [[매크로]]로 취급됐는데 이제는 독립적인 언어로 인정되고 있는 이유는, 더 이상 브라우저의 확장이나 플러그인만을 위한 것이 아닌, 서버형인 Node.js(구글 V8 엔진)나 컴파일형인 JavaScript .Net 같은 것들의 개발에 기인한 것이다. 아마도 머지않아 더글라스 크락포드(Douglas Crockford)의 주장과 요구대로 독립적인 언어로 선언이 될 수도 있을 것이다. * [[류샤오보]] 사망 이후 중국에서는 뜬금없이 금지어가 되었다. 추모 분위기 확산 방지를 위해 [[RIP]]를 금지어로 지정했더니 이 철자가 들어가는 JavaSc'''rip'''t가 얼떨결에 피해를 본 것. * 2018년 11월 기준 해커랭크의 조사 결과 JavaScript에 능숙하다고 응답한 개발자의 비율이 73%로 가장 높게 나타났다. 2위는 [[Java]]로 71%. [[http://www.ciokorea.com/news/116187|#]] * 어째서인지 await, async, of, let, yield는 예약어이지만 변수나 함수명으로 사용할 수 있다. 기존에는 이 단어들이 예약어가 아니었기에 이 단어들을 변수명으로 썼던 스크립트의 호환성을 보장하기 위해서일 수 있다. * 이를 활용해서 of를 이터레이터나 배열로 해놓고 {{{for(of of arr) { ... } }}}나 {{{for(i of of) { ... } }}}라고 쓰는 것도 가능하다. * {{{async function async() { ... } }}}라는 코드도 정상 작동한다. 하지만 {{{async function await() { ... }; console.log(await await());}}}라고 쓰면 오류가 난다. 허나 코드 가독성이 낮아지기 때문에 안 쓰는 것이 좋다. * JavaScript의 싱글스레드 이벤트 루프 기반의 작동 방식 때문인지 {{{setInterval()}}} 또는 {{{setTimeout()}}} 함수 사용 시 약간의 지연이 발생한다.[* 자세히 말하자면, 이벤트루프의 호출 우선순위에서 callback queue는 job queue나 microtask queue 보다 우선순위가 낮기 때문이다.] * 너무 오래된 컴퓨터에서 최신 웹 페이지의 JavaScript를 불러오면 브라우저에서 "JavaScript가 과도하게 로드되어 종료해야 합니다"같은 메시지가 뜨거나 브라우저가 뻗어버릴수 있다. * 구형 기기에서 동영상이 많은 나무위키의 문서를 볼 때도 뻗어버리므로 JavaScript를 잠시 끄면 된다. * 난해한 프로그래밍 스타일로 [[JSFuck]]이 있다. * 수많은 문제점으로 인해 현존 프로그래밍 언어들 중 가장 많이 까이는 언어다. 동적 언어들이 유달리 까이는 경우가 많지만 자바스크립트는 잊을만 하면 노근본이나 쓰레기로 까이며 이는 뚱이 밈처럼 해외에서도 별반 다르지 않다. 역으로 말하면 그만큼 자바스크립트를 사용하는 환경이 많다고 볼 수 있다. 이외에도 많이 까이는 언어는 [[PHP]]와 [[Python]]이 있다. 그나마 파이썬은 호평하는 층이 많은 편이다. 자바스크립트는 10일, 파이썬은 7일만에 설계되었다는 비슷한 점이 있긴 하다. 그런데 자바스크립트는 자바스크립트를 만든 [[브랜든 아이크]] 자신조차도 너무 급하게 만들었다는 걸 스스로 인정했다. * 마법사책으로 유명한 MIT출판사의 Structure and Interpretation of Computer Programs(SICP)는 원래 교육에 [[LISP]]의 방언인 [[Scheme]]을 사용했는데 2022년에 [[http://mitpress.mit.edu/9780262543231/structure-and-interpretation-of-computer-programs/|자바스크립트 버전]]이 출판되었다. * Javascript를 포함한 온갖스크립트를 차단하면 패킷량을 줄일수 있으나 Opera Mini의 극도모드 마냥 완전히 줄어드는게 아니니 주의하자.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기