日期:2014-05-16  浏览次数:20359 次

JavaScript问题求解答
<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

------解决方案--------------------
n=(n==null?2:n)
------解决方案--------------------
判断n的值是否为空,如果为空则n=2,否则为给定的那个值
------解决方案--------------------
1楼2楼都对~
就是看你执行f1的时候有没有给参数n传值(准确的说是不等于0的数值),传了的话就让n=“传的值”,没传的话就让n=2。
------解决方案--------------------
感觉n应该是个boolean值,只能是0或1吧  个人觉的。
------解决方案--------------------
逻辑“或”运算符 (
------解决方案--------------------
) 是个短路语句
表达式a 
------解决方案--------------------
 表达式b
当表达式a的值转换成Boolean值为true时,返回表达式a的值,并且不执行表达式b
当表达式a的值转换成Boolean值为false时,执行表达式b 返回表达式b的值,

非 Boolean 值转换为 Boolean 值: 
所有对象都被认为是 true。 
字符串当且仅当为空时才被认为是 false。 
null 和 undefined 被认为是 false。 
数字当且仅当为 0 时才是 false。 

------解决方案--------------------
增加知识了
------解决方案--------------------
引用:
Quote: 引用:

var f2 = f1();

f2就是一个方法内容是
function (x){
return (x*2);
}

然后你就懂了吧
函数里可以返回函数,可以方便自定义很多函数,增加了灵活性啊

那f2(3)里面的参数三就是传递给f1(n)方法中的返回方法
function (x){
return (x*2);
}
里的形参x是么?

f2(3)所以就是
function (3){
return (3*2);
}

结果就是6了