我有这个:
const exp = function (input) {
let v;
return (v = input.foo.bar) ? v : 'bar'
};
我想知道,是否可以将临时变量放在同一行上,如下所示:
const exp = function (input) {
return let v, (v = input.foo.bar) ? v : 'bar'
};
这是无效的语法。 JS运行时显示“找不到名称v”。
答案 0 :(得分:2)
考虑使用lodash,例如return _.get(input, 'foo.bar', 'bar');
答案 1 :(得分:2)
无需为简单的内容提供库-如果条件为假,条件运算符将解析第一个表达式,否则将解析第二个表达式,所以为什么不使用||
呢?同样的事情,只引用input
参数而不声明不必要的附加变量?
const exp = input => input.foo.bar || 'bar';
或者更简洁地说,是通过解构来实现的,尽管它的可读性较差:
const exp = ({foo:{bar}}) => bar || 'bar';
答案 2 :(得分:0)
一行:
const exp = (input) => (v = input.foo.bar) ? v : 'bar'
调用let in函数没有任何意义。如果在内部调用它,则将其初始化。因此您无需检查它是否等于某物。 就您而言,const v应该在函数之外并具有值。
答案 3 :(得分:0)
这对我来说是一个非常愚蠢的问题,我之前已经解决了这个小难题,但是并没有想到。做到这一点的最佳方法大概是:
const exp = function (input) {
let v = input.foo && input.foo.bar;
return v || 'bar'
};