返回信息流在这个例子中,变量 globalPerson 取得了 createPerson()函数返回的值。在 createPerson() 函数内部,我们创建了一个对象并将其赋给局部变量 localPerson,然后又为该对象添加了一个名为 name 的属性。最后,当调用这个函数时,localPerson 以函数值的形式返回并赋给全局变量 globalPerson。由于 localPerson 在 createPerson()函数执行完毕后就离开了其执行环境,因此 无需我们显式地去为它解除引用。但是对于全局变量 globalPerson 而言,则需要我们在不使用它的 时候手工为它解除引用,这也正是下面例子中最后一行代码的目的。
function createPerson(name){
var localPerson = new Object();
localPerson.name = name;
?}
var globalPerson = createPerson("Nicholas");
// 手工解除 globalPerson 的引用
globalPerson = null;
不明白为什么globalPerson = null了还能访问其属性name
这是一条镜像帖。来源:北邮人论坛 / www-technology / #31344同步于 2015/9/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
初学javascript
Jiangshui
2015/9/14镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
createPerson这个函数和global没有任何关系啊,从头到尾都是null,而且js里不用就不用管了,不需要显式的设置为null,想删除的话可以试试delete
是我没表达清楚,我的疑问在于通过createperson这个函数不应该完成了对全局变量global 的一个属性name 赋值了嘛,随后又设置为null说是为了释放内存,那么这样之前的赋值有效吗
【 在 guoqu211 的大作中提到: 】
: createPerson这个函数和global没有任何关系啊,从头到尾都是null,而且js里不用就不用管了,不需要显式的设置为null,想删除的话可以试试delete
:
发自「贵邮」
var globalPerson以后应该进行一系列操作吧,都结束了才设置null。
这几行代码应该是省略了操作过程,null以后赋值都失效了,就和离开函数作用域以后里面的局部变量被销毁是一个意思
【 在 Jiangshui 的大作中提到: 】
: 是我没表达清楚,我的疑问在于通过createperson这个函数不应该完成了对全局变量global 的一个属性name 赋值了嘛,随后又设置为null说是为了释放内存,那么这样之前的赋值有效吗
:
: 发自「贵邮」
LZ是怎么访问的呀 你的代码都不能直接运行吧
【 在 Jiangshui 的大作中提到: 】
: 在这个例子中,变量 globalPerson 取得了 createPerson()函数返回的值。在 createPerson() 函数内部,我们创建了一个对象并将其赋给局部变量 localPerson,然后又为该对象添加了一个名为 name 的属性。最后,当调用这个函数时,localPerson 以函数值的形式返回并赋给全局变量 globalPerson。由于 localPerson 在 createPerson()函数执行完毕后就离开了其执行环境,因此 无需我们显式地去为它解除引用。但是对于全局变量 globalPerson 而言,则需要我们在不使用它的 时候手工为它解除引用,这也正是下面例子中最后一行代码的目的。
: function createPerson(name){
: var localPerson = new Object();
: ...................
【 在 xssd 的大作中提到: 】
: LZ是怎么访问的呀 你的代码都不能直接运行吧
: [upload=1][/upload]
这是书上的,我并不知道,不过楼上有大神
【 在 YuaNs 的大作中提到: 】
: var globalPerson以后应该进行一系列操作吧,都结束了才设置null。
: 这几行代码应该是省略了操作过程,null以后赋值都失效了,就和离开函数作用域以后里面的局部变量被销毁是一个意思
:
3q