我难以理解基于示波器的JavaScript变量阴影。 考虑这个小的代码片段:
var k = {
prop1: 'test',
prop2: 'anotherTest'
}
for(var k = 0; k < 10; k++) {
console.log(k);
}
//prints number
console.log(typeof k);
//prints 10
console.log(k);
//undefined
console.log(k.prop1);
这是好的,因为由于直接作用范围,循环计数器变量k阴影的JSON变量k我们前面declated。 因此,JSON变量k变得不可访问可以这么说。
题:
- 在内存分配方面,现在没有办法访问原始JSON变种K,是符合垃圾回收? 将已分配的内存被释放? 或“参考孤儿”的变量仍然生活呢? 如果是的话,为什么多长时间?
- 是否有访问原始的JSON VARķ无前的for循环编写任何代码的方式?
现在考虑另一个稍微修改的代码片段:
var k = {
prop1: 'test',
prop2: 'anotherTest'
}
var m = {
prop1: k
}
for(var k = 0; k < 11; k++) {
console.log(k);
}
//prints number
console.log(typeof k);
//prints 10
console.log(k);
//undefined
console.log(k.prop1);
//reference altered? No, this reference points to the original json k
//firebug dumps object to console
console.log(m.prop1);
题:
- 这一次,我们手上之前坚持原始的k个参考,在另一个JSON对象。 和肯定,内存不会被取消分配。 但是,不会评估m.prop1解析到一个更新的整数k,为10的价值? 为什么不是该决议导致循环计数器值为10?