我的理解是这样解构从传入的参数对象中选择属性:
const last = "Smith" // unrelated const
const full = function({ first, last }) {
return [first, last].filter(v => v).join(" ")
}
full({last: "Doe"}) // "Doe"
full({}) // ""
对于进口来说,这似乎也是一样的。
import last from "last"; // unrelated import
export function full({ first, last }) {
return [first, last].filter(v => v).join(" ")
}
full({last: "Doe"}) // "Doe"
full({}) // ""
为什么这会导致no-shadow
夹板错误?
错误'last'已在较高范围无阴影
中声明
是否有full
可以访问外部参考的情况?没有权利?如果不重命名不相关的外last
引用,我怎么能保持语法接近呢?
答案 0 :(得分:4)
它导致了一个eslint错误,因为last
在导入中声明,在函数中声明为参数。因此,在函数内部,参数last
正在影响导入last
。您只需更改函数内部参数的名称或关闭eslint。
import last from "last"; // unrelated import
export function full({ first, last: lst }) {
return [first, lst].filter(v => v).join(" ")
}
full({last: "Doe"}) // "Doe"
full({}) // ""
...或...
import last from "last"; // unrelated import
export function full({ first, last }) { // eslint-disable-line no-shadow
return [first, last].filter(v => v).join(" ")
}
full({last: "Doe"}) // "Doe"
full({}) // ""