English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaScript 기본 튜토리얼

JavaScript 객체

JavaScript 함수

JS HTML DOM

JS 브라우저 BOM

AJAX 기본 튜토리얼

JavaScript 참조 매뉴얼

JavaScript 일반 오류

JavaScript는 현재 산업에서 가장 인기 있는 프로그래밍 언어 중 하나입니다. 이 언어를 배우려면 다음과 같은 오류를 피하십시오.

불필요한 대입 연산자 사용

if 문에서 불가피하게 대입 연산자 (=) 대신 비교 연산자 (==)를 사용하면 JavaScript 프로그램이 예상치 못한 결과를 일으킬 수 있습니다.

num이 다르면20이면 이 if 문은 false를 반환합니다:

var num = 0;
if (num == 20)
테스트를 보세요‹/›

이 if 문은 true를 반환합니다:20이 true입니다:

var num = 0;
if (num = 20)
테스트를 보세요‹/›

할당은 항상 할당된 값을 반환합니다.

== 대신 === 사용

JavaScript를 처음 사용하기 시작할 때, 이는 가장 일반적인 오류 중 하나입니다.

일반 비교에서 데이터 타입은 중요하지 않습니다. 이 if 문이 true를 반환하면:

var a = 20;
var b = "20";
if (a == b)
테스트를 보세요‹/›

정확한 비교에서 데이터 타입은 정말 중요합니다. 이 if 문은 false를 반환합니다:

var a = 20;
var b = "20";
if (a === b)
테스트를 보세요‹/›

(a == b)과 (a === b)의 차이는:

  • == a가 b와 같다면 true를 반환합니다.

  • === a가 b와 같고, 그들이 동일한 타입이라면같은 타입true를 반환합니다.

일반적으로, 항상 === 또는 strict equality operator 또는 identical operator라고도 하는 것을 사용해야 합니다。

혼란스러운 더하기와 연결

이전 장에서 알 수 있듯이,+연산자는 더하기와 연결에 사용됩니다。

또한는 추가에 관한 것입니다숫자

연결는 추가에 관한 것입니다문자열의

따라서, 숫자를 숫자로 추가하는 것과 숫자를 문자열로 추가하는 것은 다른 결과를 낳습니다:

var a = 10;
var b = 5;
var c = a + b; // c = 15
var a = 10;
var b = "5";
var c = a + b; // c = "105"
테스트를 보세요‹/›

float 사용 오류

JavaScript의 모든 숫자는 다음과 같이 저장됩니다64비트 부동소수점 (Floats).

모든 프로그래밍 언어(JavaScript 포함)는 정확한 부동소수점 값에 어려움을 겪습니다:

var a = 0.1;
var b = 0.2;
var c = a + b;   // c의 결과는 0이 될 수 없습니다.3
테스트를 보세요‹/›

위의 문제를 해결하기 위해 곱셈과 나눗셈이 도움이 됩니다:

var c = (a * 10 + b * 10) / 10; // c = 0.3
테스트를 보세요‹/›

JavaScript 문자열 줄바꿈

JavaScript는 문장을 두 줄로 나눌 수 있습니다:

var str =
"w3codebox Tutorial";
테스트를 보세요‹/›

하지만, 문자열 중간의 문장을 끊는 것은 작동하지 않습니다:

var str = "w3codebox
Tutorial";
테스트를 보세요‹/›

문자열 내에서 문장을 끊는 경우에는 반드시 "반대quotes"(탈출 문자)를 사용해야 합니다:

var str = "w3codebox \
Tutorial";
테스트를 보세요‹/›

    다른 해결책은 다음과 같습니다template literal(반대quotes``)문자열. 이는 긴 문자열을 응축할 필요가 없습니다:

var str = `Air Pollution is introduction of chemicals to the
atmosphere. 그것은 환경 균형을 해치고 원인을 일으킵니다
several diseases.`;
테스트를 보세요‹/›

구분자 위치 오류

구분자 위치가 잘못되었기 때문에, num의 값이 어떻게 되었든 다음 코드가 실행됩니다:

if (num === 45);
{
  // code block  
}
테스트를 보세요‹/›

쉼표로 끝나는 정의

객체와 배열 정의의 끝에 있는 쉼표는 ECMAScript 5중에서는 합법적입니다.

let fruits = ["Apple", "Mango", "Banana", "Orange",];//배열
let user = {firstName:"Vishal", lastName:"Choudhary", age:22,};//객체

그러나, 배열의 끝에 쉼표를 추가하면 Internet Explorer 8고장 나릅니다。

JSON은 트레일링 콤마를 허용하지 않습니다。

블록 스코프

JavaScript는 각 코드 블록에 새로운 범위를 생성하지 않습니다。

대부분의 프로그래밍 언어에서 적용되지만 JavaScript에서는 적용되지 않습니다。

for (var i = 0; i < 10; i++) {
  // some code
}
document.write(i);   // 이 출력은 무엇이 될까요?
테스트를 보세요‹/›

사용let키워드는 각 코드 블록에 새로운 범위를 생성합니다:

for (let i = 0; i < 10; i++) {
  // some code
}
document.write(i);   // 이 출력은 무엇이 될까요?
테스트를 보세요‹/›

null과 undefined 사이의 차이

undefined값은 변수에 값을 할당하지 않았거나 변수를 선언하지 않았음을 나타냅니다.

null값은 특별히 객체 값이 없는 것을 의미합니다.

이렇게 되면 빈 객체를 테스트하는 것이 어려워집니다.

형식을 테스트하여undefined،객체가 존재하는지 테스트하는 방법은:

if (typeof myObj === "undefined")
테스트를 보세요‹/›

    하지만 객체가 있는지 테스트할 수 없습니다:null،이 경우 객체가undefined,이렇게 되면 오류가 발생합니다:

if (myObj === null)
테스트를 보세요‹/›

이 문제를 해결하려면, 객체가 아닌지 테스트해야 합니다:undefined,그리고null

if (typeof myObj !== "undefined" && myObj !== null)
테스트를 보세요‹/›