zoukankan      html  css  js  c++  java
  • 如何理解Javascript中的函数(Function)

    Function类型

    首先得知道,每个函数都是Function类型的实例,所以函数本身是对象。
    示例1:

    function sum (num1, num2){
        return sum1 + sum2;  
    }
    

    示例2:

    var sum = function(num1, num2){
        return num1 + num2;
    }
    

    本质上这两种定义函数的方式没什么差别。因为函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。
    定义一个函数可以理解为:函数名是变量,函数是对象,函数名是指向函数的指针,与其他变量没什么不同。

    没有重载(深入理解)

    看个例子:

    function add(num1){
        return num1+100
    }
    
    function add(num2){
        return num2+200
    }
    var result = add(100);    //300
    

    这个例子中声明了两个同名函数,结果则是后面的函数覆盖了前面的函数。可以理解为定义了一个变量add 指向一个function, 然后又改变了这个变量add指向了另一个function,所以只有最后的function生效。

    函数属性和方法

    每个函数都包含两个属性:length和prototype。其中,length属性表示函数希望接收的命名参数的个数。

    function sayName(){
        alert(name);
    }
    function sum(num1, num2){
        return num1 + num2;
    }
    function sayHi(){
        alert('hi');
    }
    console.log(sayName.length);    //1
    console.log(sum.length);    //2
    console.log(sayHi.length);    //0
    

    每个函数都包含两个非继承而来的方法:call() 和 apply()
    apply() 方法接收两个参数,一个时在其中运行函数的作用域,另一个是参数数组。
    call() 方法接收的第一个参数也是在其中运行函数的作用于,其他的参数必须逐个列举出来。
    ES5还定义了一个方法:bind()。这个方法会创建一个函数的实例,其this值会被绑定到传给bind()函数的值。
    详细了解这三个函数,请去查看js中函数的this指向相关内容。

    函数内部属性

    在函数内部,有两个特别的对象:arguments和this。 arguments的主要用途是保存函数参数,但这个对象还有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数。

    有疑问或者问题,请留言,本人常在回复比较及时。
    作者:Cirry
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    设置标题自适应宽度,动态调整大小
    终止延迟函数
    iOS 关于音频开发
    阻止iOS设备锁屏
    苹果开发——设置iTunes Connect中的Contracts, Tax, and Banking
    【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取"产品付费数量等于0的问题"】
    uibutton 设置title 居左显示
    通过view 获取viewController
    tableview 自动滑动到某一行
    uibutton 设置圆角边框
  • 原文地址:https://www.cnblogs.com/cirry/p/12637406.html
Copyright © 2011-2022 走看看