>웹 프론트엔드 >JS 튜토리얼 >자바스크립트 학습 입문 2부 js Type_기본 지식

자바스크립트 학습 입문 2부 js Type_기본 지식

PHP中文网
PHP中文网원래의
2016-05-16 19:03:091062검색

이전 기사에서는 js의 일부 개념(어휘 구조)과 데이터 유형(일부)에 대해 설명했습니다. 이 장을 계속 진행한 다음 js에서 데이터와 기능을 작동하는 범위에 대해 알아 보겠습니다.

1. 객체와 기본 유형 간의 변환:
객체가 비어 있지 않은 한, Boolean 환경에서는 true입니다.
new Boolean(false); 🎜 >new Number(0);
new String("");
new Array()
위의 내부 값은 false이지만 개체의 값은 true입니다. valueOf() ? toString()
그중 Date 클래스가 먼저 toString() 변환을 수행합니다.

2. js에서 데이터 값 조작:
모든 언어에는 고유한 데이터 조작 방법이 있습니다.
Js에서도 예외는 아닙니다.
1) 복사하세요. 예를 들어 새 변수에 할당합니다.
2) 함수나 메소드에 매개변수로 전달합니다.
3) 다른 값과 비교할 수 있습니다.

Js는 값에 의한 전달과 주소에 의한 전달의 두 가지 방법을 통해 이러한 데이터의 값을 조작합니다.
이름에서 알 수 있듯이 값 전달은 값을 전달하여 데이터를 조작하는 것입니다. 할당 프로세스 중에 실제 값이 복사되어 새 변수에 저장됩니다. 복사된 값과 원래 값은 완전히 독립적인 두 값입니다. 따라서 복사된 값을 변경해도 원래 값에는 영향을 미치지 않습니다. 크기를 비교할 때 일반적으로 바이트 단위 비교가 수행됩니다.
주소 전달(Passing address) 이름에서 알 수 있듯이 주소를 전달하여 데이터를 조작하는 것입니다. 할당 과정에서 실제 값(참조라고 할 수 있음)의 주소가 복사됩니다. 완전히 독립적이지 않기 때문에 참조를 통해 값을 변경하면 원래 값도 변경됩니다. 크기를 비교할 때 일반적으로 동일한 주소를 참조하는지 확인하기 위해 비교됩니다.
간단한 주소 전달 예:
var a = new Date();
alert(a.getDate())
var b = a
b.setDate(21); 🎜>alert(a.getDate()) // 출력 21

3, 일반적으로 말하면:
기본적인 데이터 유형은 값을 전달하여 작동됩니다. (기본 데이터 유형이 무엇인지 잊어버리면 다시 찾아보면 됩니다.)
객체 데이터 유형은 주소를 전달하여 작동됩니다. (예: 배열 및 함수)
예:
<script>//값 전달<br>a=1 <br>b=a; Alert (a); //출력 1 <br><br>//주소 <br>x=[1,2] <br>y=x; // y에 할당된 것은 x에 대한 참조일 뿐입니다. x 자체가 아닙니다. 이 코드를 실행한 후에도 배열 개체는 여전히 하나이지만 이에 대한 참조는 두 개 있습니다. <br>y[0]=2; <br>alert(x[0] " | " x[1]) //출력 2 | 2 <br></script> 문자열:
js의 문자열은 주소별로 복사되어 전달되며 값으로 비교됩니다.
객체와 배열은 값으로 전달되지만 전달된 값은 실제로 객체 자체가 아닌 참조입니다.
요약: 유형 복사 및 통신 비교
디지털 디지털 값 값 값
부울 다이브 값 값 값
Strough Strings Invasion and Uncosty Value 전달된 주소
는 불변입니다. JS에서는, 문자열 값의 내용을 변경할 수 있는 방법이 없습니다.
문자열의 경우 값으로 전달할지, 주소로 전달할지는 별 의미가 없습니다.

