js函数知识点(一)

一、函数声明的方式

function 函数名(参数列表){ 函数体; return 返回值}   问题:会被声明提前

给出以下解决方案:

var函数名=function (参数列表){ 函数体; return 返回值}   不会被声明提前

var 函数名=new Function("参数1","参数2",...,"函数体;...")   

强烈不推荐使用,因为这种方式会导致解析两次代码,影响性能。

有关这三种声明方式的区别,可以看这篇博文学习:http://blog.csdn.net/ll641058431/article/details/52319737

  

二、重载

js语法默认不支持重载,最后创建的会覆盖之前创建的所有

解决方法:arguments

 1 function pay(                   ){
 2      //arguments[         ,         ].length
 3               //     0           1
 4      if(arguments.length==0)
 5       console.log("手机支付...");
 6      else if(arguments.length==1)
 7       console.log(
 8         "现金支付...收款金额:"+arguments[0]);
 9      else
10       console.log(
11         "刷卡结账...卡号:"+arguments[0]);
12     }
13 
14     pay();//手机支付...
15     pay(100);//现金支付...
16     pay("6553 1234","123456");//刷卡结账...

也可直接用 arguments 做参数不确定的操作

1 function add(){
2       var sum=0;
3       for(var i=0;i<arguments.length;i++){
4         sum+=arguments[i];
5       }
6       return sum;
7     }

三、匿名函数

创建时不指定函数名

为什么:

    1. 节约内存

    2. 划分临时作用域

    何时: 只要一个函数使用后,希望立刻释放时

    如何:

      1. 回调(callback): 将一个函数,交给另一个函数去自动调用。

       比如:    arr.sort(function(a,b){return a-b;})

                   xhr.onreadystatechange=function(resText){}

            btn.onclick=function(){}

            str.replace(/正则/,function(kw){return xxx});

      2. 自调: 定义函数后,立刻调用自己

        何时: 几乎所有自定义的脚本,都要放在匿名函数中

        为什么: 避免使用全局变量,避免全局污染

        如何:

          1. (function(...){...})()

          2. +function(...){...}()

(function(){
      var start=new Date();
      alert("开始加载网页内容...at:"+start.toLocaleTimeString());
    })();

  

原文地址:https://www.cnblogs.com/tanghm/p/7581731.html