十.JavaScript 函数

<script>
    function functionName(parameters){
        //执行的代码
    }
    function myFunction(a, b) {
        return a * b;
    }

    //函数表达式
    var x = function (a, b) {
        return a * b;
    }
    var z = x(4, 3);
    //构造函数
    var myfunction = new Function("a", "b", "return a * b")
    var x = myFunction(4, 3);
    //也可以写成
    var myfunction = function(a, b) {return a * b}
    var x = myfunction(3, 4);

    //函数提升:函数可以在生命之前使用
     function1();
    function function1() {

    }

    //自调用函数
    //如果表达式后面紧跟(),则会自动调用
    (function () {
        var x = "hello!!!";
    })();

    //函数可以作为一个值使用
    function myFunction(a, b) {
        return a * b;
    }
    var x = myFunction(4, 3);
    var y = myFunction(4, 3) * 3;

    //函数是对象
    function myFunction(a, b) {
        return arguments.length;
    }
    var txt = myFunction().toString();

    //函数参数
    //参数规则1.函数定义时显式参数没有指定数据类型 2.函数对隐式参数没有进行类型检测 3.函数对隐式参数的个数没有进行检测

    //默认参数:函数在调用时未提供隐式参数,参数会默认设置为: undefined
    function myFunction(x, y) {
        if (y === undefined) {
            y = 0;
        }
    }

    //arguments对象
    //js函数有个内置的对象arguments对象
    //arguments对象包含了函数调用的参数数组,可以查找参数的值
    x = findMax(23, 100, 34, 1, 55, 233, 56);

    function findMax() {
        var i, max = arguments[0];
        if (arguments.length < 2) return max;
        for (i = 0; i < arguments.length; i++) {
            if (arguments[i] > max) {
                max = arguments[i];
            }
        }
        return max;
    }
    //通过值传递参数
    //函数中调用的参数是函数的隐式参数
    //隐式参数通过值来传递,函数仅仅只捕获值
    //如果函数修改参数的值,不会修改显示参数的初始值
    //隐式参数的改变在函数外是不可见的

    //通过对象传递参数
    //js中可以引用对象值
    //在函数内部修改对象的属性,会修改其初始的值
    //修改对象属性可作用于函数外部
    //修改对象属性在函数外是可见的

    //函数调用
    //this在js中之指向函数执行的当前对象
    this.myFunction();
    //window对象指浏览器窗口,或者是浏览器页面对象
    window.myFunction();
    //全局对象
    //函数没有被自身对象调用时this的值就会变成全局对像
    //在web浏览器中全局对象是浏览器窗口(window对象)

    //函数作为方法调用
    var myObject = {
        firstName: "John",
        lastName: "Deo",
        fullName: function () {
            return this.firstName + " " + this.lastName;
        }
    }
    myObject.fullName();    // 返回 "John Doe"

    //使用构造函数调用函数
    function myFunction(arg1, arg2) {
        this.firstName = arg1;
        this.lastName = arg2;
    }

    var x = new myFunction("John", "Doe");
    x.firstName;    // 返回 "John"


    //作为函数方法调用函数
    //call() 和 apply()是预定义的函数方法,两个方法可以用于调用函数,两个方法的第一个参数必须是对象本身
    function myFunction(a, b) {
        return a * b;
    }
    myObject = myFunction.call(myObject, 10, 2); //返回20
    myArray = [10, 2];
    myObject = myFunction.apply(myObject, myArray);



</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值