최신 웹 개발 튜토리얼
 

JavaScript모범 사례


전역 변수를 방지하지 않도록 new 피하기 == 피하기 eval()


글로벌 변수를 피하십시오

글로벌 변수의 사용을 최소화한다.

이것은 모든 데이터 유형, 개체 및 기능이 포함되어 있습니다.

글로벌 변수 및 함수는 다른 스크립트에 의해 덮어 쓸 수 있습니다.

대신 로컬 변수를 사용하고 사용하는 방법에 대해 알아 폐쇄를 .


항상 지역 변수 선언

함수에 사용 된 모든 변수는 지역 변수로 선언되어야한다.

지역 변수는 선언해야 var 그렇지 않으면 전역 변수가 될 것이다, 키워드.

엄격한 모드는 선언되지 않은 변수를 허용하지 않습니다.


상단에 선언

각 스크립트 나 함수의 상단에있는 모든 선언을 넣을 수있는 좋은 코딩 방법입니다.

이 뜻 :

  • 청소기 코드를 제공
  • 지역 변수를 찾기 위해 하나의 장소를 제공
  • 쉽게 원치 않는 (암시) 전역 변수를 방지 할 수 있도록
  • 원치 않는 재 선언의 가능성을 감소
// Declare at the beginning
var firstName, lastName, price, discount, fullPrice;

// Use later
firstName = "John";
lastName = "Doe";

price = 19.90;
discount = 0.10;

fullPrice = price * 100 / discount;

이것은 또한 루프 변수 간다 :

// Declare at the beginning
var i;

// Use later
for (i = 0; i < 5; i++) {

기본적으로 자바 스크립트 상단 (자바 스크립트 리프팅) 모든 선언을 이동합니다.


변수를 초기화

당신이 그것들을 선언 할 때 변수를 초기화 할 수있는 좋은 코딩 방법입니다.

이 뜻 :

  • 청소기 코드를 제공
  • 변수를 초기화 할 수있는 단일 장소를 제공
  • 정의되지 않은 값을 피하십시오
// Declare and initiate at the beginning
var firstName = "",
    lastName = "",
    price = 0,
    discount = 0,
    fullPrice = 0,
    myArray = [],
    myObject = {};

변수를 초기화하는 용도의 아이디어를 제공 (및 데이터 유형 예정).


숫자, 문자열 또는 부울 객체를 선언하지 마십시오

항상 기본 값으로 숫자, 문자열, 또는 논리 값을 취급합니다. 아니 개체로.

개체로 이러한 유형을 선언하는 것은, 실행 속도를 느리게하고, 불쾌한 부작용을 생성합니다 :

var x = "John";             
var y = new String("John");
(x === y) // is false because x is a string and y is an object.
»그것을 자신을 시도

아니면 더 나쁜 :

var x = new String("John");             
var y = new String("John");
(x == y) // is false because you cannot compare objects.
»그것을 자신을 시도

사용하지 마십시오 new Object()

  • 사용 {} 대신 new Object()
  • 사용 "" 대신에 new String()
  • 사용 0 대신 new Number()
  • 사용 false 대신 new Boolean()
  • 사용 [] 대신 new Array()
  • 사용 /()/ 대신 new RegExp()
  • 사용 function (){} 대신 new Function()

var x1 = {};           // new object
var x2 = "";           // new primitive string
var x3 = 0;            // new primitive number
var x4 = false;        // new primitive boolean
var x5 = [];           // new array object
var x6 = /()/;         // new regexp object
var x7 = function(){}; // new function object
»그것을 자신을 시도

자동 유형 변환주의

숫자 실수 문자열이나 변환 될 수 있음을주의 NaN (숫자가 아님).

자바 스크립트를 느슨하게 입력됩니다. 변수는 다양한 데이터 유형을 포함 할 수 있고, 변수의 데이터 타입을 변경할 수있다 :

var x = "Hello";     // typeof x is a string
x = 5;               // changes typeof x to a number
»그것을 자신을 시도

수학 연산을 수행 할 때, 자바 스크립트 문자열을 숫자로 변환 할 수 있습니다 :

var x = 5 + 7;       // x.valueOf() is 12,  typeof x is a number
var x = 5 + "7";     // x.valueOf() is 57,  typeof x is a string
var x = "5" + 7;     // x.valueOf() is 57,  typeof x is a string
var x = 5 - 7;       // x.valueOf() is -2,  typeof x is a number
var x = 5 - "7";     // x.valueOf() is -2,  typeof x is a number
var x = "5" - 7;     // x.valueOf() is -2,  typeof x is a number
var x = 5 - "x";     // x.valueOf() is NaN, typeof x is a number
»그것을 자신을 시도

오류를 생성하지 않습니다, 문자열에서 문자열을 빼면 만하면 반환 NaN (숫자) :

"Hello" - "Dolly"    // returns NaN
»그것을 자신을 시도

사용 === 비교

== 비교 연산자는 항상 비교하기 전에 (일치하는 유형)으로 변환합니다.

=== 가치와 유형의 운영자 힘 비교 :

0 == "";        // true
1 == "1";       // true
1 == true;      // true

0 === "";       // false
1 === "1";      // false
1 === true;     // false
»그것을 자신을 시도

매개 변수 기본값을 사용하여

함수가 누락 된 인수로 호출 될 경우, 누락 된 인수의 값으로 설정되어 undefined .

정의되지 않은 값은 코드를 중단 할 수 있습니다. 이 인수에 기본값을 할당하는 좋은 습관이다.

function myFunction(x, y) {
    if (y === undefined) {
        y = 0;
    }
}
»그것을 자신을 시도

에서 함수 매개 변수 및 인수에 대한 자세한 내용을 읽어 함수 매개 변수


기본값을 사용한 스위치를 종료

항상 기본으로 스위치 문을 종료. 경우에 당신은 그것을 필요가 없다 생각합니다.

switch (new Date().getDay()) {
    case 0:
        day = "Sunday";
        break;
    case 1:
        day = "Monday";
        break;
    case 2:
        day = "Tuesday";
        break;
    case 3:
        day = "Wednesday";
        break;
    case 4:
        day = "Thursday";
        break;
    case 5:
        day = "Friday";
        break;
    case 6:
        day = "Saturday";
        break;
    default:
        day = "Unknown";
}
»그것을 자신을 시도

사용하지 마십시오 eval()

eval() 함수는 코드와 텍스트를 실행하는 데 사용됩니다. 거의 모든 경우에 그것을 사용할 필요가없는 것이다.

그것은 임의의 코드가 실행될 수 있기 때문에, 그것은 또한 보안 문제를 나타낸다.