자바스크립트 변수 선언 지식 포인트_기본 지식

WBOY
풀어 주다: 2016-05-16 17:18:44
원래의
1048명이 탐색했습니다.

지난 목요일 점심식사 후에 리더님이 자바스크립트 질문을 보내주셨어요. 우리 팀에는 프론트엔드에서 일하는 사람도 있고, 백엔드에서 일하는 사람도 있고, 모바일 웹에서 일하는 사람도 있는데, 그래서 모든 사람은 질문에 대해 서로 다른 이해를 가지고 있으며 QQ 토론 그룹에서 토론합니다. 비록 결과는 매우 기본적이지만 토론을 통해 많은 것을 얻고 공유했습니다. 물론, 개발 경험이 있는 개발자의 입장에서 보면 이는 자바스크립트를 배우기 위한 가장 기본적인 것들이다. 나는 주로 jQuery나 타사 JS 구성 요소를 사용하기 때문에 기본적인 JavaScript 학습에 충분히 주의를 기울이지 않습니다. 제목은 다음과 같습니다. 두 경고의 출력 결과는 무엇입니까?

코드 복사 코드는 다음과 같습니다.

type=" text/javascript ">
var a = 1;
var a;
Alert(typeof a);

(함수 () {
b = '----';
var b;
})();
Alert( typeof b);


제 대답은 1. 정의되지 않음 2. 정의되지 않음입니다. 그런 다음 지도자는 우리에게 질문에 대한 답을 신중하게 생각해 보라고 요청했습니다. 나의 주제 분석:
1. a를 선언하고 값을 1로 할당한 다음 a를 다시 선언하지만 이때 할당된 값이 없으므로 변수의 기본값은 정의되지 않아야 합니다.
2. b 변수는 함수 내 로컬 변수이고, 전역 변수 b는 경고로 출력되므로 undefiend입니다.
Chrome에서 직접 코드를 실행해 보았는데, 코드의 정확한 결과는 1.number 2.undefine입니다. 여기서 살펴보는 것은 사전에 자바스크립트 변수 선언의 개념이다.
다음과 같은 또 다른 예를 살펴보겠습니다.
코드 복사 코드는 다음과 같습니다.

테스트();

function test(){
Alert("Hello World!");
}


프로그램은 오류를 보고하지 않지만 실행 결과는 Hello World!입니다. . 원리: 컴퓨터가 명령문 실행을 시작하기 전에 먼저 모든 함수 정의를 검색한 다음 관련 함수를 저장합니다.
질문 1:
var a = 1;
var a;
2행에서 변수 a를 선언하는 것은 맨 위에서 a를 선언하는 것과 동일하며, 첫 번째 문장은 a를 다시 선언한 다음 Assign을 수행합니다. 값은 1입니다. 따라서 a 유형은 숫자입니다
질문 2:
b = '----'
var b
두 번째 질문 분석: b='----', 프로그램 먼저 컨텍스트에 변수 b의 선언이 있는지 확인합니다. 그렇다면 '----'에 값을 직접 할당합니다. 그러나 Alert(typeof b);는 함수 외부에 있으며 모두 정의되지 않은 전역 변수 b를 출력합니다.
참고: 변수 할당은 미리 수행되지 않습니다.

결과를 적어주세요.
분석은 다음 코드 세그먼트로 작성할 수 있습니다.




코드 복사


코드는 다음과 같습니다.

name= "aaa";
function test(){
Alert(typeof name);//함수 내부를 살펴보고 컨텍스트에 name 선언이 있는지 확인합니다. 선언. 그러나 할당 연산은 고급화할 수 없으므로 유형이 정의되지 않습니다
var name="bbb";//할당 연산 Alert(typeof name);//string}test() ; 그런데 다음 코드 조각을 실행한 결과는 무엇입니까?



코드 복사


코드는 다음과 같습니다.

프로그램 실행 결과는 :string, string입니다. 여기가 혼란스럽고 어떻게 분석하고 설명해야할지 모르겠습니다. 변수 선언을 미리 이해했다고 생각하지만, 학습된 방법을 사용하여 위의 코드 조각을 분석하면 잘못된 결과가 나올 것입니다. 그렇다면 변수 할당은 함수 외부(전역 변수)인지, 함수 내부(지역 변수)인지와 어떤 관련이 있나요?
관련 라벨:
원천:php.cn
이전 기사:JS 닫기 창 또는 JS 닫기 page_javascript 기술에 대한 여러 코드 공유 다음 기사:jquery 및 기본 js는 선택 드롭다운 상자에서 선택된 값을 가져옵니다. example_javascript 기술
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
최신 이슈
관련 주제
더>
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