全篇干货|JavaScript的7个优化技巧强化你的代码

每种语言都有其独特性,JavaScript 作为使用最广泛的编程语言也不例外。

接下来的内容将讨论一些 JavaScript 通用优化技巧,它们将帮助你写出更好的代码。

【参考文献】

文章:7 JavaScript Powerful Optimization Tricks You Need To Know

作者:P. Rehan

上述译文仅供参考,具体内容请查看上面链接,解释权归原作者所有。

全篇干货|JavaScript的7个优化技巧强化你的代码_第1张图片

1. Fallback Values(回退值)

显示某些调整的后备位置。

如果值为 [] 或 0,使用逻辑 OR || 不会得到预期结果。

看涨共生会是更好的解决方案吗?如果定义值为空或未定义,则只能使用后备值。

// Lengthy
let name;
if (user?.name) {
  name = user.name;
} else {
  name = "Anonymous";
}

// Shortly
const name = user?.name ?? "Anonymous";

2.Shortly For Switching(短开关)

Long switch(长开关)情况通常通过使用一个对象来最大化,该对象的键用作开关,而值则试图用作返回值。

const dayNumber = new Date().getDay();

// Lengthy
let day;
switch (dayNumber) {
  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";
}

// Shortly
const days = [
    "Sunday",
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday",
];

// Or
const days = `Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday`.split(
    ","
);

const day = days[dateNumber];

3.Calls To Functions(调用函数)

您还可以使用二进制运算符根据条件决定调用哪个函数。

函数的调用模式必须相同,否则就会出错。

// Lengthy
function f1() {
  // ...
}
function f2() {
  // ...
}

// Shorter
condition ? f1() : f2();

4. Multiple String Checks(多重字符串检查)

经常需要检查字符串是否等于多个值中的一个,这很快就会变得令人恼火。

幸运的是,JavaScript 有办法帮你解决这个问题。

// Lenghty
const isVowel = (letter) => {
  return (
    letter === "a" ||
    letter === "e" ||
    letter === "i" ||
    letter === "o" ||
    letter === "u"
  );
};

// Shortly
const isVowel = letter => /[aeiou]/i.test(letter);

5.For-of 和 For-in

For-of 和 For-in 循环有利于重复数组或对象,而无需手动跟踪对象键的索引。

**For-of**

const arr = [1, 2, 3, 4, 5];

// Lengthy
for (let i = 0; i < arr.length; i++) {
  const element = arr[i];
  // ...
}

// Shortly
for (const element of arr) {
  // ...
}

**For-in**

const obj = {
  a: 1,
  b: 2,
  c: 3,
};

// Lengthy
const keys = Object.keys(obj);
for (let i = 0; i < keys.length; i++) {
  const key = keys[i];
  const value = obj[key];
  // ...
}

// Shortly
for (const key in obj) {
  const value = obj[key];
  // ...
}

6.False checks(假值检查)

如果要检查变量是否为 null、undefined、0、false、NaN 或空白字符串,可以使用逻辑非(!)操作符,而无需多重效果。

这使得验证变量是否包含有效数据变得简单。

// Lengthy
const isFalsey = (value) => {
  if (
    value === null ||
    value === undefined ||
    value === 0 ||
    value === false ||
    value === NaN ||
    value === ""
  ) {
    return true;
  }
  return false;
};

// Shortly
const isFalsey = (value) => !value;

7.Secondary Operator(二元运算符)

作为一名 JavaScript 开发人员,你一定接触过三元运算符。

它是编写简洁的 if-else 语句的绝佳方法。

不过,你也可以用它来编写简洁的代码,甚至用它来连锁检查多个条件。

// Lengthy
let info;

if (value < minValue) {
  info = "Value is too small";
} else if (value > maxValue) {
  info = "Value is too large";
} else {
  info = "Value is in range";
}

// Shortly
const info =
  value < minValue
    ? "Value is too small"
    : value > maxValue ? "Value is too large" : "Value is in range";

END

⚠️:文章翻译上如有语法不准确或者内容纰漏,欢迎各位评论区指正。

【关于TalkX】

TalkX是一款基于GPT实现的IDE智能开发插件,专注于编程领域,是开发者在日常编码中提高编码效率及质量的辅助工具,TalkX常用的功能包括但不限于:解释代码、中英翻译、性能检查、安全检查、样式检查、优化并改进、提高可读性、清理代码、生成测试用例以及有趣的图表生成等。

TalkX建立了全球加速网络,不需要考虑网络环境,响应速度快,界面效果和交互体验更流畅。并为用户提供了Open AI的密钥,不需要自备ApiKey,不需要自备账号,不需要魔法。

TalkX产品支持:JetBrains (包括 IntelliJ IDEA、PyCharm、WebStorm、Android Studio)、HBuilder、VS Code、Goland.

你可能感兴趣的:(实用干货分享,javascript,开发语言,ecmascript)