Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过动态变量更新方法无效_Javascript - Fatal编程技术网

Javascript 通过动态变量更新方法无效

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

我有下面的方法,它在类init(即
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+""`