Blog
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)

HiuZing

🍑
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)
  • 前端面试题

  • JavaScript

    • JavaScript语法

      • JavaScript-数据类型
      • JavaScript-ES6编程风格
        • JavaScript-ES6编程风格
          • 块级作用域
          • 字符串
          • 解构赋值
          • 对象
          • 数组
      • JavaScript-异步编程
      • JavaScript-Promise
      • JavaScript-Proxy
      • JavaScript-Reflect
      • JavaScript-Iterator
      • JavaScript-Module
      • JavaScript-拷贝
      • JavaScript-this
      • JavaScript-垃圾回收机制
      • JavaScript-闭包
      • let和const
      • JavaScript-参数默认值
      • JavaScript-rest
      • JavaScript-扩展运算符
      • JavaScript-Symbol
      • JavaScript-生成器
      • JavaScript-class类
      • JavaScript-数值扩展
      • JavaScript-高阶函数
      • JavaScript-箭头函数
    • JavaScipt对象

    • JavaScript实例

    • JavaScript浏览器BOM

    • JavaScript DOM

  • Vue2

  • port

  • CSS

  • Node.js

  • JavaScript优化

  • uniapp

  • Mini Program

  • TypeScript

  • 面向对象编程

  • UI组件

  • Plugin

  • Vue3

  • 性能优化

  • Axios

  • 状态管理

  • React

  • Mock

  • Icon

  • Template

  • 构建工具

  • 项目规范配置

  • Taro

  • SVG

  • React Native

  • 前端
  • JavaScript
  • JavaScript语法
HiuZing
2022-10-08
目录

JavaScript-ES6编程风格

# JavaScript-ES6编程风格

# 块级作用域

  • let取代var

    两者语义相同,而且let没有副作用

    如果以下var代替let,就声明了两个全局变量。变量应该只在其代码块内有效,var做不到这点

    if(true){
        let x = 'hello'
    }
    
    1
    2
    3
  • var存在变量提升,let没有这个问题

    如果使用var,console.log(x)就不会报错并且输出undefined,因为变量声明提升到代码块的头部,因此违背了变量先声明后使用的原则。所以,不建议使用var,而是用let取代

    if(true){
        console.log(x)
        let x = 'hello'
    }
    
    1
    2
    3
    4
  • 全局常量和线程安全

    在let和const之间,建议优先使用const,尤其在全局环境,不应该设置变量,只应设置常量。const优于let有以下原因:

    • const可以提醒阅读程序的人,这个变量不应该改变
    • js编辑器会对const进行优化,所以多使用const,有利于提高程序的运行效率

# 字符串

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

使用场景:页面传递query参数,接口query参数,path参数

const a = 'good'
const b = `good${i}dd`
1
2

# 解构赋值

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

    const arr = [1,2,3,4]
    
    //bad
    const first arr[0]
    const second arr[1]
    
    //good
    const {first,second} = arr
    
    1
    2
    3
    4
    5
    6
    7
    8
  • 函数的参数如果是对象的成员,优先使用解构赋值

    //bad
    function getFullName(user){
        const firstName = user.firstName
        const lastName = user.lastName
    }
    
    //good
    function getFullName(obj){
        const {firstName,lastName} = obj
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
  • 如果函数返回多个值,优先使用对象的解构赋值,而不是数组的对象赋值。以便于以后添加返回值,以及更改返回值的顺序

    //bad
    function processInput(input){
        return [left,right,top,bootom]
    }
    
    //good
    function processInput(input){
        return {left,right,top,bootom}
    }
    
    const {left,right} = processInput(input)
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

# 对象

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

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

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

//good
const a = {k1:v1,k2:v2}
const b = {
    k1:v1,
    k2:v2,
}
1
2
3
4
5
6
7
8
9
10
11
12
13

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

//bad
const a = {}
a.x = 3

//
const a = {}
Object.assign(a,{x:3})

//good
const a = {x:null}
a.x = 3
1
2
3
4
5
6
7
8
9
10
11

# 数组

  • 使用扩展运算符[...]拷贝数组
//bad
const len = items.length
const itemsCopy = []
let i

for(i = 0;i < len;i++){
    itemsCopy[i] = items[i]
}

//good
const itemsCopy = [...items]
1
2
3
4
5
6
7
8
9
10
11
  • 使用Array.from(),将类似数组的对象转为数组
let likeArr = {
    0: 'react',
    1: 'Vue',
    2: 'angular',
    3: 'Node',
    'length': 4
}
let arr = Array.from(likeArr);
console.log(arr);//[ 'react', 'Vue', 'angular', 'Node' ]
1
2
3
4
5
6
7
8
9
上次更新: 2024/08/14, 04:14:33
JavaScript-数据类型
JavaScript-异步编程

← JavaScript-数据类型 JavaScript-异步编程→

最近更新
01
React Native 使用SVG
08-13
02
Docker基础命令
08-04
03
算数逻辑单元
07-30
更多文章>
Theme by Vdoing | Copyright © 2021-2024 WeiXiaojing | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式