Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.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 在一个以varName为参数的函数中,使用[varName]=某个东西来更改变量有多安全?_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 在一个以varName为参数的函数中,使用[varName]=某个东西来更改变量有多安全?

Javascript 在一个以varName为参数的函数中,使用[varName]=某个东西来更改变量有多安全?,javascript,angular,typescript,Javascript,Angular,Typescript,这个函数还没有完成,但我想知道有一个这样改变变量的函数有多“安全” 我使用的是一个具有实用功能的角度服务,context是this来自我调用函数的组件,其余的应该是自解释的 changeValueOverTime(context: any, varToChange: string, amount: number, intevalTime: number) { const inteval = setInterval(() => { context[varToChange]

这个函数还没有完成,但我想知道有一个这样改变变量的函数有多“安全”

我使用的是一个具有实用功能的角度服务,
context
this
来自我调用函数的组件,其余的应该是自解释的

changeValueOverTime(context: any, varToChange: string, amount: number, intevalTime: number) {
    const inteval = setInterval(() => {
      context[varToChange] = 200;
    }, intevalTime);
  }
编辑:


完整的函数可以在这里找到:

这真是个坏主意!每次使用RXJS interval和map发出新的值,只需将此可观察值订阅到组件中即可

changeValueOverTime(intevalTime: number) {
    return interval(intevalTime).pipe(map(() => 200));
}
在您的组件中:

changeValueOverTime().subscribe(newValue => this.varToChange = newValue);

这真是个坏主意!每次使用RXJS interval和map发出新的值,只需将此可观察值订阅到组件中即可

changeValueOverTime(intevalTime: number) {
    return interval(intevalTime).pipe(map(() => 200));
}
在您的组件中:

changeValueOverTime().subscribe(newValue => this.varToChange = newValue);

这根本没什么问题(除了模糊的副作用)。另一种选择是什么?在组件中创建一个函数来改变它。anyVariable直接在函数中我改变变量,比如context[varName]=something,我担心的是,如果你调用函数,你可以改变context中的任何变量,我想知道使用这样的函数来改变变量是否不是一个好的做法。好吧,这就是我的意思,除了模糊的副作用。晦涩=不容易看到/发现,副作用=改变该功能外部的东西。使用这两个形容词中的任何一个都不被视为一种好的做法。被描述为两者都是可能真的,真的不被视为一个好的做法?但是,这取决于你是否需要这样做。如果此服务的执行和使用在使用此服务的组件中有很好的文档记录,那么可能可以一次性(而不是常规)执行此服务。这真是个坏主意!每次使用RXJS interval和map发出新的值,只需将此可观测值订阅到组件中即可。这一点毫无问题(除了模糊的副作用)。另一种选择是什么?在组件中创建一个函数来改变它。anyVariable直接在函数中我改变变量,比如context[varName]=something,我担心的是,如果你调用函数,你可以改变context中的任何变量,我想知道使用这样的函数来改变变量是否不是一个好的做法。好吧,这就是我的意思,除了模糊的副作用。晦涩=不容易看到/发现,副作用=改变该功能外部的东西。使用这两个形容词中的任何一个都不被视为一种好的做法。被描述为两者都是可能真的,真的不被视为一个好的做法?但是,这取决于你是否需要这样做。如果此服务的执行和使用在使用此服务的组件中有很好的文档记录,那么可能可以一次性(而不是常规)执行此服务。这真是个坏主意!每次使用RXJS interval和map发出新的值,只需将此可观察值订阅到组件中即可。