1.交换两个变量而没有第三个

let x = 1;let y = 2;[x, y] = [y, x];console.log(x, y);

输出:

2 1

2、将数字转换为字符串

const num = 1 +“”;console.log(typeof num); console.log(num);

输出:

string1

3、将字符串转换为数字

const numStr = "124";const num = +numStr;console.log(typeof num);console.log(num);

输出:

number 124

4、将字符串拆分为数组

要将字符串拆分为数组,可以使用扩展运算符(...):

const str = "Test"const strAsArr = [...str]console.log(strAsArr)

输出:

["T", "e", "s", "t"]

5、可选链接

“可选的链接运算符(?.)允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。” — MDN Web文档

假设你有一个data对象,并且想要安全地访问data.test.value。首先,你需要检查:

  • data 是否被定义。

  • data.test 是否被定义。

在data.test.value,你可以调用之前,因为,你显然无法读取undefined属性。

const data = {test:{value:1}}if(data && data.test){   console.log(data.test.value); }

输出:

1

幸运的是,使用可选链接的方法,你可以简单明了地编写上面的代码:

const value = data?.test?.value;console.log(value)

输出:

1

现在,你还可以安全地尝试访问不存在的属性,而不会出现问题:

console.log(data?.this?.does?.not?.exist?.for?.sure)

输出:

undefined

6、 较短的 If-Else 的空合并

这也是 if-else 的简写。

你可以使用看涨合并,而不是使用 if-else 构造来检查值是否为空。该nullish合并操作 ??,如果没有定义左侧返回右侧。如果是,则返回左侧:

let maybeSomething;

// LONG FORM
if(maybeSomething){
  console.log(maybeSomething)
} else {
  console.log("Nothing found")
}

//SHORTHAND
console.log(maybeSomething ?? "Nothing found")

7、传播解构

使用扩展运算符将剩余元素分配给变量:

const student = {
  name: "Matt",
  age: 23,
  city: "Helsinki",
  state: "Finland",
};

// LONGER FORM
const name = student.name;
const age = student.age;
const address = { city: student.city, state: student.state };

// SHORTHAND
const { name, age, ...address } = student;

8、 从数组中查找特定元素

使用find()方法查找匹配特定条件的元素:

const fruits = [
  { type: "Banana", color: "Yellow" },
  { type: "Apple", color: "Green" }
];

// LONGER FORM
let yellowFruit;
for (let i = 0; i < fruits.length; ++i) {
  if (fruits[i].color === "Yellow") {
    yellowFruit = fruits[i];
  }
}

// SHORTHAND
yellowFruit = fruits.find((fruit) => fruit.color === "Yellow");

9.将对象的值收集到数组中

用于Object.values()将对象的所有值收集到一个新数组中:

const info = { name: "Matt", country: "Finland", age: 35 };

// LONGER FORM
let data = [];
for (let key in info) {
  data.push(info[key]);
}

// SHORTHAND
const data = Object.values(info); // values值集合数组
const data = Object.keys(info);    // key值集合数组

10.压缩多个条件

避免使用长|| 检查多个条件链,你可以使用你刚刚在上一个技巧中学到的东西——即,使用 includes() 方法:

const num = 1;

// LONGER FORM
if(num == 1 || num == 2 || num == 3){
  console.log("Yay");
}

// SHORTHAND
if([1,2,3].includes(num)){
  console.log("Yay");
}

11、 指数运算符

你Math.pow()习惯把一个数字提高到一个幂吗?你知道你也可以使用**运算符吗?

// LONGER FORM
Math.pow(4,2); // 16
Math.pow(2,3); // 8

// SHORTHAND
4**2 // 16
2**3 // 8

12、 Math.floor() 简写

四舍五入Math.floor()并不是什么新鲜事。但是你知道你也可以使用~~运算符吗?

例如:

// LONG FORM
Math.floor(5.25) // -> 5.0

// SHORTHAND
~~5.25 // -> 5.0

 13.用一行代码分配多个值(解构赋值)

使用解构语法在一行中分配多个值:

let num1, num2;

// LONGER FORM
num1 = 10;
num2 = 100;

// SHORTHAND
[num1, num2] = [10, 100];

这也适用于使用 JavaScript 对象:

student = {
  name: "Matt",
  age: 29,
};

// LONGER FORM
let name = student.name;
let age = student.age;

// SHORTHAND
let { name, age } = student;




 

