1)return数字/字符串/布尔,返回的还是数字/字符串/布尔
2)return函数
此时fn2()等价于 “function(){ alert(1)//嘿嘿,我是注释}” 这段代码
fn2()()
才算执行了这段代码
eg1:fn1()(10),结果为10
function fn1(){
return function(a){
alert(a)
}
}
fn1()(10)
/*等价于*/
function fn1(){
return function(){
var a;
a=10;
alert(a);
}
}
/*简化为*/
function fn1(){
var a;
a=10;
alert(a);
}
eg2:fn2(10)(20),结果为30
function fn2(a){
return function(b){
alert(a+b)
}
}
fn2(20)(10)
/*等价于执行*/
function fn2(){
var a;
a=20;
return function(){
var b;
b=10;
alert(a+b)//匿名函数中没有定义a,所以顺着作用域链从父级找到a=20,最终输出30.
}
}
/*简化为*/
function fn2(){
var a;
a=20;
var b;
b=10;
alert(a+b)
}
3)return 对象
4)return 未定义:所有函数默认的返回值是未定义
5)return(分号)后的代码不执行。
版权声明:本文为wangjiaohome原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。