![b1eb67068af8324847de171b87517861.gif](https://i-blog.csdnimg.cn/blog_migrate/52b63dd38aca58a3394ff047ca33887c.gif)
const bar = foo ? 'foo' : 'bar';
在上面的代码中,如果foo为true,则返回'foo'。否则,我们返回'bar'。
然后,如果foo为true,则bar为'foo'。否则,bar为'bar'。
上面代码比以下简短得多:
const bar = ((foo) => {
if (foo) {
return 'foo'
}
return 'bar'
})(foo);
使用三元运算符,我们不必使用内部if语句定义一个匿名函数,如果foo为true,则返回“ foo”,否则返回“ bar”。
另外,定义后,我们不必立即使用foo调用它。因此,它更容易读写。
但是,我们不应该通过嵌套它们来滥用三元运算符:
const foo = a ? b ? c ? 'foo' : 'bar' : 'baz' : 'qux';
上面的代码很难阅读,因为我们必须在括号内加括号以在我们自己的脑海中划定界限。
这在我们的大脑上很难解决,因此我们不应该采用上述表达。
短路表达式
我们将使用&&或|| 的操作员称为短路操作员。
如果第一个操作数为真,则&&运算符对于在第二个操作数中运行代码很有用。|| 如果第一个操作数为false,则运算符对于在第二个操作数中运行代码很有用。
例如,我们可以按以下方式使用它:
const isOnline = true;
const makeRequest = () => {
//...
}
isOnline && makeRequest();
在上面的代码中,如果isOnline为true,则调用makeRequest。因此,由于isOnline为true,所以我们调用makeRequest函数。
这将替换以下if语句:
if (isOnline) { makeRequest();}
如我们所见,在使用相同的isOnline和makeRequest值的情况下,使用if语句需要3行代码来完成相同的操作。
与|| 运算符,如果第一个操作数为false,则可以使用它来设置默认值。
例如,我们可以编写以下代码:
const foo = null;
const bar = foo || 'abc';
在上面的代码中,我们将foo设置为null,这是false。因此,在第二行,|| 运算符将计算foo常量,该常量为null,因此也为false。
然后,由于它是false,它将继续评估第二个操作数,然后将其返回。
因此,bar的值为'abc'。编码:
const bar = foo || 'abc';
替换以下代码:
const bar = ((foo) => {
if (!foo) {
return 'abc'
}
return foo;
})(foo)
如我们所见,我们必须定义一个匿名函数,然后调用它。
该函数将foo作为参数,然后在其内部检查foo是否虚假。如果是虚假的,那么我们返回'abc'。否则,我们返回foo。
||的替代品 运算符更长,更复杂。
避免使用switch语句
switch语句的许多用法可以用更简单的方法代替。例如,代替编写以下switch语句:
const getDescription = (breed) => {
switch (breed) {
case 'border':
return 'kind dog';
case 'pitbull':
return 'angry dog';
case 'german':
return 'smart dog';
default:
return ''
}
}
const desc = getDescription('border');
我们可以将值放在对象中,如下所示:
const descs = {
'border': 'kind dog',
'pitbull': 'angry dog',
'german': 'smart dog',
}
const desc = descs['border']
在上面的代码中,我们将case值作为属性,将返回值作为属性的值。
然后,我们可以像在最后一行中一样获取值,而不用调用longyswitch语句。
如果要获取默认情况,可以使用||。如下:
const desc = descs['foo'] || '';
现在,我们将一个长的switch语句缩小为一个小对象。
结论
在许多情况下,我们可以减少if并将语句切换为较短的代码。我们应该记住要使用三元运算符,短路运算和将switch语句更改为字典对象的快捷方式,以使我们的代码更短,更清晰。
![147c2b3bcc0f9905051e4dc40dd975cf.png](https://i-blog.csdnimg.cn/blog_migrate/580bf01b0c4f11eedbc3990809a612b6.png)
碧茂课堂精彩课程推荐:
1.Cloudera数据分析课;
2.Spark和Hadoop开发员培训;
3.大数据机器学习之推荐系统;
4.Python数据分析与机器学习实战;
详情请关注我们公众号:碧茂大数据-课程产品-碧茂课堂
现在注册互动得海量学币,大量精品课程免费送!
![7e99b89f5a9a840eac3b66f6d0eeb3f5.png](https://i-blog.csdnimg.cn/blog_migrate/d617ad8a1c91ae46ba19274a19aff010.png)
关注最新行业动态,
加群进行技术交流!