js简单化技巧的更多相关文章

  1. [转载]Js小技巧||给input type=“password”的输入框赋默认值

    http://www.cnblogs.com/Raywang80s/archive/2012/12/06/2804459.html [转载]Js小技巧||给input type="passw ...

  2. 一探前端开发中的JS调试技巧

    前言 调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问题.降低故障概率.帮助分析逻辑错误等等.而在互联网前端开发越来越重要的今 ...

  3. JS小技巧大本事(持续更新)

    1. 复制N个字符 String.prototype.repeat = function(num){ return (new Array(++num)).join(this); } var a = ' ...

  4. Js常用技巧

    摘录:http://crasywind.blog.163.com/blog/static/7820316920091011643149/ js 常用技巧 1. on contextmenu=" ...

  5. Backbone.js的技巧和模式

    Backbone.js的技巧和模式 Backbone.js的技巧和模式   本文由白牙根据Phillip Whisenhunt的<Backbone.js Tips And Patterns> ...

  6. 前端开发中的JS调试技巧

    前言:调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问题.降低故障概率.帮助分析逻辑错误等等.而在互联网前端开发越来越重要的今 ...

  7. js小技巧总结

    js小技巧总结 1.Array.includes条件判断 function test(fruit) { const redFruits = ["apple", "stra ...

  8. 【repost】一探前端开发中的JS调试技巧

    有请提示:文中涉及较多Gif演示动画,移动端请尽量在Wifi环境中阅读 前言:调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问 ...

  9. JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)

    本文实例总结了JS数组排序技巧.分享给大家供大家参考,具体如下: 1.冒泡排序 var temp = 0; for (var i = 0; i < array.length; i++) { fo ...

随机推荐

  1. HTML5(十一)——WebSocket 基础教程

    一.为什么要学 WebSocket? websocket 是 HTML5 提供的一种长链接双向通讯协议,使得客户端和服务器之间的数据交换更简单,允许服务端主动向客户端推送数据,并且客户端与服务端只需连 ...

  2. 【笔记】KNN之网格搜索与k近邻算法中更多超参数

    网格搜索与k近邻算法中更多超参数 网格搜索与k近邻算法中更多超参数 网络搜索 前笔记中使用的for循环进行的网格搜索的方式,我们可以发现不同的超参数之间是存在一种依赖关系的,像是p这个超参数,只有在 ...

  3. 六种方式,教你在SpringBoot初始化时搞点事情!

    前言 在实际工作中总是需要在项目启动时做一些初始化的操作,比如初始化线程池.提前加载好加密证书....... 那么经典问题来了,这也是面试官经常会问到的一个问题:有哪些手段在Spring Boot 项 ...

  4. AWS(amazon ec2)服务器流量查询

    aws ec2流量监控 亚马逊云服务新用户绑定信用卡免费使用一年,相信很多人白嫖过,选用micro最低配置+流量免费15G,包含上下行.这种配置用来测试玩玩还行,生产使用的话容易超标.很多人想知道流量 ...

  5. 题解 a

    传送门 和入阵曲那题很像 这里 \(n\) 很小,可以直接 \(n^2\) 压成一维考虑 然后就是对每个 \(j\) 查询 \([j-r, j-l]\) 中数的个数 这里我是用树状数组求的,带个log ...

  6. javascript html 鼠标放大镜效果

    1.鼠标放大镜效果 鼠标放大镜效果,将鼠标移入到左图片,则可以在其右边看到放大的图片,且鼠标移动滑块的大小即为右图显示图片.实际效果如下图所示:   <!DOCTYPE html> < ...

  7. Linux 系统下10个查看网络与监听的命令

    下面列出来的10个基础的每个linux用户都应该知道的网络和监控命令.网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslook ...

  8. IO异常--缓冲流--转换流--序列化流( IO流2 )

    1.IO异常的处理 JDK7前处理:使用try...catch...finally 代码块,处理异常部分 // 声明变量 FileWriter fw = null; try { //创建流对象 fw ...

  9. pgsql日期树数值类型指定与介绍

    http://www.postgres.cn/docs/9.3/datatype-net-types.html#DATATYPE-INET  文档有详细的pgsql介绍 使用案例: SELECT to ...

  10. go-Gorm

    软删除 如果模型中有 DeletedAt 字段,它将自动拥有软删除的能力!当执行删除操作时,数据并不会永久的从数据库中删除,而是将 DeletedAt 的值更新为当前时间.