7个让你的代码更出色的JavaScript小技巧
原文 | https://medium.com/madhash/7-little-big-javascript-techniques-that-makes-your-code-better-7894d3f984c5
翻译 | 小爱
let abc = ['apple', 'bananas', 'cherries', 'dragon fruit'];
let abc_spread = [...abc]
console.log(abc_spread);
// this will return:
// ['apple', 'bananas', 'cherries', 'dragon fruit'];
让我们再看一个例子:
const PREFIX = '$';
let message = '$kick ivan89234 bot0298 fake122 ';
function kick(){
const [CMD_NAME, ...args] = message
.trim()
.substring(PREFIX.length)
.split(/\s+/);
console.log(CMD_NAME);
console.log(args);
}
kick();
// console.log() will return
// "kick"
// ["ivan89234", "bot0298", "fake122"]
与尝试遍历所有内容然后手动将其放入数组中相比,使用展开运算符更容易、更高效且更不麻烦。
2、递归
递归基本上就像循环中的循环,但没有嵌套。它无限期地调用自己,直到调用“escape”子句。
下面是一个例子:
function weight(x, n){
if(n == 1) return x; //the escape clause
return x * weight(x, n -1); //the recursion
}
console.log('Tibbers weighs '
+ weight(2, 5)
+ ' pounds after eating 5 pieces of cheese' );
递归和循环之间的区别在于递归是自包含的,并根据输入产生特定的输出。循环线性运行并要求执行每个连续以产生结果。
3、使用日志级别
console.log 不仅仅是 console.log。日志级别使日志记录更加容易,并提醒你注意重要的事情。它还会在控制台中直观地分解你的日志,从而更轻松地扫描你需要的信息。
以下是完整列表:
console.log("hello world")
console.warn("this is a warning")
console.error("this is an error")
console.info("this is info")
console.debug("this is debug")
console.trace("show trace")
这是它的实际外观:
4、布尔变量的语言
双重否定可能令人困惑。通过始终将你的布尔语言假设设为真,让事情变得简单。
例如:
const isInvalidKey = apiKey === null
if(isInvalidKey){}
上面是一个糟糕的代码语言模式,因为虽然看起来很简单,但当你想用 ! 反转它时会让人困惑。
if(!isInvalidKey){}
这是一个更好的写法:
const isValidKey = apiKey != null
if(!isValidKey){}
一般来说,没有人喜欢阅读双重否定,因为你被迫计算预期的结果是什么。一旦你开始使用否定词来描述布尔值,就不再是简单的“是”或“否”答案。
5、对象而不是参数列表
参数列表的问题是它们必须按特定顺序排列。但是,如果你使用对象,则更容易传入可选参数,并且顺序不再重要。
与参数变量列表相比,通过对象传递的内容也更容易阅读和理解。
下面是一个例子:
function getItem(price, quantity, name, description) {}
getItem(15, undefined, ‘bananas’, ‘fruit’)
这是重构的版本:
function getItem(args) {
const {price, quantity, name, description} = args
}
getItem({
name: 'bananas',
price: 10,
quantity: 1,
description: 'fruit
})
6、if/else
if/else 语句很棒。
在大多数情况下,如果 return 执行完全相同的工作,则不需要 if/else 语句。
这就是我的意思。看看下面的例子:
function someCode(){
if(someBoolean){
return something;
}else{
return anotherthing;
}
}
实际上,这也会产生同样的影响:
function someCode(){
if(someBoolean){
return something;
}
return anotherthing;
}
返回的目的是结束程序。 如果无论如何都没有满足 if 条件,那么编写 else 语句就变得多余了。
7、捕捉错误
看看下面的例子:
;
...
const fakeAPI = function(callback){
request(`https://someapi.com/api`,
{json: true},
(err, res, body) => {
if(res){
//do something
}else{
callback(err)
}
})
}
假设你的 API 将始终有效。 它可能会抛出一个错误并返回一个 res 并且我们永远不会知道这个错误。
下面是查看相同代码的不同方式:
;
...
const fakeAPI = function(callback){
request(`https://somesite.com/api`,
{json: true},
(err, res, body) => {
if(err) return callback(err)
//rest of your code to deal with res
})
}
你总是假设最坏的情况,所以你把你的错误放在第一位,这样它就不会在沉默中失败。
总结
这些是我最喜欢的,也是我经常向开发人员提倡和谈论JavaScript 的 7 大技巧。 这不是一切,而是一个好的起点,尤其是当你重构代码或致力于使代码更易于阅读和维护时。
感谢您的阅读,我希望您发现这篇文章很有用。
学习更多技能
请点击下方公众号