function add(m){
return function(n){
return n+m++;
}
}
var add1=add(070);
var add2=add(050);
console.log(add1(010));
console.log(add2(010));
function add(m){
return function(n){
return n+m++;
}
}
var add1=add(070);
var add2=add(050);
console.log(add1(010));
console.log(add2(010));
当数字以0开头的时候,数字是八进制而非十进制,070实际上就是十进制的56,以add1为例,
当执行完 var add1=add(070);
这句时,返回一个function
,add1
等价于:
function add1(n){
var m =56;
return n+m++;
}
然后执行add1(010)
时,010实际上就是十进制的8
add1(8);//返回值:8+56,即64
add2解析过程同上,050就是十进制的40
本题考查的是闭包和进制换算问题,在js中070
表示的是8进制,转换成十进制就是56
,050
表示的是40
function add(m){
return function(n){
return n+m++;
}
}
var add1=add(070); //add1 = [func], m = 56
var add2=add(050); //add2 = [func], m = 40
console.log(add1(010)); //add1(8), n = 8, result = 64
console.log(add2(010)); //add2(8), n = 8, result = 48
至于为什么不是65,这就是++x
和x++
的问题
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.4k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.2k 阅读