javascript的局部变量和全局变量的问题。

代码如下:varperson2={name:"tom",age:"23",tell:function(){alert("name="+this.name);},//这个可... 代码如下:

var person2={
name:"tom",
age:"23",
tell:function(){ alert("name="+this.name);}, //这个可以显示name的值
tall:function(){ alert("age="+this.age);}, //这个弹出undefine
}
alert(person2.tell());
alert(person2.tall()+"第二个函数怎么是显示这样子的?");

为什么在alert(person2.tall()")时,这个函数弹出的值是undefine的?
展开
 我来答
raymonlu
2012-03-21 · TA获得超过943个赞
知道小有建树答主
回答量:792
采纳率:0%
帮助的人:763万
展开全部
你调用的方法本来就有问题,因为alert只能弹出一个字符或数字或对象,
而person2.tell(),里面就是一个弹出方法,所以对alert来说他不是对象,不是字符,所以是undefine.
如果上面的方法改为下面写法就不会有问题:
var person2={
name:"tom",
age:"23",
tell:function(){return "name="+this.name;}, //这个可以显示name的值
tall:function(){return "age="+this.age;}, //这个弹出undefine
}
alert(person2.tell());
alert(person2.tall()+"第二个函数怎么是显示这样子的?");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
顺茂企服
2012-03-21 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:123
采纳率:0%
帮助的人:103万
展开全部
因为在alert(person2.tell());中的person2.tell()被执行,弹出name=tom,但是person2.tell()没有返回值,当然外层再次alert时当然提示undefined了啊。跟,好没有什么关系,希望对你有所帮助,如果不明白,你改成这个tell:function(){ alert("name="+this.name);return this.name;},希望对你有所帮助!就是返回值得问题
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
taoxirou
2012-03-21 · 超过25用户采纳过TA的回答
知道答主
回答量:60
采纳率:100%
帮助的人:19.3万
展开全部
你仔细看你的代码 ,就拿第一句alert来说吧,alert(person2.tell()); 这句代码首先执行的是person2.tell(); 它的 输出就是name=tom; 但是这个方法你没有没有返回值,默认的返回值就是undefined,然后alert(underfine), 就是这个样子的了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
karon_luo
2012-03-21 · TA获得超过345个赞
知道小有建树答主
回答量:165
采纳率:0%
帮助的人:156万
展开全部
tall:function(){}, 最后那个语句不要","号,逗号啊,看清楚了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
彭伟qhca
2012-03-21 · TA获得超过278个赞
知道小有建树答主
回答量:165
采纳率:0%
帮助的人:70.1万
展开全部
声明Person时最后一条语句后面是不能为逗号的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式