arr[i][0] = arr[i][0].toUpperCase();
console.log(arr[i][0]);
// 原值是‘a’ , 赋值后返回值是 ‘A’ ,但是打印出来还是‘a’
arr[i][0] = arr[i][0].toUpperCase();
console.log(arr[i][0]);
// 原值是‘a’ , 赋值后返回值是 ‘A’ ,但是打印出来还是‘a’
你给的代码太少了,大概是因为0
是arr[i]
的不可写属性。例如:
var arr = [['a']], i = 0;
Object.defineProperty(arr[i], '0', {
writable: false
});
arr[i][0] = arr[i][0].toUpperCase();
console.log(arr[i][0]); // 结果a
或者:
var arr = [['a']], i = 0;
Object.freeze(arr[i]);
arr[i][0] = arr[i][0].toUpperCase();
console.log(arr[i][0]); // 结果a
总之是因为,由于某种原因,arr[i]
的属性变得不可修改了。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
不应该是你说的这样,会不会是隐藏了其他什么实现细节?譬如你用了
immutable.js
之类的库?