1. javascript的返回值类型
- 数值
- 字符串
- 布尔值
- 对象
- 数组
- 函数
- undefined、null
2. 返回值是函数时
function f1(x){
return function(y){
console.log(x+y);
}
}
f1(1)(2);
//3
- 所有函数的默认返回值都是undefined。
- return后面的任何代码都不会执行
- 注意调用函数是f1()()
3. return function()与return function的区别
例子一:return function_name()
function f1(){
console.log('外层函数');
function f2(){
console.log('内层函数');
}
return f2();
}
var s = f1();
console.log('break');
// s();
output
外层函数
内层函数
break
return function_name
function f1(){
console.log('外层函数');
function f2(){
console.log('内层函数');
}
return f2;
}
var s = f1();
console.log('break');
s();
output
外层函数
break
内层函数
例子二:return function_name()
function counterCreator(){
var index = 1;
function counter(){ //嵌套函数
return index++;
}
return counter();
}
var counterA = counterCreator();
console.log(counterA);
console.log(counterA);
console.log(counterA);
output
1
1
1 //结果重复输出三次
return counter()时会自动调用嵌套函数,counterA得到的是一个数字,并不是函数。
return function_name
function counterCreator(){
var index = 1; //闭包函数执行时依赖的变量
function counter(){
return index++;
}
return counter; //返回的函数
}
var counterA = counterCreator();
console.log(counterA());
console.log(counterA());
console.log(counterA());
output
1
2
3
return counter返回的是整个counter()函数,counterA将引用counter()函数和它的执行环境,即闭包。