你可以使用这些技巧简化你的代码

news/2024/7/10 2:37:35 标签: js, python, javascript, java, vue
js_content">

不少人有五年的 JavaScript 经验,但实际上可能只是一年的经验重复用了五次而已。完成同样的逻辑和功能,有人可以写出意大利面条一样的代码,也有人两三行简洁清晰的代码就搞定了。简洁的代码不但方便阅读,还能减少复杂逻辑和出错的可能性。本文就介绍一些常用的JavaScript简化技巧,日常开发都用得上。

1. 简化条件表达式

经常碰到这种情况,要判断某个变量是否为指定的某些值,用常规的逻辑表达式会很长。我的做法是把这些值放进数组里:

// 太长的逻辑表达式
if (x === 'abc' || x === 'def' || x === 'ghi' || x ==='jkl') {
    //其他逻辑
}
// 简写
if (['abc', 'def', 'ghi', 'jkl'].includes(x)) {
   //其他逻辑
}

2. 简化 if ... else

if...else太常用了,以至于很多人都忘了其实还有其他方式来判断条件。比如简单的变量赋值,完全没必要用这种冗长的语句,一行表达式就搞定了:

// 新手的写法
let test= boolean;
if (x > 100) {
    test = true;
} else {
    test = false;
}
// 简写表达式
let test = (x > 10) ? true : false;
// 更直接的
let test = x > 10;
console.log(test);

三元表达式可以做复杂的条件分支判断,不过牺牲了一些可读性:

let x = 300,
let test2 = (x > 100) ? 'greater 100' : (x < 50) ? 'less 50' : 'between 50 and 100';
console.log(test2); // "greater than 100"

3. 判空并赋默认值

Code Review 的时候我经常看到这样的代码,判断变量不是nullundefined''的时候赋值给第二个变量,否则给个默认值:

if (first !== null || first !== undefined || first !== '') {
    let second = first;
}
// 简写
let second = first || '';

4. 简写循环遍历

for 循环是最基本的,但是有点繁琐。可以用for...infor...of或者forEach代替:

// Longhand
for (var i = 0; i < testData.length; i++)

// Shorthand
for (let i in testData) or  for (let i of testData)

数组遍历:

function testData(element, index, array) {
  console.log('test[' + index + '] = ' + element);
}

[11, 24, 32].forEach(testData);
// 打印输出: test[0] = 11, test[1] = 24, test[2] = 32

4. 简化 switch

这个技巧也很常用,把switch  转换成对象的key-value形式,代码简洁多了:

// Longhand
switch (data) {
  case 1:
    test1();
  break;

  case 2:
    test2();
  break;

  case 3:
    test();
  break;
  // And so on...
}

// Shorthand
var data = {
  1: test1,
  2: test2,
  3: test
};

data[anything] && data[anything]();

5. 简化多行字符串拼接

如果一个字符串表达式过长,我们可能会拆成多行拼接的方式。不过随着 ES6 的普及,更好的做法是用模板字符串:

//longhand
const data = 'abc abc abc abc abc abc\n\t'
    + 'test test,test test test test\n\t'
//shorthand
const data = `abc abc abc abc abc abc
         test test,test test test test`

6. 善用箭头函数简化 return

ES6 的箭头函数真是个好东西,当函数简单到只需要返回一个表达式时,用箭头函数最合适不过了,return都不用写:

Longhand:
//longhand
function getArea(diameter) {
  return Math.PI * diameter
}
//shorthand
getArea = diameter => (
  Math.PI * diameter;
)

7. 简化分支条件语句

又是你,if...else if...else!跟switch类似,也可以用key-value形式简化:

// Longhand
if (type === 'test1') {
  test1();
}
else if (type === 'test2') {
  test2();
}
else if (type === 'test3') {
  test3();
}
else if (type === 'test4') {
  test4();
} else {
  throw new Error('Invalid value ' + type);
}
// Shorthand
var types = {
  test1: test1,
  test2: test2,
  test3: test3,
  test4: test4
};

