zoukankan      html  css  js  c++  java
  • JS 函数学习

    一、函数格式

    1、函数可以通过声明来创建

    function functionName(parameters){

           执行代码

    }

    2、函数也可以通过一个表达式定义存储在变量中

    var fun = function(a,b){return a*b;}

    二、函数可以自调用

    如果表达是后面紧跟();,则会自我调用

    (function () {
        var x = "Hello!!";      // 我将调用自己
    })();

    三、函数可以作为一个值或者一个表达式使用

    function myfunction(a,b){

    return a*b;

    }

    var x = myfunction(3,4);  //结果为12(作为变量)

    function myfunction(a,b){

    return a*b;

    }

    var x = myfunction(3,4) * 2;  //结果为24(作为表达式)

    四、函数提升

    使用表达式定义函数是无法提升(匿名函数)

    五、函数是对象

    函数也有属性和方法  例如:

    function myfunction (a,b){

    return arguments.length;  //返回函数在被调用过程中接收到的参数

    }

    又例如:

    function myfunction (a,b){

    return a*b;

    }

    var str = myfunction.toString();  //将函数作为字符串返回   结果为:function myFunction(a, b) { return a * b; }

    六、函数参数(显示参数与隐示参数)

    显示参数 parameters  在函数定义时给出

    隐示参数 arguments    在函数调用时传递给函数真正的值

    JS函数对隐示参数的个数与类型没有检测   定义显示参数时没有指定数据类型

    七、Arguements对象

    函数有个内置的arguments对象  它包含了函数调用的参数数组  相当于是函数接受的参数被全部放进一个数组arguments[ ]中

    通过arguments.length可以简单地知道函数中究竟有多少个参数

    八、函数调用

    JS中一共有4种方法调用函数

    每种方式的不同在于this的初始化

    (1)作为一个函数调用

    function myfunction(a,b){
        return a*b;
    }
    myfunction(6,7); 

    以上函数不属于任何对象,在JS中默认为全局对象

    在HTML中默认的全局对象是页面本身,所以函数是属于页面的

    在浏览器中页面的对象是浏览器窗口(window对象),函数会自动变为window对象的函数

    function myfunction(a,b){
        return a*b;
    }
    window.myfunction(6,7);  //返回42

    当函数没有被自身对象调用时,this就会变成全局对象

    而在浏览器中全局对象是窗口(window对象)

    function myfunction( ){
        return this;
    }
    myfunction();   //返回window对象

    (2)函数作为方法调用

    var myObiect={
                firstName:"A",
                lastName:"B",
                fullName:function(){
                    return this.firstName+this.lastName;
                }
            }
            myObiect.fullName();

    fullName方法是一个函数,函数属于对象,myObject是函数的所有者,所以this的值为myObject对象

    测试如下:

    var myObiect={
                firstName:"A",
                lastName:"B",
                fullName:function(){
                    return this;
                }
            }
            myObiect.fullName();

    返回Object

    (3)使用构造函数调用

    如果函数使用了new,则是调用了构造函数

          function myfunction(arg1,arg2){   
    this.firstName=arg1; this.lastName=arg2; }
    var x=new myfunction("A","B"); x.firstName; //返回A

    this创建了一个新对象

    构造函数的调用会创建一个新对象,新对象继承了构造函数的属性和方法

    (4)作为函数方法调用函数

    在JS中函数是对象,函数有它的属性和方法

    call() 与 apply()是预定义的函数方法,两个方法可以用于调用函数,两个函数的第一个参数必须是对象本身

    function myfunction(a,b){
                return a*b;
            }
            var myObject=myfunction.call(myObject,6,7);
    function myfunction(a,b){
                return a*b;
            }
            myArray=[6,7];
            var myObject=myfunction.apply(myObject,myArray);
            myObject;

    call()方法与apply()方法相同的地方在于传入的第一个参数都必须是对象本身

    不同的是,applay()方法会将参数作为一个数组传入,而call()方法直接将参数传入

    在严格模式下,在调用函数时的第一个参数回座位this的值,即使该参数不是一个对象

    在非严格模式下,如果第一个参数的值是null或undefined,它将会使用全局变量代替

    this指的是调用函数的那个对象

  • 相关阅读:
    Laravel5.0学习--03 Artisan命令
    yar框架使用笔记
    MySQL外键之级联
    笛卡尔积
    PHP钩子机制
    CentOS安装PHP7+Nginx+MySQL
    Linux压缩命令
    Git命令汇总
    使用List把一个长字符串分解成若干个短字符串
    Adb connection Error:远程主机强迫关闭了一个现有的连接
  • 原文地址:https://www.cnblogs.com/zhuyan-dailycheck/p/9867077.html
Copyright © 2011-2022 走看看