Skip to content

JS 编码规范

逻辑语句

使用 && 运算符

在一个判断条件和一个执行函数的情况下,可以使用 && 和运算符,简洁明了。

javascript
// 👍 推荐的
visible && getListRequest();

// 👎 不推荐的
if (visible) getListRequest();

减少 if 嵌套

缺少正确参数时,可以在函数前面 return 避开执行后续逻辑,减少代码嵌套 if,改善代码可读性。

javascript
// 👍 推荐的
const onStatusChange = (value) => {
  if (!value) return;

  setValue(value);
  setData(data[value]);
}

// 👎 不推荐的
const onStatusChange = (value) => {
  if (value) {
    setValue(value);
    setData(data[value]);
  }
}

三元表达式

三元表达式,如无必要,尽可能不要嵌套使用,代码的可读性会比较差。

javascript
// 👍 推荐的
is_default ? "Yes" : "No"

// 👎 不推荐的
status === "success" ? "Success" : (status ==== "pending" ? : "Pending" : "Failed")
替代方案

遇到上述情况,可优先使用函数封装判断过程,优先推荐使用「键名获取」的方式完成,其次在使用 ifswitch 语句进行替代。

javascript
const statusKey = {
  success: "Success",
  pending: "Pending",
  failed: "Failed"
}

function statusParse(status) {
  const _item = statusKey[status];

  if (!_item) return "Err";

  return _item;
}

使用简化形式

语法糖

使用「语法糖」方法替代传统代码,提高代码可读性。

javascript
// 👍 推荐的
const _newData = data.map(item => ({
  id: data.id,
  title: data.name,
  url: `/product/${data.id}`
}));

// 👎 不推荐的
let _newData = [];

for (let i = 0; i < data.length; i++) {
  _newData.push({
    id: data.id,
    title: data.name,
    url: `/product/${data.id}`
  });
}

减少使用 return

只需返回内容的函数,如果内容篇幅不长,无需编写 return

javascript
const parseType = (type) => type === 1 ? "Yes" : "No";

const parseType = (type) => (
  type === 1 ? "Yes" : "No"
);

const parseSubmitData = (data) => (({
  name: data.title,
  type: data.type,
  content: data.content
}));