우수한 JS 코드 작성을 위한 8가지 팁과 요령(공유)

青灯夜游
풀어 주다: 2020-11-12 18:03:43
앞으로
1873명이 탐색했습니다.

다음 js 튜토리얼 칼럼에서는 자바스크립트 코드 작성을 위한 8가지 팁과 요령을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

우수한 JS 코드 작성을 위한 8가지 팁과 요령(공유)

추천 튜토리얼: "JavaScript 비디오 튜토리얼"

1. 지정된 범위 내에서 숫자를 생성하세요

때때로 특정 숫자 범위 내에서 배열을 만들어야 할 때가 있습니다. 예를 들어 생일을 선택할 때. 가장 간단한 방법은 다음과 같습니다.

let start = 1900,
    end = 2000;
[...new Array(end + 1).keys()].slice(start);
// [ 1900, 1901, ..., 2000]

// 也可以这样,但是大范围结果不稳定
Array.from({ length: end - start + 1 }, (_, i) => start + i);
로그인 후 복사

2. 값 배열의 값을 함수의 매개변수로 사용합니다

때로는 값을 먼저 배열에 넣은 다음 함수의 매개변수로 전달해야 합니다. ES6 구문을 사용하면 확산 연산자(...)만 사용하여 배열에서 값을 추출할 수 있습니다. [arg1, arg2] => >. <code>...)就可以把值从数组中提取出来: [arg1,arg2] => (arg1,arg2)

const parts = {
  first: [0, 2],
  second: [1, 3],
};

["Hello", "World", "JS", "Tricks"].slice(...parts.second);
// ["World", "JS", "Tricks"]
로그인 후 복사

这个技巧在任何函数中都适用,请继续看第 3 条。

3. 把值数组中的值作为 Math 方法的参数

当需要在数组中找到数字的最大或最小值时,可以像下面这样做:

// 查到元素中的 y 位置最大的那一个值
const elementsHeight =  [...document.body.children].map(
  el => el.getBoundingClientRect().y
);
Math.max(...elementsHeight);
// 输出最大的那个值

const numbers = [100, 100, -1000, 2000, -3000, 40000];
Math.min(...numbers);
// -3000
로그인 후 복사

4. 展平嵌套数组

Array 有一个名为 Array.flat 的方法,它需要一个表示深度的参数来展平嵌套数组(默认值为 1)。但是如果你不知道深度怎么办,这时候只需要将 Infinity 作为参数即可。另外还有一个很好用的 flatMap 方法。

const arrays = [[10], 50, [100, [2000, 3000, [40000]]]];
arrays.flat(Infinity);
// [ 10, 50, 100, 2000, 3000, 40000 ]
로그인 후 복사

5. 防止代码崩溃

如果在代码中存在不可预测的行为,后果是难以预料的,所以需要对其进行处理。

例如当你想要获取的属性为 undefinednull 时,会得到 TypeError 错误。

如果你的项目代码不支持可选链( optional chaining)的话,可以这样做:

const found = [{ name: "Alex" }].find(i => i.name === 'Jim');
console.log(found.name);
// TypeError: Cannot read property 'name' of undefined
로그인 후 복사

可以这样避免

const found = [{ name: "Alex" }].find(i => i.name === 'Jim') || {};
console.log(found.name);
// undefined
로그인 후 복사

不过这要视情况而定,对于小规模的代码进行处理完全没什么问题。不需要太多代码就可以处理它。

6. 传参的好方法

在 ES6 中可以把 模板字面量(Template literal) 当作是不带括号的函数的参数。这在进行格式化或转换文本的时非常好用。

const makeList = (raw) =>
  raw
    .join()
    .trim()
    .split("\n")
    .map((s, i) => `${i + 1}. ${s}`)
    .join("\n");

makeList`
Hello, World
Hello, World
`;

// 1. Hello
// 2. World
로그인 후 복사

7. 像变戏法一样交换变量的值

通过解构赋值语法,可以轻松地交换变量。

let a = "hello";
let b = "world";

// 错误 ❌
a = b
b = a
// { a: 'world', b: 'world' }

// 正确 ✅
[a, b] = [b, a];
// { a: 'world', b: 'hello' }
로그인 후 복사

8. 遮蔽字符串

某些时候我们需要遮蔽字符串的一部分,当然不只是对密码做这种操作。下面代码中通过 substr(-3)  得到字符串的一部分,即从字符串末尾开始往前 3 个字符,然后再用你喜欢的字符填充剩余的位置(比如说用 *

const password = "hackme";
password.substr(-3).padStart(password.length, "*");
// ***kme
로그인 후 복사
이 트릭은 모든 기능에서 작동합니다. 3번 항목을 계속 진행하세요.

3 값 배열의 값을 수학 메서드의 매개변수로 사용하세요

배열에서 숫자의 최대값 또는 최소값을 찾아야 하는 경우 다음과 같이 할 수 있습니다.

rrreee

4. 중첩 배열 평면화

Array에는 중첩 배열을 평면화하기 위한 깊이를 나타내는 매개변수가 필요한 Array.Flat라는 메서드가 있습니다(기본값은 1). 그런데 깊이를 모른다면, 이때는 Infinity만 매개변수로 사용하면 됩니다. 유용한 flatMap 메소드도 있습니다.

rrreee5. 코드 충돌 방지

🎜🎜코드에 예측할 수 없는 동작이 있으면 결과도 예측할 수 없으므로 처리해야 합니다. 🎜🎜예를 들어, 가져오려는 속성이 정의되지 않음 또는 null인 경우 TypeError 오류가 발생합니다. 🎜🎜프로젝트 코드가 선택적 체이닝을 지원하지 않는 경우 다음과 같이 할 수 있습니다. 🎜rrreee🎜이렇게 하면 피할 수 있습니다🎜rrreee🎜그러나 상황에 따라 다르겠지만 소규모 코드에서는 전혀 문제가 없습니다. 이를 처리하는 데 많은 코드가 필요하지 않습니다. 🎜🎜🎜6. 매개변수를 전달하는 좋은 방법🎜🎜🎜ES6에서는 괄호 없이 🎜템플릿 리터럴🎜을 함수의 매개변수로 처리할 수 있습니다. 이는 텍스트 서식을 지정하거나 변환할 때 유용합니다. 🎜rrreee🎜🎜7. 마술처럼 변수의 값을 교환하세요🎜🎜🎜 할당 구문을 구조화하면 변수를 쉽게 교환할 수 있습니다. 🎜rrreee🎜🎜8. 문자열 마스킹🎜🎜🎜때로는 비밀번호뿐만 아니라 문자열의 일부를 마스킹해야 할 때도 있습니다. 다음 코드에서 substr(-3)는 문자열의 일부, 즉 문자열 끝에서 3문자 앞으로 가져온 다음 나머지 위치를 좋아하는 문자로 채우는 데 사용됩니다. (예를 들어 * 사용)🎜rrreee🎜결론🎜🎜코딩할 때도 코드를 깔끔하게 유지하고, 코딩에 사용되는 기술을 축적하는 데 주의하고, 새로운 기능에 주목해야 합니다. 자바스크립트. 🎜🎜🎜원본 주소: https://dev.to/gigantz/9-javascript-tips-tricks-to-code-like-a-wizard-559i🎜🎜저자: Orkhan Jafarov🎜🎜번역 주소: https:// 더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 코스🎜를 방문하세요! ! 🎜

위 내용은 우수한 JS 코드 작성을 위한 8가지 팁과 요령(공유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