| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1863 人关注过本帖
标题:头大的声明+作用域+生命期
只看楼主 加入收藏
nbh002
该用户已被删除
收藏
 问题点数:0 回复次数:9 
头大的声明+作用域+生命期
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: 生命期 作用域 声明 public 变量 
2008-06-12 19:51
nbh002
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-13 01:11
渚薰
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:1132
专家分:0
注 册:2006-8-6
收藏
得分:0 
首先,你完全理解错了js的变量作用域的范围和概念,所以导致了你的混乱。
1、在js中,变量的作用域是函数作用域,而不是块作用域,即,在一个函数中声明的变量,在整个函数中都可见,但在其他函数中不可见。

举例:(以高级语言c/c++/java为例)
块作用域的产生是有块{}中定义的变量只在块中可见,在其他块或块外不可见,比如
for (int i = 0;i < 10;i++) {
}

此时的i只在for循环体中可见

而js中,因为是函数作用域,所以
for (var i=0;i<10;i++) {}
中的i在循环所处的函数体内都可见

2、js没有public和private限定,只有变量都是public,都是函数作用域中的public

3、你所指的函数外,其实存在一个global作用域,可以简单的理解成全局作用域,其中定义的变量,可理解成为全局变量,但其实,在js中,由于所有皆对象,函数也是对象,所以一个函数是可以定义在另一个函数体内,并使用,这样就造成父函数中定义的变量在子函数中是可见的,但是子函数中定义的变量在父函数中是不可见的,即

function a() {
   var ina = 1;
   
   var b = function() {
      var inb = 2;
      alert(ina);   //输出1
   }

   b();
   
   alert(inb)  //输出undefiend
}

3、同样,函数作用域内的变量定义会隐藏函数作用域外变量的定义

个人ajax技术专题站: " target="_blank">http://www. 我不会闲你烦,只会闲你不够烦!
2008-06-13 09:07
nbh002
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-13 15:10
渚薰
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:1132
专家分:0
注 册:2006-8-6
收藏
得分:0 
生命周期就是作用域中变量的行为

个人ajax技术专题站: " target="_blank">http://www. 我不会闲你烦,只会闲你不够烦!
2008-06-16 08:29
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
楼主所说的涉及OOP(面向对象的知识),而像VBScript或Javascript的面向对象特性并不十分明显或者说支持的不是很好。如果楼主没有学习过面向对象的知识,建议学习面向对象不要从vbscript或javascript来入手,原因上面已经说了。楼主可以选择从完全面向对象的一种语言入手,之后再来学习vbscript或javascript的面向对象知识就很好理解了。推荐的比较好的面向对象语言(C++、java、C#),个人是先学习的C++,然后学习的java,之后是C#。这样的路径在于java是C++基础上发展而来,学习了C++之后与java对比学习就会很好理解某些面向对象的特性。而C#是向升级的一种语言与java有很多相似的地方,同时也有一些C#独特的不同点。
学完这些面向对象语言之后,楼主再来理解VBScript或Javascript的面向对象,就会与那些语言产生一个比较,就会明白为什么说vbscript或javascript面向对象支持的不是很好。
2008-06-16 11:05
nbh002
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-16 12:18
hugeannex
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:483
专家分:911
注 册:2005-3-20
收藏
得分:0 
哎,搞得这么复杂,用过就懂了,想这么多,而且想一脚踏两船。

世事如潮我如水,只叹江湖几人回。
2008-06-16 13:02
kevintang
Rank: 4
等 级:业余侠客
威 望:9
帖 子:799
专家分:236
注 册:2008-2-14
收藏
得分:0 
学习
2008-06-20 13:17
sansiwu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-5-25
收藏
得分:0 
按我的理解,也不想要理解这么的深入透切和复杂,也不想要用那么多时间来正确理解.把 Public 和 Private 当作一个最通俗的意义和作用理解就是了.
Public:相当于定义一个默认的变量,亦为一个公用的全局的声明变量;
Private:相当于定义一个新的变量,亦为一个新的小范围的声明变量.
嗯,也不知是错或对?
2009-10-12 15:54
快速回复:头大的声明+作用域+生命期
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023821 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved