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

来源:互联网 发布:客观钓鱼岛主权 知乎 编辑:程序博客网 时间:2024/05/16 06:37

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

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的初始化只会持续一次,所以局部变量可以叠加

原创粉丝点击