JavaScript:On The Way...(2)函数

学到后面在调用函数时会发现有时候定义了一个函数,但在调用时候直接写了函数名,没加(),有时候调用却又加了(),一直很疑惑。那么在使用一个函数时需不需要加上()呢?

1.函数只要是要调用它进行执行的,都必须加括号。此时,函数实际上等于函数的返回值或者执行效果,当然,有些没有返回值,但已经执行了函数体内的行为,就是说,加括号的,就代表将会执行函数体代码。

2.不加括号的,都是把函数名称作为函数的指针,一个函数的名称就是这个函数的指针,此时不是得到函数的结果,因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。


函数传参

函数的参数分为形参和实参两种,调用函数的部分是实参,函数定义的部分是形参

1.有参函数

//---函数定义部分
function  函数名(参数1,参数2){  //---形式参数
    语句;
} 

//---函数调用部分
函数名(参数1,参数2//---实际参数
<script type="text/javascript">

function max(x,y){
 //var x =2,y = 4;
    if(x>y){
        alert(x);
        }else{
            alert(y);
        }
}

    max(2,4);
</script>

2.带返回值的函数

在函数语句结束时执行,并返回表达式的值作为函数的结果。
执行return后函数会停止执行,并带参数返回函数被调用的地方。

2.1 回调函数
简而言之,模块B中的某个函数b()要完成特定的功能,但是函数b()自己无法实现全部功能,这时候就需要反过头调用模块A中的函数a()来完成。这个a()就是回调函数。

这里写图片描述

演示1:(调用函数一同完成动作)

function show(){
    if(prompt('输入数字1')==1){ //---if语句判断返回哪个函数,然后在下面调用相应的函数
    return function (){
    alert('输对了');
}
}else{
return function (){
alert('输错了');
}
    }
}
show()();

演示2:(回调模拟异步的过程)

function outer(data,callback) {
    callback();//--可以理解成访问数据库的过程
    console.log('我是主函数 :' + data);      
}
function inner(){   //定义回调函数
setTimeout("console.log('我是回调函数')", 2000);//模仿数据库操作
}
outer(666,inner);

演示3:(自己调用自己(实现循环))

var  i = 0,sum = 0; 
functionfunc(){
    i++;       
     if(i<5){  
        sum +=i;
    return func();
     }
    return sum;
};
console.log('回调循环的和为:' + func());
2.2返回boolean值(true/false)

return false 就相当于终止符。
return true 就相当于执行符。
return false的作用一般是用来取消默认动作的
常用来阻止a链接,form默认submit提交等默认事件行为

<form action="http://www.baidu.com" name='Form' onsubmit="return tijiao()">
    <span>用户名</span>
    <input type="text" placeholder="请输入用户名"  name='nicheng'/>
    <input type="submit"  />
</form>
function tijiao(){
    if(Form.nicheng.value==''){
        alert('用户名不能为空哦,亲');
        return false;
    }
    return true;
}

3.无参函数

function Fun() {

alert('hello world!');

}
Fun()

4.匿名函数

//---普通函数定义
function box() {//函数名是box       

}

//---匿名函数定义//没有函数名
(function (){
      console.log('这是一个匿名函数');
 })

//---将匿名函数赋给变量定义
var box = function () {             
    return '这是一个匿名函数';
};
4 . 1 闭包函数
function test() {
        var age=100;
        return function () {
            return age++;
        }
    }

    var add = test();
    add();
    add();
    //---此时add是这个函数的返回函数
    console.log(add);
    //---输出为:ƒ () {return age++;},
    // age的初始化只会持续一次,所以局部变量可以叠加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值