用JavaScript解构

时间:2018-06-25 09:43:42

标签: javascript javascript-objects

我有以下代码

let obj={ n:1, j:'test' };
obj[j] = 'new val' ;
let { j } = obj;
alert(j);//'test'

为什么输出仍旧值。

4 个答案:

答案 0 :(得分:1)

由于您没有显示j的初始值,因此我假设它是undefined,因此您正在执行的操作是设置obj[undefined],这将不起作用。这些方法之一都应该按照您的意思进行:

obj.j = 'new val'
obj['j'] = 'new val'

答案 1 :(得分:1)

在第二行中,当您要设置obj[j]时,未定义j,因为您想通过名为obj.j的单独变量访问j。 / p>

obj[j] = 'new val';

如果您想访问obj.j,则在JavaScript中有2个选项:

  • 通过.key:obj.j
  • 通过['key']:obj['j']

像这样使用JavaScript的destructuring

let obj = { n: 1, j: 'test' };
obj.j = 'new val';

// access one of them
(() => {
  let { j } = obj;
  console.log(j); // 'test'

  let { n } = obj;
  console.log(n); // 1
})();

// access multiple
(() => {
  let { n, j } = obj;
  console.log(n, j); // 1, 'test'
})();

// access via rest
(() => {
  let { ...rest } = obj;
  console.log(rest); // { n: 1, j: 'test' }
})();

答案 2 :(得分:0)

有语法错误

正确的方法是:

for1

let obj={ n:1, j:'test' };
obj.j = 'new val' ;
let { j } = obj;
alert(j);//'test'

所以[]中的单词表示变量

答案 3 :(得分:0)

您需要在j周围加上引号,否则它将被视为变量。

let obj={ n:1, j:'test' };
obj['j'] = 'new val' ;
alert(obj);//'test'