찾다
웹 프론트엔드JS 튜토리얼JavaScript에 대해 당신이 모를 수도 있는 6가지 사실

작가: Lewis Cianci✏️

그럼 당신은 JavaScript 개발자이신가요? 반갑습니다. 이 코드가 무엇을 반환한다고 생각하시나요? 그리고 네, 이것은 까다로운 질문입니다:

function returnSomething()
{
  return
    {
      name: 'JavaScript Expert'
      contactMethod: 'Shine batsign at sky'
    }
}

C#, Java 등 거의 모든 언어에서는 JavaScript Expert를 사용하여 개체를 가져옵니다. JavaScript에서도 동일한 결과를 얻을 수 있다고 생각하시면 이해가 되실 것입니다.

하지만 유머러스하게 이 내용을 개발 콘솔에 표시한 다음 기능을 실행해 보세요. 거의 믿을 수 없을 정도로 정의되지 않은 결과가 반환됩니다.

일이 계획대로 되지 않을 때

소프트웨어 개발자로 일한다는 것은 앱이 잘 작동하든 제대로 작동하지 않든 앱 작동 방식에 대한 책임이 있다는 것을 의미합니다. 그 주요 제약은 사용하기로 결정한 도구입니다. 자신이 사용하는 것이 무엇인지 이해했다면 소프트웨어를 설계하는 방법에 있어서 좋은 선택을 하게 될 것입니다.

JavaScript는 많은 신규 소프트웨어 개발자가 선택하는 언어라는 점에서 독특합니다. 모바일 앱을 작성하고 싶으신가요? 그냥 React Native와 JavaScript를 사용하세요. 데스크톱 앱? 네이티브와 자바스크립트에 반응하세요. 어딘가에서 실행할 수 있는 클라우드 기능? Node.js, 그리고 짐작하셨겠지만 JavaScript입니다.

그러나 JavaScript가 존재한 기간으로 인해 상당한 문제와 문제점이 있습니다. 이들 중 일부는 약간 재미있는 것부터 내 코드가 작동하지 않는 것까지, 왜 심각한지 모르는 것까지 다양합니다.

또한 Internet Explorer 6이 전성기였던 시대에 살았다고 해도 웹이 너무 많이 손상되므로 이러한 디자인 결정 중 일부를 수정하기에는 너무 늦었을 것입니다. 그렇다면 오늘 시도해 볼까요? ??

그럼 JavaScript는 어떻게 우리가 예상하는 방식으로 작동하지 않나요? 살펴보겠습니다.

자동 세미콜론 주입(ASI)

처음에 나열된 예는 JavaScript 해석기에서 허용되지만 예상한 결과를 산출하지 않습니다. 그 이유는 자동 세미콜론 주입 때문입니다.

C#과 같은 일부 언어에서는 각 줄을 세미콜론으로 끝내는 것에 대해 독단적입니다. JavaScript에서는 줄의 끝을 표시하기 위해 세미콜론도 사용하지만 세미콜론은 실제로는 선택 사항입니다. 선택 사항이라는 것은 JavaScript가 세미콜론이 있어야 하는지 여부를 결정하기 위해 일련의 복잡한 규칙을 적용한다는 것을 의미합니다.

처음의 예에서 여는 괄호는 반환과 같은 줄에 나타나지 않기 때문에 ASI는 우리를 위해 거기에 하나를 팝합니다. 따라서 JavaScript에 관한 한 우리 코드는 실제로 다음과 같습니다.

