<script type="application/javascript">
function f1(n){
n= n || 2;
return function (x){
return (x*n);
}
}var f2 = f1();
var f3 = f1(3);document.write(f2(3)+"</br>");
document.write(f3(3)+"</br>");
document.write(f3(f2(3))+"</br>");
</script>
的输出结果为什么是
6
9
18
那句n= n || 2;有什么作用呢?js
function f1(n){
n= n || 2;
return function (x){
return (x*n);
}
}var f2 = f1();
var f3 = f1(3);document.write(f2(3)+"</br>");
document.write(f3(3)+"</br>");
document.write(f3(f2(3))+"</br>");
</script>
的输出结果为什么是
6
9
18
那句n= n || 2;有什么作用呢?js
就是看你执行f1的时候有没有给参数n传值(准确的说是不等于0的数值),传了的话就让n=“传的值”,没传的话就让n=2。
表达式a || 表达式b
当表达式a的值转换成Boolean值为true时,返回表达式a的值,并且不执行表达式b
当表达式a的值转换成Boolean值为false时,执行表达式b 返回表达式b的值,非 Boolean 值转换为 Boolean 值:
所有对象都被认为是 true。
字符串当且仅当为空时才被认为是 false。
null 和 undefined 被认为是 false。
数字当且仅当为 0 时才是 false。
f2就是一个方法内容是function (x){
return (x*2);
}
然后你就懂了吧
函数里可以返回函数,可以方便自定义很多函数,增加了灵活性啊
function (x){
return (x*2);
}
里的形参x是么?
function (x){
return (x*2);
}
里的形参x是么?
f2(3)所以就是function (3){
return (3*2);
}
结果就是6了