4. 가비지 수집 메커니즘:
Js에서 메모리를 자동으로 해제합니다.
예:
var s = “heelo”;
var b = s.toUpperCase();
s=b; //여기에서 실행하면 js가 자동으로 특정 객체를 감지합니다. s=b이기 때문에 js는 문자열 "heelo"가 차지하는 저장 공간을 자동으로 해제합니다. 즉, 더 이상 원래의 "heelo" 값을 얻을 수 없습니다.

5, 자바스크립트 변수:
Js는 유형이 지정되지 않았습니다. 해당 변수는 모든 유형의 값을 보유할 수 있습니다.

변수 선언:
var a ;
var b
또는
var a, b
var a=0, b=1; 🎜>
중복 선언은 허용됩니다.
선언이 생략되면 js는 변수를 암시적으로 선언합니다. 물론 암시적으로 선언된 변수는 항상 전역 변수입니다.

6, 변수 범위:
Js에는 전역과 로컬의 두 가지 유형이 있습니다.
이름의 정의를 보면 전역 변수의 범위가 전역임을 알 수 있습니다.
JS 코드에는 어디에나 정의가 있습니다.
지역변수의 범위는 지역적입니다.
함수 본문에 정의됩니다.

이름이 같은 지역 변수는 이름이 같은 전역 변수보다 우선순위가 높습니다. 다음 예에서는 이를 보여줍니다.
var a ="abc"; //전역 변수
function check( ){
var a = "efg"; //같은 이름의 지역 변수
document.write(a);}
check(); // efg 출력

더 전형적인 예를 살펴보세요:
varscope = "global"
function f(){
Alert(scope) ; //정의되지 않은 출력
varscope = "local";
경고(범위); //출력 로컬
}
f()>왜 첫 번째가 출력되나요? ? 정의되지 않은 경우는 어떻습니까?
js에서는 지역 변수와 전역 변수의 이름이 같을 때 함수 본문에서 같은 이름을 가진 전역 변수가 숨겨지도록 규정하고 있기 때문입니다.
그러면 지금의 예는 실제로 다음과 같습니다.
function f(){
var range;
Alert(scope)
range = "local"
Alert(scope) );
}
f();
이 예를 이해했다면 로컬과 글로벌의 차이점을 어느 정도 이해했다는 의미입니다.

7, 변수 범위:
내부에서 외부로:
어휘 범위 범위 체인 변수 조회
var x = 1
function f(){
var y = 2;
함수 g(){
var z
}

} g() 객체 호출




f() 객체 호출 y =2;




여기에 전역 변수 x = 1이 정의되어 있나요?

아니요
값 가져오기
여기에 정의되어 있나요?

아니요
값 가져오기
여기에 정의되어 있나요?

아니요
값 가져오기
정의되지 않음

8, 클라이언트 전역 변수:
클라이언트 js에서 Window 개체는 전역 개체인 브라우저 창을 나타냅니다. ,
예를 들어 일반적으로 사용되는parseInt() 및 Math()는 Window 객체에 의해 정의된 속성입니다.

Js는 전역 변수의 다중 실행 환경을 허용하며, 각 환경은 서로 다른 전역 개체를 갖습니다.
예: 클라이언트 js의 각 독립 브라우저 창 또는 동일한 창의 서로 다른 프레임.
그 안의 코드는 모두 자체 실행 환경에서 실행되며 자체 전역 개체를 갖습니다.
물론 parent.frames[0].x 표현식을 사용하여 첫 번째 프레임에서 전역 변수 x를 참조할 수 있습니다. 이렇게 하면 코드가 다른 프레임에 연결됩니다.
하지만 여기에는 보안 문제가 있습니다.

요약;
주로 "값 전달과 주소 전달" 및 기능 범위에 대해 이야기합니다.
초보자에게는 다소 이해하기 어렵습니다. 그래도 이해가 안 되신다면 구글에서 정보를 검색해 보세요



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