function sum(s,m){
function sum2(m){
console.log(m+s);
console.log(m);
console.log(s)
}
return sum2;
}
var ces=sum(1,2);
ces()//输出m 为undefined 输出s为1; 我的理解是 首先sum(1,2)时 其实sum2里确实发生了 1+2; 但当ces()时由于没有赋实际参数,所以m就被undefined覆盖,所以最后结果为NaN
function sum(s,m){
function sum2(){
console.log(m+s);//当sum2没有形参时m s取决于sum 也不会被undefined替代 输出3
console.log(m);//输出2
console.log(s)//输出1
}
return sum2;
}
var ces=sum(1,2);
ces();
----------------------------------------------------------------------------
var test = (function(a) {
this.a = a;
return function(b) {
return this.a + b;
}
} ( function(a, b) {
return a;
}(1, 2)) ); //(function(形参){}(实参))立即执行函数格式
console.log(test(4));
该题目主要考察的是立即执行函数与闭包的概念 这里其实有两个立即执行函数 而后一个立即执行函数的结果又作为第一个立即执行函数的实参!!(注意:立即执行函数始终会比闭包函数(非立即执行函数)先执行)所以最终的
结果为4+1 5;
function sum2(m){
console.log(m+s);
console.log(m);
console.log(s)
}
return sum2;
}
var ces=sum(1,2);
ces()//输出m 为undefined 输出s为1; 我的理解是 首先sum(1,2)时 其实sum2里确实发生了 1+2; 但当ces()时由于没有赋实际参数,所以m就被undefined覆盖,所以最后结果为NaN
function sum(s,m){
function sum2(){
console.log(m+s);//当sum2没有形参时m s取决于sum 也不会被undefined替代 输出3
console.log(m);//输出2
console.log(s)//输出1
}
return sum2;
}
var ces=sum(1,2);
ces();
----------------------------------------------------------------------------
var test = (function(a) {
this.a = a;
return function(b) {
return this.a + b;
}
} ( function(a, b) {
return a;
}(1, 2)) ); //(function(形参){}(实参))立即执行函数格式
console.log(test(4));
该题目主要考察的是立即执行函数与闭包的概念 这里其实有两个立即执行函数 而后一个立即执行函数的结果又作为第一个立即执行函数的实参!!(注意:立即执行函数始终会比闭包函数(非立即执行函数)先执行)所以最终的
结果为4+1 5;