当前位置: 首页 > article >正文

ES6- 代码编程风格(let、字符串、解构赋值)

1.let 取代 var

2.全局常量和线程安全

在let 和 const 之间,建议优先使用const, 尤其在全局环境中,不应该设置变量,只应设置常量。

//bad
var a=1, b=2, c=3
//good

const a=1; 

const b=2;

const c=3;

//best
const [a, b, c] = [1, 2, 3]

3.字符串

静态字符串一律使用单引号或反引号, 不适用双引号。动态字符串使用反引号。

//bad
const a = "foobar";
const b = 'foo' + a + 'bar';

//acceptable
const c = `foobar`;

//good
const a = 'foobar';
const b = `foo${a}bar`;
const c = 'foobar';

4. 解构赋值

使用数组成员对变量赋值时,优先使用解构赋值。

const arr = [1, 2, 3, 4];
//bad
const first = arr[0];
const second = arr[1];
//good
const [first, second] = arr;

函数的参数如果是对象的成员, 优先使用解构赋值。

//bad
function getFullName(user) {
 const firstName = user.firstName;
 const lastName = user.lastName;
}
//good
function getFullName(obj) {
 const { firstName, lastName } = obj;
}
//best
function getFullName({ firstName, lastName }) {}

如果函数返回多个值, 优先使用对象的解构赋值, 而不是数组的解构赋值。 这样便于以后添加返回值,以及更改返回值的顺序。

// bad
function processInput(input) {
  return [left, right, top, bottom];
}
// good
function processInput(input) {
  return {left, right, top, bottom};
}
const { left, right } = processInput(input);

对象

单行定义的对象,最后一个成员不以逗号结尾。多行定义的对象,最后一个成员以逗号结尾。

// bad
const a = { k1: vl, k2: v2, };
const b = {
  k1: v1,
  k2: v2
};
// good 
const a = {k1: v1, k2: v2};
const b = {
  k1: v1,
  k2: v2,
}

对象尽量静态话, 一旦定义, 就不得随意添加新的属性。如果添加属性不可避免,要使用object.assign 方法。

// bad
const a = {};
a.x = 3;
// if reshape unavoidable
const a = {};
Object.assign(a, { x: 3});
// good 
const a = { x: null };
a.x = 3;

如果对象的属性名是动态的,可以在创造对象的时候使用属性表达式定义。

// bad
const obj = {
  id: 5,
  name: 'San Francisco',
};
obj[getKey('enabled')] = true;

// good 
const obj = {
  id: 5,
  name: 'San Francisco',
  [getKey('enabled')] : true,
}

http://www.kler.cn/a/535228.html

相关文章:

  • 02-合并两个有序数组
  • [Python人工智能] 四十九.PyTorch入门 (4)利用基础模块构建神经网络并实现分类预测
  • 【21天学习AI底层概念】day14 (kaggle新手入门教程)random forests
  • 电梯系统的UML文档14
  • Java进阶笔记(中级)
  • 如何自定义软件安装路径及Scoop包管理器使用全攻略
  • 所遇皆温柔,佛系过生活
  • pycharm集成通义灵码应用
  • 【PyTorch】解决Boolean value of Tensor with more than one value is ambiguous报错
  • leetcode——组合总和(回溯算法详细讲解)
  • DNN(深度神经网络)近似 Lyapunov 函数
  • 解锁反序列化漏洞:从原理到防护的安全指南
  • 【OpenCV插值算法比较】
  • 给排水 笔记
  • MapReduce是什么?
  • Swan 表达式 - 数组相关操作
  • 【Prometheus】如何通过golang生成prometheus格式数据
  • 使用 MMCM 的 I/O 时序 ZHOLD/BUF_IN 补偿
  • Spring Boot 入门 与 无法解析符号 springframework 的解决
  • 71.StackPanel黑白棋盘 WPF例子 C#例子
  • 基于Redis分布式锁
  • 达梦数据库从单主模式转换为主备模式
  • (苍穹外卖)项目结构
  • 深度学习|表示学习|卷积神经网络|DeconvNet是什么?|18
  • Android studio 编译速度增加
  • 微服务中服务治理都包含什么