关于return的作用

jacty 2013-06-18 03:57:50
function initCommonHeader() {
$.get("/ajax.ashx?action=initcommonheader&t=" + Math.random(), function (rsp) {
var IM = gav(rsp, "showIM");
showIM(IM);
var username = gav(rsp, "username");
if (username.length > 0) {
$j("commonHeaderGuest").hide();
$j("commonHeaderUsername").html(username);
$j("commonHeaderUser").fadeIn(80);
return username;
}
});
return "";
}

请看这段代码,里头的两个return的作用理解得不是很清楚,尝试去除对运行也没什么影响,未能发现报错或者异常。但是不太理解这两个return有什么存在的必要。
...全文
347 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
jacty 2013-06-21
  • 打赏
  • 举报
回复
引用 16 楼 u010879914 的回复:
[quote=引用 14 楼 jacty0219 的回复:] [quote=引用 9 楼 u010879914 的回复:] 满足判断条件,则进行操作DOM并返回username,不满足则返回“”
返回“”是在最外层,无任何条件。应该是一直会返回空的吧?[/quote] 满足判断条件,函数return了,就不会再往下执行了[/quote] 第一个return是只影响if里的后续吧,不影响if外的后续操作吧?
jacty 2013-06-21
  • 打赏
  • 举报
回复
引用 15 楼 veryhunger 的回复:
[quote=引用 12 楼 jacty0219 的回复:] [quote=引用 5 楼 veryhunger 的回复:]
var vars = 1;
function fns() {
  if(vars == 1) return "username";
  return " ";
}

var b;
b = fns();
alert(b)
这个我试了下,第二个return对运行结果没影响啊。。= =![/quote]当vars = vars + 1; b = fns(); [/quote] 没太看懂你的意思。。。= =!
wdbjsh 2013-06-20
  • 打赏
  • 举报
回复
当前的应用的确是没用用的。。。。这两个return有没有都没有区别。。。 因为是启动的异步操作,实时的return没有意义
  • 打赏
  • 举报
回复
我觉得单纯的编译 initCommonHeader(),return删除与否 效果是显示不出来的 在函数外调用 var username = initCommonHeader();根据username.length > 0判断是否有获取到数据 我想这段函数表达就是这个意思吧
yibey 2013-06-20
  • 打赏
  • 举报
回复
我是看不出来这2个return有毛用,第一个return是return回调函数的,第二个return返回给当前函数一个空字符串
卧勒个去 2013-06-20
  • 打赏
  • 举报
回复
引用 14 楼 jacty0219 的回复:
[quote=引用 9 楼 u010879914 的回复:] 满足判断条件,则进行操作DOM并返回username,不满足则返回“”
返回“”是在最外层,无任何条件。应该是一直会返回空的吧?[/quote] 满足判断条件,函数return了,就不会再往下执行了
KK3K2005 2013-06-19
  • 打赏
  • 举报
回复
把 return 的行注释掉 看看整个运行正常不 正常的话你懂的
tckoo 2013-06-19
  • 打赏
  • 举报
回复
个人觉得在异步里面return没有太多意义,本身都不能同步得到异步里面的结果,所以那个返回没多大用处,即使需要用到异步里面的结果,那么一般使用回调函数就可以解决。
  • 打赏
  • 举报
回复
引用 12 楼 jacty0219 的回复:
[quote=引用 5 楼 veryhunger 的回复:]
var vars = 1;
function fns() {
  if(vars == 1) return "username";
  return " ";
}

var b;
b = fns();
alert(b)
这个我试了下,第二个return对运行结果没影响啊。。= =![/quote]当vars = vars + 1; b = fns();
jacty 2013-06-19
  • 打赏
  • 举报
回复
引用 9 楼 u010879914 的回复:
满足判断条件,则进行操作DOM并返回username,不满足则返回“”
返回“”是在最外层,无任何条件。应该是一直会返回空的吧?
jacty 2013-06-19
  • 打赏
  • 举报
回复
引用 8 楼 a33440521 的回复:
一个return空字符串,一个return用户名,我这样 int id=initCommonHeader() ; 不就获取到了
你这个是有第一个return就可以了吧。最后那个return是在最外层,无任何条件,也就是始终会return空字符串,对么?
jacty 2013-06-19
  • 打赏
  • 举报
回复
引用 5 楼 veryhunger 的回复:
var vars = 1;
function fns() {
  if(vars == 1) return "username";
  return " ";
}

var b;
b = fns();
alert(b)
这个我试了下,第二个return对运行结果没影响啊。。= =!
卧勒个去 2013-06-18
  • 打赏
  • 举报
回复
满足判断条件,则进行操作DOM并返回username,不满足则返回“”
  • 打赏
  • 举报
回复
一个return空字符串,一个return用户名,我这样 int id=initCommonHeader() ; 不就获取到了
UEAnswer 2013-06-18
  • 打赏
  • 举报
回复
引用 4 楼 jacty0219 的回复:
[quote=引用 2 楼 waiting593 的回复:] 因为js 的函数签名没有返回值这一项,所以可以动态返回很多类型,就看你实际返回什么。 如果你不加return或者只有return;那么返回时undefined。 后续使用这个函数的调用者会使用到你的返回值。
有点似懂非懂的感觉。if中的那个return好像作用不大吧,最后那个return=""好像是你说的这么个意思。。[/quote] 这个函数可能会给其他人使用,它们可能单纯需要的是用户名,函数还是要定义的模块化一些,而且功能单一为好。你这个例子其实可以拆分成2个函数比较好,一个获取用户名,一个操作dom。
「已注销」 2013-06-18
  • 打赏
  • 举报
回复
没发现这两个return有什么意义
  • 打赏
  • 举报
回复
var vars = 1;
function fns() {
  if(vars == 1) return "username";
  return " ";
}

var b;
b = fns();
alert(b)
jacty 2013-06-18
  • 打赏
  • 举报
回复
引用 2 楼 waiting593 的回复:
因为js 的函数签名没有返回值这一项,所以可以动态返回很多类型,就看你实际返回什么。 如果你不加return或者只有return;那么返回时undefined。 后续使用这个函数的调用者会使用到你的返回值。
有点似懂非懂的感觉。if中的那个return好像作用不大吧,最后那个return=""好像是你说的这么个意思。。
jacty 2013-06-18
  • 打赏
  • 举报
回复
引用 1 楼 veryhunger 的回复:
这是获得用户名的函数
嗯。是的。但是有点不太明白return在这里面的必要性。
UEAnswer 2013-06-18
  • 打赏
  • 举报
回复
因为js 的函数签名没有返回值这一项,所以可以动态返回很多类型,就看你实际返回什么。 如果你不加return或者只有return;那么返回时undefined。 后续使用这个函数的调用者会使用到你的返回值。
加载更多回复(1)

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