var func = types[type];
(!func) && throw new Error('Invalid value ' + type); func();

8. 重复字符串 N 次

有时候出于某种目的需要将字符串重复 N 次,最笨的方法就是用for循环拼接。其实更简单的方法是用repeat

//longhand 
let test = ''; 
for(let i = 0; i < 5; i ++) { 
  test += 'test '; 
} 
console.log(str); // test test test test test 
//shorthand 
'test '.repeat(5);

9. 指数运算

能省则省,低碳环保。

//longhand
Math.pow(2,3); // 8
//shorthand
2**3 // 8

10. 数字分隔符

这是比较新的语法,ES2021 提出来的,数字字面量可以用下划线分割,提高了大数字的可读性:

// 旧语法
let number = 98234567

// 新语法
let number = 98_234_567

总结

没啥好总结的,拿去用就是了。


http://www.niftyadmin.cn/n/1251548.html

相关文章

医院虚拟化服务器,医院虚拟化服务器部署.pdf

第&#xff12;&#xff18;卷第&#xff18;期    计算机应用与软件 &#xff36;&#xff4f;&#xff4c;&#xff12;&#xff18;&#xff2e;&#xff4f;&#xff0e;&#xff18;&#xff12;&#xff10;&#xff11;&#xff11;年&#xff18;月   &#xff…

java获取上传的文件_java 文件上传到读取文件内容的实例

1.下载文件&#xff0c;将文件保存到本地。(只试用excel)&#xff1b;2.对文件的标题进行检验&#xff1b;3.获取导入的批次(取一个表的一个值&#xff0c;加1)&#xff1b;4.循环获取文件某一个行&#xff0c;某一列的值&#xff0c;set到对象中&#xff1b;5.检验值的合法性&…

谈谈虚拟dom在Vue和React中的应用

作为前端最火的两个框架&#xff0c;React 和 Vue 是面试必考的内容。特别是到了中高级前端岗&#xff0c;对于框架的考察会更加深入&#xff0c;比如&#xff1a;Vue3.0 相对于 Vue2.x 有哪些变化&#xff1f;为什么 v-for 和 v-if 不建议⽤在⼀起&#xff1f;vue-router hash…

30个编程领域的趣图

作者 | Nehal Khan策划 | 李俊辰编程是一项有趣的工作&#xff0c;每位程序员在职业生涯中都会发生很多有趣的事情&#xff0c;本文收集了一些与程序员有关的图&#xff0c;希望能给你带来一时的轻松与快乐。1、每位程序员都有过这样的时候图源&#xff1a;quora.com2、通过调试…

这些vue实战技巧你学会了吗?

项目架构// 1.封装项目的基础库优秀的基础库可以保证项目的最低质量下限和更好的可扩展性。通常我们说的基础库包括-组件库、基础 css 库、基础工具库。// 2.层级管理管理你的请求&#xff0c;建议把你项目的 api 层独立出来为一个层级管理&#xff0c;这样有利于在复杂接口下&…

魔域私服显示服务器人数满,请问如何让服务器不卡

2007-10-06请问服务器开启的时间&#xff0c;最近有没有新服务器我下了四遍全都解压失败! F:\123\17173_l2_070830。rar: LineageII_interlude_070830。exe CRC 失败。文件被破坏! 无法执行“C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\Rar$EX00。 562\LineageII_interlude_070830。e…

vue 项目如何快速优化

Vue在前端框架中的地位就像曾经的 jQuery&#xff0c;由于其简单易懂、开发效率高&#xff0c;已经成为了前端工程师必不可少的技能之一。无论是 BAT 等大厂&#xff0c;还是小型初创公司&#xff0c;Vue 都有着广泛的应用&#xff0c;其相关技术原理也是面试的必考知识点。可以…

java file url_java 怎么使用远程 url 创建 file

展开全部import java.io.BufferedReader;import java.io.File;import java.io.FileReader;/*** author lmq**/public class RemoteFile {public static void main(String[] args) throws Exception {File remoteFile new File("//192.168.7.146/test/1.txt");// 192…