function returnSomething()
{
  return ; // 



<p>이를 방지하는 방법은 여는 괄호를 리턴과 같은 줄에 두는 것입니다. 그리고 세미콜론은 JavaScript에서 기술적으로 선택 사항이지만 장기적으로 해당 개념으로 작업하는 것은 해를 끼칠 것입니다. </p><p>인터뷰를 할 때 JS를 작성해야 하는데 "하지만 선택 사항이다"라는 근거를 바탕으로 세미콜론 없이 작성한다면 종이를 뒤섞고 낄낄거리는 일이 많이 있을 것입니다. 그냥 하지 마세요.</p>

<h2>
  
  
  비순차적 키가 있는 배열
</h2>

<p>간단한 배열이 있다고 가정해 보겠습니다.<br>
</p>

<pre class="brush:php;toolbar:false">function returnSomething()
{
  return
    {
      name: 'JavaScript Expert'
      contactMethod: 'Shine batsign at sky'
    }
}

우리는 배열을 사용하여 팝, 푸시, 추가 등 원하는 모든 작업을 수행할 수 있다는 것을 알고 있습니다. 그러나 우리는 다른 언어와 마찬가지로 JavaScript를 사용하여 인덱스를 통해 배열 요소에 액세스할 수 있다는 것도 알고 있습니다.

그러나 JavaScript의 특이한 점은 배열이 아직 해당 인덱스에 도달하지 않은 경우에도 배열 인덱스별로 요소를 설정할 수 있다는 것입니다.

function returnSomething()
{
  return ; // 



<p>좋은 질문이 있습니다. 세 가지 요소만 설정했을 때 배열의 길이는 얼마입니까? 어쩌면 직관적이지 않을 수도 있지만 101입니다. 한편으로는 배열 항목 2~99가 정의되지 않은 것이 합리적이지만, 다른 한편으로는 100이 아닌 3개의 객체만 설정했습니다. </p>

<p><strong>왜 중요합니까?</strong> <br>
아마도 당신의 눈이 머리 밖으로 굴러가면서 “좋아 루이스, 수동으로 항목을 배열에 할당하고 바퀴가 빠지는 것을 지켜보고 있습니다. 그것은 JavaScript가 아니라 당신을 이상하게 만듭니다.” </p>

<p>그 입장은 이해하겠습니다. 하지만 중첩된 for 루프에서 무언가를 하고 있는데 잘못된 반복자를 선택하거나 엉터리 계산을 한다고 잠시 상상해 보세요. </p>

<p>어느 순간 '나는 왜 예상한 결과, 예상한 결과, 정의되지 않은, 예상한 결과가 나오는 걸까'라는 생각은 광기로 변하고, 곧 눈물을 흘리게 될 것입니다! 당신이 하려는 일을 수용할 수 있을 만큼 어레이가 마술처럼 성장했다는 사실은 거의 알지 못했습니다. </p>

<p>유일한 문제는 당신이 잘못된 일을 하려고 했다는 것입니다. </p>

<p>C#과 같은 다른 언어와 비교하자면(특별한 이유 없이) 배열의 길이는 고정되어 있습니다. 배열을 생성할 때 길이를 정의해야 합니다. List<t>와 같은 다른 동적 컬렉션 개체의 경우에도 정의되지 않은 인덱스에 할당할 수 없습니다. 따라서 중첩 루프가 이전에 할당되지 않은 인덱스에 쓰려고 하면 프로그램에서 오류가 발생합니다. </t></p>

<p>예외는 좋지 않지만 아마도 옳은 일일 것입니다. 내 말은, 스위스 치즈 배열을 만들겠다는 뜻이 아니었나요? 그렇게 하려는 사람이 있나요? 바라건대 그렇지 않습니다.   </p>

<p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954908866066.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> <em>개발자가 스위스 출신이라면 스위스 치즈 어레이뿐이다. 그렇지 않으면 반짝이는 나쁜 프로그래밍일 뿐입니다.</em></p>
<h2>
  
  
  프리미티브에 속성 추가는 무시됩니다.
</h2>

<p>우리는 JavaScript에서 프로토타입에 새로운 기능을 할당할 수 있다는 것을 알고 있습니다. 따라서 문자열이나 배열에 ✨특별한 능력✨을 부여할 수 있습니다. 물론 그렇게 하는 것은 문자열 프로토타입이 다른 문자열 프로토타입과 다르게 동작하게 되어 이미 많은 개발자에게 말할 수 없는 가슴 아픈 일을 안겨주기 때문에 끔찍한 습관입니다. </p><p>예를 들어 다음과 같이 할 수 있습니다.<br>
</p>

<pre class="brush:php;toolbar:false">function returnSomething()
{
  return
    {
      name: 'JavaScript Expert'
      contactMethod: 'Shine batsign at sky'
    }
}

그런 다음 문자열 개체를 만들 수 있습니다.

function returnSomething()
{
  return ; // 



<p>그러면 false가 반환됩니다. </p>

<p>문자열이 작동하는 방식에 대한 공장 정의 구현에 함수를 무작위로 넣을 수 있다는 점이 귀엽습니다. </p>

<p>물론, 그 좋은 사람들은 모두 허리를 부러뜨리고 TC39 사양에서 JavaScript를 정의하는 데 수만 시간을 소비했습니다. 하지만 그렇다고 해서 적절하다고 생각되는 대로 임의의 기능을 실행하는 것을 단념하지 마십시오. </p>

<p>우리가 특정 유형의 고통이 마음에 들지 않으면 원하는 대로 복잡한 개체에 새로운 기능을 무작위로 할당하여 코드가 매우 특별한 형태의 넌센스가 되도록 할 수도 있습니다. 이 코드는 오직 자신과 신만이 이해할 수 있습니다. : <br>
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954908998836.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> <br>
이와 같이 객체를 구성하는 것은 당연히 끔찍한 생각이지만, 우리가 이러한 배신을 저지르기 때문에 JavaScript는 우리의 요청을 의무화합니다. 우리의 testObject는 우리가 던진 새로운 함수를 취합니다. </p>

<p>그러나 놀랍게도 객체 원시형에서는 선의가 소진됩니다. <br>
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909074477.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> <br>
인터프리터는 문자열 프리미티브에 함수를 할당하려는 우리의 시도를 인정합니다. 심지어 우리에게 그 기능을 다시 반영합니다. 그러나 호출을 시도하면 TypeError가 발생합니다. testString.onlyFalse는 함수가 아닙니다. 이를 수행할 수 없는 경우 일반적으로 함수 호출이 아닌 할당 시 발생할 것으로 예상합니다. </p>

<p><strong>왜 중요합니까?</strong> <br>
좋든 나쁘든 JavaScript는 매우 유연하고 동적인 언어입니다. 이러한 유연성 덕분에 다른 언어에서는 불가능한 기능을 구성할 수 있습니다. 뭔가가 작동하지 않으면 예외가 발생해야 합니다. JavaScript가 이 어색한 명령을 받고 "어, 알았어"라고 말한 다음 이를 잊어버리면 이러한 근본적인 기대가 바뀌게 됩니다.</p>
<h2>
  
  
  유형 강제
</h2>

<p>다른 강력한 유형의 언어에서는 저장하기 전에 저장하는 데이터의 유형을 정의해야 합니다. JavaScript에는 이와 같은 종류의 제한이 없으며 객체가 정의된 유형에서 멀리 떨어져서 함께 잘 작동하도록 노력합니다. </p><p>한편으로는 변수를 해당 유형으로 앞뒤로 캐스팅하지 않아도 됩니다. 그래서 편리합니다: <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909188290.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"><br>
부울의 경우에도 마찬가지입니다. <br>
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909211047.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> <br>
이 접근 방식은 우리가 "추가"라고 알려진 금기 의식에 참여하기를 원할 때까지 완전히 건전하고 타당합니다. "1"과 1을 더하려고 하면 어떻게 될까요? 유형 강제는 어떤 방식으로 진행되나요? <br>
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909319865.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> <br>
파티에 부끄러움을 가져오면 <del>광기</del>의 즐거움이 배가됩니다. <br>
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909445100.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> <br>
아 — 부울이 어떻게든 내부 숫자이기 때문인가요? <br>
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909562905.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> 아니요. 부울입니다. JavaScript는 이유 때문에 사각형의 성가신 가장자리를 깎아내어 둥근 구멍에 맞춥니다. </p>

<p><strong>왜 중요합니까?</strong> <br>
숫자를 더하는 것과 같은 기본적인 작업을 수행할 때 결과가 다양해지면 이상한 버그가 발생할 수 있습니다. 유형을 서로 바꾸면 의도한 결과가 나오지 않을 수 있으므로 비교할 때 삼중 등호(===)를 고수하는 것이 좋습니다.</p>
<h2>
  
  
  함수 호이스팅
</h2>

<p>오늘날 우리가 사용하는 언어에서 중요한 측면은 '함수 호이스팅'이라는 것입니다. 기본적으로 이는 파일의 원하는 위치에 함수를 작성할 수 있고 함수가 선언되기 전에 호출할 수 있음을 의미합니다.<br>
</p>

<pre class="brush:php;toolbar:false">function returnSomething()
{
  return
    {
      name: 'JavaScript Expert'
      contactMethod: 'Shine batsign at sky'
    }
}

작동시키기 위해 코드 순서를 수동으로 변경할 필요가 없기 때문에 편리합니다.

하지만 함수를 설명하는 방법은 여러 가지가 있습니다. 이 예에서는 이를 위해 함수 선언을 사용했습니다. 함수 표현식을 사용할 수도 있습니다:

function returnSomething()
{
  return ; // 



<p><strong>왜 중요합니까?</strong> <br>
두 경우 모두 함수 선언에 큰 차이는 없지만, 잘못된 함수를 선택하면 함수를 선언한 후 호출하지 않는 이상 함수를 호출할 수 없게 됩니다.</p>

<h2>
  
  
  Null은 객체입니다.
</h2>

<p>다른 언어에서는 개체 속성을 할당하거나 null일 수 있습니다. null은 속성이 할당되지 않았음을 나타냅니다. 우리 머릿속에서 동일시하는 것은 간단합니다. 거기에 객체가 있거나 null이 있습니다. 원한다면 속성을 다시 null로 할당할 수도 있습니다. </p>

<p>JavaScript는 null과 정의되지 않음을 포함하여 이러한 환경을 복잡하게 만듭니다. 하지만 다 똑같죠? 손에 공이 있거나 없거나 둘 중 하나입니다. </p><p>놀랍지도 않게 모두 똑같지는 않습니다. JavaScript에서 null은 의도적으로 값이 없음을 나타내는 반면, 정의되지 않음은 묵시적으로 값이 없음을 나타냅니다. 그러니까 고의적이든 명시적이든, 하늘에 쓴 것이든 가치 없음 = 가치 없음이라는 사실이겠죠? </p>

<p>다시 말하지만, 불행하게도 방정식은 그렇지 않습니다. </p>

<p>그럼 undefine의 종류는 뭔가요? <br>
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909681428.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> </p>

<p>그렇습니다. null 유형은 무엇인가요? <br>
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909737640.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> </p>

<p>? 그것은 객체입니다. 따라서 JavaScript에서는 복합 객체와 null의 유형이 동일합니다. 둘 다 객체입니다. <br>
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909893812.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> </p>

<p><strong>왜 중요합니까?</strong> <br>
JavaScript에는 강력한 유형 검사 시스템이 내장되어 있지 않으며 선택할 수 있는 기본 유형은 소수뿐입니다. 따라서 변수의 내용을 이해하기 위해 typeof를 사용하는 것은 까다로울 수 있습니다. 변수에 유효한 개체가 있으면 개체를 얻습니다. 그러나 null인 경우에도 여전히 객체를 얻습니다. null 참조가 객체라고 생각하는 것은 직관에 어긋납니다.</p>

<h2>
  
  
  결론
</h2>

<p>오늘날 언어로서 JavaScript의 엄청난 인기에 대해서는 의심의 여지가 없습니다. 시간이 흐르고 npm과 같은 다른 생태계가 계속해서 엄청난 수의 패키지를 호스팅함에 따라 JavaScript의 인기는 계속해서 높아질 것입니다. </p>

<p>하지만 할 일은 끝났습니다. null이 객체이거나 JavaScript가 적절하다고 판단되는 위치에 세미콜론을 표시한다는 것이 아무리 이상하더라도 이러한 시스템은 결코 더 이상 사용되지 않거나 변경되거나 제거되지 않을 것입니다. 일화로 말하자면, 자동 세미콜론 주입이 밤새 꺼지면 CrowdStrike 업데이트보다 더 큰 글로벌 중단이 발생할 수 있습니다. </p>

<p>물론 이들 중 하나를 변경하면 웹에 큰 혼란을 가져올 수 있습니다. 실제로 원래 문제로 돌아가서 해결하는 것보다 개발자에게 이러한 특정 언어의 단점을 인식하도록 하는 것이 실제로 더 안전하고 아마도 더 실용적일 것입니다. </p>

<p>그래서 좋은 선택을 하시고 세미콜론을 사용하는 것을 잊지 마세요!</p>


<hr>

<h2>
  
  
  LogRocket: 컨텍스트를 이해하여 JavaScript 오류를 더 쉽게 디버깅합니다.
</h2>

<p>코드 디버깅은 항상 지루한 작업입니다. 하지만 오류를 더 많이 이해할수록 오류를 수정하는 것이 더 쉬워집니다.</p>

<p>LogRocket을 사용하면 이러한 오류를 새롭고 독특한 방식으로 이해할 수 있습니다. 당사의 프런트엔드 모니터링 솔루션은 JavaScript 프런트엔드에 대한 사용자 참여를 추적하여 오류를 초래한 사용자의 행동을 정확하게 확인할 수 있는 기능을 제공합니다.</p><p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909986001.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"></p>

<p>LogRocket은 콘솔 로그, 페이지 로드 시간, 스택 추적, 헤더 본문이 포함된 느린 네트워크 요청/응답, 브라우저 메타데이터 및 사용자 정의 로그를 기록합니다. JavaScript 코드의 영향을 이해하는 것은 결코 쉬운 일이 아닙니다!</p>

<p>무료로 사용해 보세요.</p>


          

            
        

위 내용은 JavaScript에 대해 당신이 모를 수도 있는 6가지 사실의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
자바 스크립트 행동 : 실제 예제 및 프로젝트자바 스크립트 행동 : 실제 예제 및 프로젝트Apr 19, 2025 am 12:13 AM

실제 세계에서 JavaScript의 응용 프로그램에는 프론트 엔드 및 백엔드 개발이 포함됩니다. 1) DOM 운영 및 이벤트 처리와 관련된 TODO 목록 응용 프로그램을 구축하여 프론트 엔드 애플리케이션을 표시합니다. 2) Node.js를 통해 RESTFULAPI를 구축하고 Express를 통해 백엔드 응용 프로그램을 시연하십시오.

JavaScript 및 웹 : 핵심 기능 및 사용 사례JavaScript 및 웹 : 핵심 기능 및 사용 사례Apr 18, 2025 am 12:19 AM

웹 개발에서 JavaScript의 주요 용도에는 클라이언트 상호 작용, 양식 검증 및 비동기 통신이 포함됩니다. 1) DOM 운영을 통한 동적 컨텐츠 업데이트 및 사용자 상호 작용; 2) 사용자가 사용자 경험을 향상시키기 위해 데이터를 제출하기 전에 클라이언트 확인이 수행됩니다. 3) 서버와의 진실한 통신은 Ajax 기술을 통해 달성됩니다.

