1. 글로벌 네임 스페이스 오염
독립 모듈을 형성하기 위해 항상 즉각적인 기능 표현식으로 코드를 래핑하십시오.
권장되지 않습니다
var x = 10, y = 100; console.log (window.x + '' + window.y);
추천하다
; (함수 (창) { 'strict'; var x = 10, y = 100; console.log (window.x + '' + window.y);} (window));2. 함수를 즉시 실행하십시오
즉각적인 실행 함수에서 글로벌 변수를 사용하는 경우 기능을 즉시 실행하는 기능 본문은 호출 될 때 로컬 변수 형태로 호출 될 수 있으며, 이는 프로그램 성능을 어느 정도 향상시킬 수 있습니다.
ES3에서 undefined 읽고 쓸 수 있기 때문에 마지막 위치에서 함수의 공식 매개 변수에 undefined 추가를 추가해야합니다. undefined 값이 글로벌 위치에서 변경되면 코드가 기한이 지난 결과가 발생하지 않을 수 있습니다.
또한, 병합 중 불규칙한 다른 사람들의 코드로 인해 우리 자신의 코드에 영향을 미치지 않도록 기능의 시작과 끝에 세미콜론을 즉시 추가하는 것이 좋습니다.
권장되지 않습니다
(function () { 'strict'; var x = 10, y = 100, c, elem = $ ( 'body'); console.log (wind추천하다
(function ($, 창, 문서, undefined) { 'strict'; var x = 10, y = 100, c, elem = $ ( 'body'); console.log (wind3. 엄격한 모드
ECMAScript 5 엄격한 모드는 스크립트 전체 또는 단일 방법 내에서 활성화 될 수 있습니다. 다른 JavaScript 컨텍스트에 해당하며보다 엄격한 오류 검사를 수행합니다. Strict Mode는 또한 JavaScript 코드가 더 강력하고 더 빠르게 실행되도록합니다.
엄격한 모드는 향후 소개 될 예정 키워드의 사용을 방지합니다.
스크립트에서 엄격한 모드를 활성화하고 바람직하게는 독립형 즉시 실행 기능에 적용해야합니다. 모든 스크립트가 엄격한 모드를 시작하게하는 스크립트의 첫 번째 줄에서 사용하지 않으므로 일부 타사 라이브러리에 문제가 발생할 수 있습니다.
권장되지 않습니다
'strict'; (function () {} ());추천하다
(function () { 'strict';} ());IV. 변수 선언
모든 변수 선언에 대해 var 지정해야합니다. var 지정되지 않으면 오류는 엄격한 모드로보고되며 동일한 범위 내의 변수는 가능한 한 하나의 var 로 선언해야하며 여러 변수를 ","로 분리해야합니다.
권장되지 않습니다
함수 myfun () {x = 5; Y = 10;}완전히 권장되지 않습니다
함수 myfun () {var x = 5; var y = 10;}추천하다
함수 myfun () {var x = 5, y = 10;}5. 유형 판단을 사용한 비교 판단
판단 과정에서 JavaScript의 캐스트로 인한 문제를 피하기 위해 === 정확한 비교 연산자를 사용합니다.
=== 운영자를 사용하는 경우 비교에 대한 두 당사자는 유효하기 위해 동일한 유형이어야합니다.
권장되지 않습니다
(함수 (w) { 'strict'; w.console.log ( '0'== 0); // true w.console.log ( ''== false); // true w.console.log ( '1'== true); // true w.console.log (null == undefined); {values (valueof :); w.console.log (x == 'x'); // true} (window.console.log));추천하다
(w) { 'strict'; w.console.log ( '0'=== 0); // false w.console.log ( ''=== false); // false w.console.log ( '1'==== true); // false w.console.log (null === var x = {) {valueof (functof :) };6. 가변 할당시 논리적 작업
논리 연산자 || &&는 부울 값을 반환하는 데 사용될 수 있습니다. 작동 오브젝트가 비 부금 객체 인 경우 각 표현식은 왼쪽에서 오른쪽으로 판단됩니다. 이 작업을 기반으로, 항상 결국 반환되는 표현이 있습니다. 변수를 할당 할 때 코드를 단순화하는 데 사용될 수 있습니다.
권장되지 않습니다
if (! x) {if (! y) {x = 1; } else {x = y; }}추천하다
x = x || y || 1;
7. 세미콜론
암시 적 코드 중첩은 감지 할 수없는 문제를 일으킬 수 있으므로 항상 세미콜론을 사용하십시오. 물론, 우리는 이러한 문제를 근본적으로 제거해야합니다 [1].
다음 예제는 세미콜론 누락의 피해를 보여줍니다.
// 1. myclass.prototype.mymethod = function () {return 42;} // 여기에 세미콜론이 없습니다 (function () {}) (); //2.var x = { 'i': 1, 'j': 2} // 여기에 세미콜론이 없습니다. // 나는 당신이 그러한 코드를 작성하지 않을 것이라는 것을 알고 있지만 [ffversion, iuredsion] [isie] (); // 3.var things_to_eat = [사과, 굴, Sprayoncheese] // 여기에 세미콜론이 없습니다 1 == resultOfOperation () || 주사위();오류 결과
1. JavaScript 오류 - 42를 반환하는 함수는 두 번째 함수의 매개 변수에 의해 첫 번째로 호출 된 다음 숫자 42도 "호출"되어 오류가 발생합니다.
2. 80 번 실제 환경의 호출은 다음과 같이 보이기 때문에 '정의되지 않은 속성 없음'의 오류 메시지를 받게됩니다.
3.Die는 항상 호출됩니다. 배열에서 마이너스 1의 결과는 NAN이기 때문에 결과가 incatestoperation이 NAN을 반환하는지 여부에 관계없이 어떤 것도 같지 않습니다. 따라서 최종 결과는 die () 실행 후 얻은 값이 things_to_eat에 할당됩니다.
8. 명세서 블록의 함수 선언
진술 블록 내에서 함수를 선언하지 않으며, 이는 ECMAScript 5의 엄격한 모드에서 불법입니다. 함수 선언은 최상위 수준의 범위에 있어야합니다. 그러나 명령문 블록 내에서 함수 선언은 함수 표현식으로 변환되어 변수로 할당 될 수 있습니다.
권장되지 않습니다
if (x) {function foo () {}}추천하다
if (x) {var foo = function () {};}9. 평가 기능을 사용하지 마십시오
eval() 컨텍스트를 혼동 할뿐만 아니라 위험합니다. 이보다 더 좋고 선명하고 안전한 코드를 작성하는 또 다른 솔루션이 항상 있으므로 eval 기능을 사용하지 마십시오.
10. 배열 및 물체 리터럴
1. 배열 및 객체 생성자 대신 배열 및 객체 리터럴을 사용하십시오. 배열 생성자는 매개 변수에 쉽게 실수를 할 수 있습니다.
권장되지 않습니다
// 배열 길이 3var a1 = 새 배열 (x1, x2, x3); // 배열 길이 2var a2 = new Array (x1, x2); // x1이 자연 숫자 인 경우 길이는 x1이면 x1이 자연 숫자가 아니라면 길이는 1var a3 = new Array (x1); Var a4 = 새로운 배열 ();
이로 인해 코드가 2에서 1로 전달되면 배열이 예기치 않은 길이 변경을 경험할 가능성이 높습니다. 이러한 이상한 상황을 피하려면 항상 읽을 수있는 배열 리터럴을 사용하십시오.
추천하다
var a = [x1, x2, x3]; var a2 = [x1, x2]; var a3 = [x1]; var a4 = [];
2. 객체 생성자는 비슷한 문제가 없지만 가독성과 균일 성을 위해 객체 리터럴을 사용해야합니다.
권장되지 않습니다
var o = new Object (); var o2 = new Object (); o2.a = 0; o2.b = 1; o2.c = 2; o2 [ 'Strange Key'] = 3;
추천하다
var o = {}; var o2 = {a : 0, b : 1, c : 2, '이상한 키': 3};11. 삼중 변수 조건 판단 (IF의 빠른 방법)
3 배 연산자를 사용하여 명세서를 할당하거나 반환하십시오. 비교적 간단한 상황에서 사용하고 복잡한 상황에서는 사용하지 않습니다. 아무도 10 줄의 3 개 조리사를 사용하여 마음을 흔들고 싶어하지 않습니다.
권장되지 않습니다
if (x === 10) {return 'valid';} else {return 'invalid';}추천하다
반환 x === 10? '유효한': '유효하지 않은';
12. 루프 용
루프를 사용하는 과정에서 배열의 길이는 변수에 의해 수신되며, 이는 코드 실행 효율을 향상시키는 데 도움이됩니다. 대신, 루프가 사라질 때마다 배열의 길이를 다시 계산해야합니다.
권장되지 않습니다
for (var i = 0; i <arr.length, i ++) {}추천하다
for (var i = 0, len = arr.length; i <len, i ++) {}13. 반복 된 DOM 운영
반복 된 DOM 작업은 성능, 깔끔한 코드 및 쉬운 유지 보수에 큰 영향을 미치는 DOM 트리를 자주 작동하지 않고 수신하기 위해 변수를 사용해야합니다.
권장되지 않습니다
$ ( '. mydiv'). find ( '. span1'). text ( '1'); $ ( '. mydiv'). find ( '. span2'). text ( '2'); $ ( '. mydiv'). 찾기 ( '. span3'). text ( '3'); $ ( '. myDiv'). 텍스트 ( '4');
추천하다
var mydiv = $ ( '. mydiv'); mydiv.find ( '. span1'). text ( '1'); mydiv.find ( '. span2'). text ( '2'); mydiv.find ( '. span3'). text ( '3'); mydiv.find ( '. 4');
jquery .end() 사용할 수 있으면 .end() 선호해야합니다.
추천하다
$ ( '. mydiv'). find ( '. span1'). text ( '1') .end (). find ( '. span2'). text ( '2'); .end (). find ( '. span3'). text ( '3'); .end (). find ( '. span4'). text ( '4');
14. 댓글 사양
주석을 설명 할 때 서식 및 통합 주석 스타일이 권장됩니다. 코드가하는 일이 아니라 의견을 작성할 때 아이디어를 설명하십시오.
권장되지 않습니다
// 주문 함수 가져 오기 getOrderById (id) {var order; // ... 반환 주문;}방법 주석은 블록 레벨 주석과 함께 균일하게 사용해야합니다
추천하다
/** * 주문 ID * @Param {[number]} id [order id] * @return {[order]} [주문 세부 사항] */function getOrderById (id) {var order; // ... 반환 주문;}요약
JavaScript의 일반적인 코드 쓰기 사양의 요약은 기본적으로 끝납니다. 이 기사는 여전히 매우 포괄적이며 모든 사람이 JavaScript를 사용하거나 배울 수있는 특정 참조 값이 있습니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다.