【发布时间】:2011-07-30 03:25:26
【问题描述】:
鉴于此代码:
function MyClass() {
var v = '1';
this.hi = function() {
console.log('Value of V is ' + v);
var v = '2';
console.log('Value of V is ' + v);
delete(v);
console.log('Value of V is ' + v);
}
}
当我做类似的事情时:
z = new MyClass();
z.hi();
我得到的结果是:
Value of V is undefined
Value of V is 2
Value of V is 2
我要解释的是为什么结果是这样的。
为什么 V 是未定义的(我理解它的方式 - 它可能不正确 - 在 JS 中它都是定义时,而不是运行时,所以定义函数有它自己的变量“v ",但它还没有在第一行定义)。
为什么不删除 V?保持相同的价值?
如何从“一级”访问值为“1”的“v”?
我知道如果我在“hi”函数中使用不同的变量名,我将能够在函数中“看到”值为“1”的变量“v”。所以我有点隐藏原来的那个,但这仍然留下了第 3 个问题——我如何访问“顶层”?
谢谢!
【问题讨论】:
-
delete仅适用于对象属性。
标签: javascript oop function visibility core