JavaScrip函数

函数

1.函数的定义

函数就是具有一定功能的可以重复执行的代码块
定义函数的方法有三种:

  • 自定义函数:使用函数声明语法定义
 function 函数名称() {
     //代码;
 }
  • 匿名函数:使用函数表达式定义
var 函数名称 = function () {
    //代码;
}
  • 构造函数:使用函数构造方法
var 函数名称 = new Function("//代码");

函数不调用不执行

2.调用函数
function getSum(){
    var sum=0;
    for(var i =0; i<=100;i++){
        sum+=i;
    }
    console.log(sum);
}
getSum();//调用函数
  • 作为一个函数调用
    通过函数名称+()进行调用,如果有参数传递相应的参数即可。

  • 作为全局对象调用
    当函数没有被自身调用时,this的值被成为全局对象,在web浏览器中全局对象是浏览器窗口window对象,函数作为一个全局对象调用,会使this的值成为全局对象,使用window对象作为一个变量容易造成程序崩溃。

  • 函数作为方法调用
    可以将函数定义为对象的方法进行调用

  • 使用构造函数调用函数
    如果在函数调用前使用了new关键字,则调用了构造函数

  • 作为回调函数调用函数

3.参数
  • 如果定义了参数,在调用的时候没有传值,默认设置为undefined
  • 在调用的时候如果传递参数超过了定义时参数,js会忽略多余的参数
  • js中不能直接写默认值,可以通过arguments对象来实现默认值效果
  • 可以通过arguments对象实现可变参数的函数
  • 通过值传递参数在函数体内对变量做修改不会影响变量本身
  • 通过变量传递参数在函数体内对变量做出更改会影响变量本身
<script>
    function fn(a,b) {
        console.log(a+b);
    }
    fn(1,2);
    fn(3,4);
    fn(5,6);
</script>
4.函数重载

JavaScript中没有方法的重载:如果函数名重复,后面的函数会覆盖前面的函数

<script>
    function fn(a,b) {
        return a+b;
    }
    function fn(a,b,c) {
        return a+b+c;
    }
    var result = fn(5,6);//NaN
</script>
5.变量的作用域
  • 局部变量:在函数体内声明的的变量,仅在函数体内可以使用
  • 全局变量:函数体外声明,在变量声明开始到脚本结束都可以使用
    尽量控制全局变量,容易引发bug,最好总是使用var声明变量
<script>
    //局部变量:只有局部能够访问的变量
    //函数内部用var定义的变量
    //全局变量:在哪里都能访问到的变量(又称成员变量)
    //函数外部或者进入javascript之后立即定义的变量和函数内部不带有var的变量
    var num3 = 333;//全局变量
    //函数加载的时候只加载函数名不加载函数体
    function fn() {
        var num1 = 111;//局部变量
        num2 = 222; //全局变量
        console.log(num3);
    }
    fn();
    //console.log(num1);//会报错!
    console.log(num2);
    console.log(num3);
</script>
  • 隐式全局变量:
<script>
    function fn1() {
        //b和c都是隐式全局变量
        var a = b = c = 1;
        //e和f是隐式全局变量(分号隔开)
        var d = 1;e = 2;f = 3;
        //g h i都不是隐式全局变量(逗号隔开)
        var g = 1,h = 2,i = 3;
    }
    fn1();
    //console.log(a);
    console.log(b);
    console.log(c);
    //console.log(d);
    console.log(e);
    console.log(f);
    //console.log(g);
    //console.log(h);
    //console.log(i);
</script>
6.回调函数

回调函数一般是用于定义一个规则来使用的
规则的传递只能通过函数实现,通过变量无法达成

<script>
    console.log(fn(10,5,test1));
    console.log(fn(10,5,test2));
    console.log(fn(10,5,test3));
    console.log(fn(10,5,test4));
    function fn(num1,num2,demo) {
        return demo(num1,num2);
    }

    //定义四个规则:加减乘除
    function test1(a,b) {
        return a+b;
    }
    function test2(a,b) {
        return a-b;
    }
    function test3(a,b) {
        return a*b;
    }
    function test4(a,b) {
        return a/b;
    }
</script>
7.函数返回值

返回值:执行完毕函数以后,我们能给其他变量赋值

<script>
    //对数组排序,从小到大
    var arr = [1,3,2,6,4,5];
    function bubble(array) {
        //外循环控制轮数
        for(var i=0;i<array.length-1;i++){
            //内循环控制次数
            for(var j=0;j<array.length-1;j++){
                if(array[j]>array[j+1]){
                    var temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                }
            }
        }
        //有了return执行完毕方法后,就可以用变量接收数据
        return array;
    }
    console.log(bubble(arr));
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值