我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何让你的JavaScript函数更加优雅详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何让你的JavaScript函数更加优雅详解

准备写一个js技巧系列,主要就是总结js各种实用的小窍门、小妙招。本文主要是研究如何让我们的函数更清晰明了。

对象参数使用解构

如果希望函数接收很多参数(如果超过两个),那么就应该使用对象。在此基础上,可以使用解构语法提取需要的参数。

普通写法


const greet = (obj) => {
  return `${obj.greeting}, ${obj.firstName}${obj.lastName}`;
}

改写


const greet = ({
  greeting,
  firstName,
  lastName
}) => {
  return `${greeting}, ${firstName}${lastName}`;
}

使用解构方式会更优雅,并且我们还可以少写很多重复的东西,命名也会更加清晰。

命名回调函数

好的命名会使阅读代码更容易,回调函数的命名也是一样。

普通写法


const arr = [1, 2, 3].map(a => a * 2);

改写


const double = a => a * 2;
const arr = [1, 2, 3].map(double);

分开命名,可以更好的一眼看出代码的含义,如上:根据名字很明显可以看出回调函数作用是用来加倍原始数组的每个元素的。

让条件句具有描述性

对于复杂的条件判断,我们可以单独使用函数来表示,会让条件语句更具描述性。

普通写法


if (score === 100 || remainingPlayers === 1 || remainingPlayers === 0) {
    quitGame();
  }

改写


const winnerExists = () => {
  return score === 100 ||
    remainingPlayers === 1 ||
    remainingPlayers === 0
}
if (winnerExists()) {
  quitGame();
}

按原来的写法,我们有很长的表达式在括号里面,但是不太好看出它在判断的是什么。改写之后,我们把它放在一个命名函数中,根据名字我们就能大概看出表达的意思。

用 Map 或 Object替换 switch 语句

当你的 switch语句很长时,就说明你应该简化你的代码了

普通写法


const getValue = (prop) => {
  switch (prop) {
    case 'a': {
      return 1;
    }
    case 'b': {
      return 2;
    }
    case 'c': {
      return 3;
    }
  }
}
const val = getValue('a');

Object改写


const obj = {
  a: 1,
  b: 2,
  c: 3
}
const val = obj['a'];

我们使用switch嵌套多个带有多个return语句的块,只是为了获得给定prop值的返回值时,我们仅仅使用一个对象也可以实现同样的效果。

Map改写


const map = new Map([['a', 1], ['b', 2], ['c', 3]])
const val = map.get('a')

使用Map时,代码也短很多。我们通过传递一个数组,数组中的每项包含键和值。然后,我们仅使用Map实例的get方法从键中获取值。Map优于对象的一个好处是,我们可以将数字,布尔值或对象等其他值用作键。而对象只能将字符串或symbol作为键。

使用 Object.assign 设置默认属性

普通写法


const menuConfig = {
  title: null,
  body: 'Bar'
};
function createMenu(config) {
  config.title = config.title || 'Foo';
  config.body = config.body || 'Bar';
}
createMenu(menuConfig);

改写


const menuConfig = {
  title: 'Order',
  body: 'Send'
};
function createMenu(config) {
  config = Object.assign({
    title: 'Foo',
    body: 'Bar'
  }, config);
  // config : {title: "Order", body: "Bar"}
  // ...
}
createMenu(menuConfig);

删除重复代码,合并相似函数;删除弃用代码

不好的写法


var paging = function( currPage ){
    if ( currPage <= 0 ){
        currPage = 0;
        jump( currPage );    // 跳转
    }else if ( currPage >= totalPage ){
        currPage = totalPage;
        jump( currPage );    // 跳转
    }else{
        jump( currPage );    // 跳转
    }
};

改写


var paging = function( currPage ){
    if ( currPage <= 0 ){
        currPage = 0;
    }else if ( currPage >= totalPage ){
        currPage = totalPage;
    }
    jump( currPage );    // 把jump函数独立出来
};

提炼函数

如果一个函数过长,不得不加上若干注释才能让这个函数显得易读一些,那这些函数就很有必要进行重构。

如果在函数中有一段代码可以被独立出来,那我们最好把这些代码放进另外一个独立的函数。

示例

比如在一个负责取得用户信息的函数里面,我们还需要打印跟用户信息有关的log


var getUserInfo = function(){
    ajax( 'http:// xxx.com/userInfo', function( data ){
        console.log( 'userId: ' + data.userId );
        console.log( 'userName: ' + data.userName );
        console.log( 'nickName: ' + data.nickName );
    });
};

改写

我们可以把打印log的语句封装在一个独立的函数里。


var getUserInfo = function(){
    ajax( 'http:// xxx.com/userInfo', function( data ){
        printDetails( data );
    });
};

var printDetails = function( data ){
    console.log( 'userId: ' + data.userId );
    console.log( 'userName: ' + data.userName );
    console.log( 'nickName: ' + data.nickName );
};

引用参考:JavaScript Refactoring Tips — Making Functions Clearer and Cleaner《JavaScript设计模式与开发实践》

总结

到此这篇关于如何让你的JavaScript函数更加优雅的文章就介绍到这了,更多相关JavaScript函数优雅内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何让你的JavaScript函数更加优雅详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaScript 事件委托——让你的代码更加优雅

JavaScript 事件委托是一种强大的技术,它允许我们在父元素上监听所有子元素的事件,从而只使用一个事件监听器来处理多个事件,从而让代码更加简洁和高效。
JavaScript 事件委托——让你的代码更加优雅
2024-02-06

JavaScript try...catch语句:让你的代码更加优雅

JavaScript try...catch语句可以让你的代码更加优雅并提升代码的可读性和可维护性。它允许你捕获和处理代码执行期间可能发生的错误,从而防止你的程序崩溃或产生不可预期的行为。
JavaScript try...catch语句:让你的代码更加优雅
2024-02-10

如何才能让你的网站更加优秀

小编给大家分享一下如何才能让你的网站更加优秀,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  首页设计必须要吸引眼球,如果用户们在进入到你的网站中,第一眼就很有好
2023-06-10

PHP数据过滤的艺术:如何优雅地处理脏数据,让你的代码更健壮!

掌握PHP数据过滤技巧是保障代码健壮性的重要一环。本文将详细阐述数据过滤的必要性、常用过滤函数以及如何应对不常见的过滤场景,助你优雅处理各种脏数据,让代码更健壮。
PHP数据过滤的艺术:如何优雅地处理脏数据,让你的代码更健壮!
2024-02-04

JavaScript 代码优化秘籍:如何让你的代码更简洁、更高效

JavaScript 代码优化是一项重要的技能,可以使您的代码更简洁、更高效。通过遵循一些简单步骤,您可以改善代码的可读性、可维护性和性能。本文将提供一些 JavaScript 代码优化秘籍,帮助您写出更优质的代码。
JavaScript 代码优化秘籍:如何让你的代码更简洁、更高效
2024-02-27

JavaScript 代码优化秘籍:如何让你的代码更健壮、更可靠

优化 JavaScript 代码是提高 Web 应用程序性能和可靠性的关键。本文提供了一系列实用的技巧和建议,帮助您优化 JavaScript 代码,使其更健壮、更可靠。
JavaScript 代码优化秘籍:如何让你的代码更健壮、更可靠
2024-02-27

详解Go语言如何利用高阶函数写出优雅的代码

高阶函数(Hiher-order Function)定义为:满足下列条件之一的函数:接收一个或多个函数作为参数;返回值是一个函数。本文为大家介绍了如何利用高阶函数写出优雅的代码,希望对大家有所帮助
2023-01-05

编程热搜

目录