>  기사  >  웹 프론트엔드  >  JS 사전 해석에 대한 자세한 해석

JS 사전 해석에 대한 자세한 해석

亚连
亚连원래의
2018-05-21 09:19:051358검색

이제 JS 사전 해석에 대한 관련 이해를 알려드리겠습니다. 이제 그것을 여러분과 공유하고 모든 사람에게 참고 자료로 제공하겠습니다.

1. JS의 메모리 공간은 스택 메모리와 힙 메모리의 두 가지 유형으로 나뉩니다.

스택 메모리: JS 코드 실행을 위한 환경을 제공합니다. -> 개인 역할 필드는 실제로 스택 메모리입니다

힙 메모리: 참조 데이터 유형의 값을 저장합니다(객체는 속성 이름과 속성 값을 저장하고, 함수는 코드를 함수 본문에 문자열로 저장합니다)

2. HTML 페이지에서는 먼저 JS 코드 실행을 위한 환경 -> 전역 범위(전역-> 창)

3을 제공합니다. JS 코드가 실행되기 전에 브라우저는 다음과 같은 작업을 스스로 수행해야 합니다. var/function 키워드로 모든 것을 미리 정의하세요. -> "사전 해석"(변수 선언)

Declaration(선언) -> var num1;

정의(정의) -> 우리가 선언한 변수나 함수에 값을 할당합니다. 예: fn=function(){}

[중요] 변수는 선언만 되었을 뿐 정의되지 않았으며 기본값 is undefine( Undefine)

4. 사전 해석 단계에서 Var과 함수가 다르게 처리됩니다

var -> Operation

function -> 사전 해석 시 선언과 정의가 미리 완료됩니다. (코드 실행 시 정의된 코드는 바로 생략됩니다.)

[중요] 처음에는 사전 해석을 수행합니다. 현재 fn 함수에 저장된 문자열은 모두 문자열이므로 var total은 실질적인 의미가 없으므로 사전 해석이 수행되지 않습니다. ->

console.log(obj);//->undefined
 var obj = {name: "张珊珊", age: 10};
 function fn(num1, num2) {//代码执行到这一行的时候直接的跳过,因为在预解释的时候我们已经完成了声明加定义
var total = num1 + num2;
 console.log(total);
 }
 var num1 = 12;

 fn(num1, 100);//执行fn,把全局变量num1的值赋值给形参num1,把100赋值给形参num2

5, 전역 범위에 선언된 변수는 전역 변수입니다

비공개 범위에 선언된 변수는 비공개 변수입니다. 함수의 형식 매개변수도 비공개 변수입니다.

함수는 프라이빗인가요 아니면 글로벌인가요?

먼저 형식 매개변수인지 확인한 다음 프라이빗 범위에 선언되었는지(var가 있는지 여부) 확인하세요. 둘 중 하나가 프라이빗 변수이면 프라이빗이 됩니다. 현재 함수의 어디에 나타나든 전역 함수와 아무 관련이 없습니다. 둘 다 없으면 상위 수준 범위에서 검색하세요...

6. 함수가 실행되면 함수 본문에서 코드 실행을 위한 새로운 비공개 범위(스택 메모리)가 형성됩니다.

1) 형식 매개변수에 값 할당

2) 비공개 범위에서의 사전 해석
3) 실행 개인 범위의 코드

는 새로운 것을 형성했습니다. 개인 범위는 또한 외부 세계로부터 내부의 개인 변수를 보호합니다. 우리는 함수의 이 보호 메커니즘을 사용합니다 -> "클로저

차이점: var는 코드가 실행되기 전에 선언될 수 있습니다. var가 없으면 미리 선언할 수 없습니다

1. 조건이 true인지 여부에 관계없이 사전 해석이 필요합니다

window预解释:var a; -> window.a;
 if (!("a" in window)) {//"a" in window -> true
 var a = "我们";
 }
console.log(a);//->undefined

2. 사전 해석은 "="의 왼쪽에서만 발생합니다. 사전 해석되어 있고 오른쪽이 값입니다 사전 해석이 없습니다

익명 함수의 함수 표현: 함수 정의 부분을 변수나 요소에 값을 할당하는 이벤트로 처리합니다

미리 해석된 경우: var fn; ->fn의 기본값은 정의되지 않았습니다.

fn();//->undefined() Uncaught TypeError: fn is not a function JS中只有函数可以执行 && JS上面的代码如果报错了,在不进行任何的特殊处理情况下我们下面的代码都不在执行了
var fn = function () {
 console.log("ok");
 };
 fn();

预解释的时候:fn=xxxfff000
 fn();//->"ok"
 function fn() {
 console.log("ok");
 }
 fn();//->"ok"

3. 함수 본문에서 return 아래 코드는 더 이상 실행되지 않지만 다음 코드는 사전 해석에 참여해야 하며 return 이후의 내용은 다음과 같습니다. 처리되지만 값으로 반환되므로 사전 해석이 수행되지 않습니다. 설명

var total = 300;
 function fn() {
 console.log(total);
 return function sum() {};//return是把函数中的值返回到函数的外面,这里是把function对应的内存地址返回的到函数的外面,例如:return xxxfff111;函数体中return下面的代码都不在执行了
var total = 10;
 }
 fn();

4. 익명 함수의 기능은 전역 범위에서 사전 해석되지 않습니다. 익명 함수: 정의와 실행이 함께 완료됩니다

(function(num){})(100) ;

5. 사전 해석 중 중복된 이름이 나타나면 반복 선언 없이 한 번만 선언하세요. 하지만 할당은 계속 반복되어야 합니다

JS에서 변수 이름과 함수 이름이 같으면 중복으로 간주됩니다.

사전 설명:

var fn; 声明
fn = xxxfff000; [声明]不要了+定义
fn = xxxfff111; [声明]不要了+定义
->fn=xxxfff111
 var fn = 12;//window.fn=12
 function fn() {//window.fn=function(){}
 }
 function fn() {
 }

위 내용은 제가 모두를 위해 작성한 내용입니다. 앞으로 모든 사람에게 도움이 될 것입니다.

관련 기사:

Js를 사용하여 배열에서 하나 이상의 항목을 삭제하는 여러 방법 구현


js

에 내장된 객체 Math의 속성과 방법에 대해 자세히 설명합니다. 시선)
JSON 개체(그래픽 튜토리얼, 간단하고 투박함)

위 내용은 JS 사전 해석에 대한 자세한 해석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.