如何在本地范围内重新定义对象变量

时间:2019-02-22 18:20:02

标签: javascript object variables scope

如何在本地重新定义对象变量?对于普通变量,我会在函数内部使用let,但是let似乎不适用于对象变量。有办法吗?

以下代码显示,我可以使用options.soundFileName = 'audio/60.wav';重新定义全局变量。但是,如果我使用let options.soundFileName = 'audio/60.wav';,这是行不通的。

var options = {
  soundFileName: 'audio/01.wav',
};          
           
(function masterStart() {
  setInterval(function () {
  console.log('sound name global: ' + options.soundFileName)
   }, 1000);
}());

A();
function A() {
  options.soundFileName = 'audio/60.wav'; 
  // redefines sound file but globally
  // how can i redefinie it only within `A()`?
  
 }

/*
B();
function B() {
  let options.soundFileName = 'audio/60.wav'; // doesn't work at all
  
 }
 */

1 个答案:

答案 0 :(得分:1)

没有局部属性,只有局部变量。

如果要临时更改对象属性,请将旧值保存在局部变量中:

function A() {
    let oldFileName = options.soundFileName;
    options.soundFileName = 'audio/60.wav';
    // do stuff
    // ...
    options.soundFileName = oldFileName;
}