zoukankan      html  css  js  c++  java
  • javascript高级程序设计第五章总结5.3

    1、Function类型三种定义方法,函数声明定义跟函数表达式定义法的区别在于,计算器会率先读取函数声明,使其在执行代码之前可用,函数表达式必须等到解析器执行到它所在的代码行,才会真正被解析。

    //函数声明定义法
    function sum(num1,num2)
    {
      return num1+num2
    }
    
    //函数表达式定义法
    var sum=function(num1,num2){
      return num1+num2
    }
    
    //Function 构造函数
    var sum=new Function("num1","num2","retrun num1+num2");//不推荐,计算机解析2次

    2、函数没有重载

    3、作为值的函数,函数本身就是变量,所以函数也可以作为值来使用。

    function callSomeFunction(someFunction,someArgument)
    {
      return someFunction(someArgument);
    }
    
    function add10(num){
      return num+10;
    }
    
    var result=callSomeFunction(add10,10);
    alert(result); //20;
    
    function getGreeting(name){
      return "Hello,"+name;
    }
    var result2=callSomeFunction(getGreeting,"Joy");
    alert(result2);  //Hello,Joy

    4、从一个函数返回另外一个函数,这是极为有用的一种方法

    function creatComparisonFunction(propertyname){
      return function(object1,object2){
        var value1=object1[propertyname];
        var value2=object2[propertyname];
        if(value1<value2)
        {
            return -1;
        }else if(value1>value2)
        {
            return 1;
        }else{
            return 0;
        }
      };
    }
    
    var data=[{name:"Za",age:28},{name:"Ni",age:29}];
    data.sort(creatComparisonFunction("name"));
    alert(data[0].name); //Ni
    
    data.sort(creatComparisonFunction("age"));
    alert(data[0].name); //Za

    5、函数内部属性arguments和this,arguments包含传入函数中的所有参数,这个对象还有一个calle属性,该属性是一个指针,指向拥有这个arguments对象的函数。

    递归算法  阶乘
    function factorial(sum)
    {
        if(num<=1)
        {
          return 1;  
        } else{
          return num*arguments.calle(num-1)  
        } 
    }
    var trueFactorial=factorial;
    factorial=function(){
      return 0;  
    }
    alert(trueFactorial(5)); //120
    alert(factorial(5));  //0

    6、函数属性和方法,length(表示参数的个数),prototype

    7、apply()和call()方法,在特定的作用域中调用函数。apply接收2个参数,一个是在其中运行函数的作用域,另外一个可以是参数数组也可以是arguments对象。call()接收参数的方式为,第一个是this值,其余参数都直接传递给函数。apply和call真正的用武之地是扩充函数.

    8、bind()方法,创建一个函数的实例,其this值会被绑定到传给bind()函数的值。

    window.color="red";
    var o={color:"blue"};
    function sayColor(){
        alert(this.color);
    }
    var objectSayColor=sayColor.bind(o);
    objectSayColor();  //blue;
  • 相关阅读:
    Codeforces 712B. Memory and Trident
    Codeforces 712A. Memory and Crow
    kkb --- webpack实战
    前端性能优化
    前端防抖
    css面试题
    七、服务端渲染 ---kkb
    数据结构与算法(位运算)
    数据结构与算法(栈、队列、链表)
    vue-cli 配置项以及请求的封装
  • 原文地址:https://www.cnblogs.com/yuyu9988/p/3354787.html
Copyright © 2011-2022 走看看