03、函数

来源:互联网 发布:奶茶店销售额大数据 编辑:程序博客网 时间:2024/05/17 15:22

01、函数分类

匿名函数

function(){

}

可以把函数赋值给变量、事件。避免函数名污染。若先声明个带名称的函数,再赋值给变量或事件,就造成了函数名的滥用。

//变量匿名函数,左侧可以为变量、事件等var anonymousNormal = function (p1, p2) {    alert(p1+p2);}anonymousNormal(3,6);//输出9

有名函数

function a(){
    console.log( '心艾老师今天28' );

}

    Js中同名函数的覆盖:

        在Js中函数是没有重载,定义相同函数名、不同参数签名的函数,后面的函数会覆盖前面的函数。调用时,只会调用后面的函数。
        var n1 = 1;

        function add(value1) {
              return n1 + 1;
        }
       alert(add(n1));//调用的是下面的函数,输出:3
 
        function add(value1, value2) {
              return value1 + 2;
        }
        alert(add(n1));//输出:3

无名函数

      即在函数声明时,在后面紧跟参数。Js语法解析此函数时,里面代码立即执行。

(function (p1) {    alert(p1);})(1);

适用场景:只需执行一次的。如浏览器加载完,只需要执行一次且后面不执行的功能。


03、函数执行 

主动执行      函数名();

被动执行      对象.事件 = 函数名(或者匿名函数);  特别注意:函数名后不能加(),加括号代表自执行,而不是由事件触发后执行


04、函数定义

//定义函数名为a的函数,此时其不可以直接单独加括号自执行;

function a(){
    alert(1);
}; 

如果要在声明函数时自执行,可以通过如下下方式

(function(){
    alert( 2 );
})();

+function(){
    alert( 2 );
}();

-function(){
    alert( 2 );
}();

!function(){
    alert( 2 );
}();

~function(){
    alert( 2 );
}();


05、函数表达式  

函数表达式可以加括号自执行;

var b = function(){
    alert( 2 );
};

//加括号自执行

var b = function(){
    alert( 2 );
}();


06、函数的返回值:

1)、当函数没有传递返回值的时候,默认返回值为undefined。

2)、函数 return 以后,后面不管什么代码都不执行了,但要特别注意函数执行后返回的值时函数还是一个字,

<!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Description" content=""><title>Document</title></head><body><script>/*function a(){alert(1);return function(){alert(2);} }a();//此时只会弹出1,并不会弹出2,函数 return 以后,后面不管什么代码都不执行了,//但是此时返回值为一个函数,a()();//此时会弹出1 弹出2 ,因为函数的返回值为一个函数,再给函数加上一个括号被返回的函数将会执行*//*function a(){alert(1);return function(){alert(2);return function(){alert(3);}} }a()()();//依次类推,此时会弹出1 弹出2 弹出3*/document.onclick = a(); //函数加了括号则被执行了                          //因此此时等效于document.onclick= function(){ alert( this );}function a(){alert( 1 );var b = function(){   alert( this );}return b;};</script></body></html>



08、arguments对象

arguments 类似于C#的params,操作可变参数:传入函数的参数数量大于定义时的参数数量。

function showNames(name) {    alert(name);//张三    for (var i = 0; i < arguments.length; i++) {        alert(arguments[i]);//张三、李四、王五    }}showNames('张三','李四','王五');
0 0
原创粉丝点击