Javascript 通过动态变量更新方法无效
我有下面的方法,它在类init(即Javascript 通过动态变量更新方法无效,javascript,Javascript,我有下面的方法,它在类init(即newcar().filter(d=>d.Color==“Red”)上非常有效: 我试图通过用户更改下拉列表来动态更新它: let colorDropdown = document.getElementById('colorDropdown'); colorDropdown.onchange = () => { let color = colorDropdown.value; this.filter = d => d.Colo
newcar().filter(d=>d.Color==“Red”)
上非常有效:
我试图通过用户更改下拉列表来动态更新它:
let colorDropdown = document.getElementById('colorDropdown');
colorDropdown.onchange = () => {
let color = colorDropdown.value;
this.filter = d => d.Color == ""+color+"";
}
假设用户选择了“Orange”,如果我单独记录上面提到的内容,我会得到
console.log(color) = `Orange`
console.log(this.filter) = `d => d.Color == ""+color+""`
我的问题源于代码的“this.filter=”部分中的颜色仍然是一个变量。也许我想的不对?有什么建议吗?当到达您的时,color
的值将被捕获并存储为箭头函数的一部分。事实上,当您使用console.log()
一个箭头函数时,它就是这样显示的。执行此.filter
时,实际上将定义颜色变量
您使用的概念称为“闭包”。有关更多详细信息,请参阅JavaScript中的闭包
您提供的代码应该按原样工作。如果存在错误,则可能是问题中未包含的代码中的错误。您是否确实看到了程序行为中的错误?或者你只是不明白为什么console.log()
显示变量color
而不是它的值?@ShaneBishop为什么console.log显示颜色而不是值-我还没有测试它是否有效,因为我认为它是一个bug。
console.log(color) = `Orange`
console.log(this.filter) = `d => d.Color == ""+color+""`