JavaScript 엔진 이해 : 구현 세부 사항JavaScript 엔진 이해 : 구현 세부 사항Apr 17, 2025 am 12:05 AM

보다 효율적인 코드를 작성하고 성능 병목 현상 및 최적화 전략을 이해하는 데 도움이되기 때문에 JavaScript 엔진이 내부적으로 작동하는 방식을 이해하는 것은 개발자에게 중요합니다. 1) 엔진의 워크 플로에는 구문 분석, 컴파일 및 실행; 2) 실행 프로세스 중에 엔진은 인라인 캐시 및 숨겨진 클래스와 같은 동적 최적화를 수행합니다. 3) 모범 사례에는 글로벌 변수를 피하고 루프 최적화, Const 및 Lets 사용 및 과도한 폐쇄 사용을 피하는 것이 포함됩니다.

Python vs. JavaScript : 학습 곡선 및 사용 편의성Python vs. JavaScript : 학습 곡선 및 사용 편의성Apr 16, 2025 am 12:12 AM

Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.

Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스Apr 15, 2025 am 12:16 AM

Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

C/C에서 JavaScript까지 : 모든 것이 어떻게 작동하는지C/C에서 JavaScript까지 : 모든 것이 어떻게 작동하는지Apr 14, 2025 am 12:05 AM

