Articles

자바스크립트 오류 처리–준:”x”정의하지 않

다음에 기사 목록에 우리의 자바스크립트 오류 처리하는 시리즈 보고에서 정의되지 않은 변수는 오류가 있습니다. 정의되지 않은 변수는 오류가 발생하면 변수를 참조하거나 객체가 만든 코드에서 하나 존재하지 않거나,외부 범위의 코드를 실행하고 있습니다.

우리는 아래에 볼 것은 부부의 구체적인 예는 것이 일반적으로 생산 정의되지 않은 변수는 오류뿐만 아니라,어떻게 잡으면 오류가 나타납니다. 시작하자!

기술 개요

  • 모든 JavaScript 오류 객체는 오류 객체의 자손 또는 그 안에 상속 된 객체입니다.
  • ReferenceError 객체는 오류 객체에서 상속됩니다.
  • 정의되지 않은 변수 오류는 ReferenceError 객체의 특정 유형입니다.

언제 사용해야합니까?

경우에 깊이 프로세스의 코딩과 함께 자바스크립트,그렇지 않은 모든 것을 들리지 않을 만들의 잘못 입력했거나 단순히 잊지 변수 초기화하거나 객체를 호출하기 전에 말하는 변수 이후입니다. 이 때,자바 스크립트를 표시합니다 불쾌감으로 던지는 정의되지 않은 변수는 오류가 나타내는 객체를 참조하지 않던 정의됩니다.

예를 들어,여기서 우리는 잡아하려고 시도하는 간단한 진술을하고 있습니다.정의되지 않은 항목의 길이 속성변동 가능. 우리는 또한 사용한 간단한 시도 catch 블록고 잡는 모든 ReferenceErrors 발생할 수 있는 그런 다음 전달하와 함께하는 간단하 printError 기능을 아름답게 출력이 우리의 오류 메시지:

var printError = function(error, explicit) { console.log(` ${error.name}: ${error.message}`);}try { // Calling an undefined `item `variable var length = item.length; console.log(`Length is ${length}.`)} catch (e) { if (e instanceof ReferenceError) { printError(e, true); } else { printError(e, false); }}

충분히 확실히 예상대로,자바 스크립트는 통지 항목변수가 정의되지 않은,그리고 생산의 명시적인 정의되지 않은 변수는 오류가:

// FIREFOX ReferenceError: item is not defined// CHROME ReferenceError: item is not defined

점은 주목할 만한 가치가 있는 많은 다른과는 달리 자바 스크립트 오류를 우리는 이 시리즈,정의되지 않은 변수는 오류 메시지에 텍스트와 다르지 않습 사이의 두 개의 엔진에 전원스템 Chrome.

에 분명하고 간단한 수정이 특히 정의되지 않은 변수는 오류가 단순히 선포하는 우리의 항목을 변수 전화:

var printError = function(error, explicit) { console.log(` ${error.name}: ${error.message}`);}try { // Defining `item` first var item = "Bob"; var length = item.length; console.log(`Length is ${length}.`)} catch (e) { if (e instanceof ReferenceError) { printError(e, true); } else { printError(e, false); }}

이제 우리는 과거의 항목입니다.길이 호출 어떤 오류를 던지지 않고 따라서 우리의 콘솔을 생산하고 있습니다.우리의 항목 문자열의 길이의 로그 출력:

Length is 3.

기술적으로는 동안,정의되지 않은 변수는 오류가가 의도에 대한 언급을 확인하기 위해 정의되지 않은 변수,그것은 또한 역할 경우를 참조하려고 하는 변수를 정의되지만,외부에 있는 현재 범위의 컨텍스트 코드는 실행되고 있습니다.

예를 들어,여기서 우리는 간단한 getFullName 기능을 정의하는 두 변수의 내부에 자체,이름 및 성. 그 함수의 범위 밖에서,우리는 firstName 변수의 length 속성을 가져 오려고 시도합니다:

var getFullName = function() { var firstName = "Bob"; var lastName = "Smith"; return `${firstName} ${lastName}`;}var printError = function(error, explicit) { console.log(` ${error.name}: ${error.message}`);}try { // Accessing `firstName` from outside its scope var length = firstName.length; console.log(`Length is ${length}.`)} catch (e) { if (e instanceof ReferenceError) { printError(e, true); } else { printError(e, false); }}

는 이름 변수가 기술적으로 정의 이미에 액세스할 수 없습니다 우리에게 이러한 수준의 실행하고 따라서 정의되지 않은 변수는 오류가 발생합니다:

 ReferenceError: firstName is not defined

이 경우에는,해결책의 문제입니다 당름 및 성 변수의 범위 밖에 getFullNamefunction, 그래서 그들은 같은 컨텍스트의 실행으로 우리의 시 catch 블록

// 4// Declaring the variables outside our functionvar firstName = "Bob";var lastName = "Smith";var getFullName = function() { return `${firstName} ${lastName}`;}var printError = function(error, explicit) { console.log(` ${error.name}: ${error.message}`);}try { // Accessing `firstName` is now allowed var length = firstName.length; console.log(`Length is ${length}.`)} catch (e) { if (e instanceof ReferenceError) { printError(e, true); } else { printError(e, false); }}

예상한 대로,오류가 없는 생산 그리고 우리 길이의 변수 이름으로 출력:

Length is 3.

다이빙으로도 깊은 이해하는 방법의 응용 프로그램으로 자바 스크립트 오류를 확인,혁신적인 검 자바스크립트 오류 추적 도구를 위한 실시간 알림이고 즉각적인 통찰력으로 무엇이 잘못되었을 가진 JavaScript 코드입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다