我有以下代码
let obj={ n:1, j:'test' };
obj[j] = 'new val' ;
let { j } = obj;
alert(j);//'test'
为什么输出仍旧值。
答案 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个选项:
obj.j
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'