C/C에서 JavaScript로 전환하려면 동적 타이핑, 쓰레기 수집 및 비동기 프로그래밍으로 적응해야합니다. 1) C/C는 수동 메모리 관리가 필요한 정적으로 입력 한 언어이며 JavaScript는 동적으로 입력하고 쓰레기 수집이 자동으로 처리됩니다. 2) C/C를 기계 코드로 컴파일 해야하는 반면 JavaScript는 해석 된 언어입니다. 3) JavaScript는 폐쇄, 프로토 타입 체인 및 약속과 같은 개념을 소개하여 유연성과 비동기 프로그래밍 기능을 향상시킵니다.

JavaScript 엔진 : 구현 비교JavaScript 엔진 : 구현 비교Apr 13, 2025 am 12:05 AM

각각의 엔진의 구현 원리 및 최적화 전략이 다르기 때문에 JavaScript 엔진은 JavaScript 코드를 구문 분석하고 실행할 때 다른 영향을 미칩니다. 1. 어휘 분석 : 소스 코드를 어휘 단위로 변환합니다. 2. 문법 분석 : 추상 구문 트리를 생성합니다. 3. 최적화 및 컴파일 : JIT 컴파일러를 통해 기계 코드를 생성합니다. 4. 실행 : 기계 코드를 실행하십시오. V8 엔진은 즉각적인 컴파일 및 숨겨진 클래스를 통해 최적화하여 Spidermonkey는 유형 추론 시스템을 사용하여 동일한 코드에서 성능이 다른 성능을 제공합니다.

브라우저 너머 : 실제 세계의 JavaScript브라우저 너머 : 실제 세계의 JavaScriptApr 12, 2025 am 12:06 AM

실제 세계에서 JavaScript의 응용 프로그램에는 서버 측 프로그래밍, 모바일 애플리케이션 개발 및 사물 인터넷 제어가 포함됩니다. 1. 서버 측 프로그래밍은 Node.js를 통해 실현되며 동시 요청 처리에 적합합니다. 2. 모바일 애플리케이션 개발은 재교육을 통해 수행되며 크로스 플랫폼 배포를 지원합니다. 3. Johnny-Five 라이브러리를 통한 IoT 장치 제어에 사용되며 하드웨어 상호 작용에 적합합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.