首页 > 网站 > WEB开发 > 正文

Javascript笔记--函数

2024-04-27 14:11:46
字体:
来源:转载
供稿:网友

javascript笔记--函数

上一篇写了有关Javascript中对象的应用,本篇博客记录有关方法的使用.

一. 函数的调用.

1.普通调用: 少传参数那么就会将缺少的参数默认为undefined.

    var add = function(a,b){        return a+b;    }    console.log(add(1,2)); //3    console.log(add(1,"2")); //12    console.log(add(1)); //Nan    console.log(add(null,1)) //1    console.log(add("12")) //12undefined

2.方法调用模式: 将函数作为一个对象的属性,就叫做方法.

var myObj ={        value :0,        setValue:function(number1){            this.value = typeof(number1)=='number'?number1:1;        }    };    myObj.setValue(3)    console.log(myObj.value); //3    myObj.setValue("3")    console.log(myObj.value); //1

3.构造器调用模式: 在C#中我们声明一个对象一般都是通过new关键字来实现,其实JavaScript也可以.

var Quo = function(){        this.val1;    }    var myQuo = new Quo();    console.log(myQuo.val1);    myQuo.val1=1; //1    console.log(myQuo.val1);    var myQuo1 = new Quo();    console.log(myQuo1.val1); // undefined

4.默认参数,每一个函数里面默认会有一个arguments参数用来存储,所有的参数的. arguments是一个对象,存储了数据,不具备其他方法.

    var sum = function(){        var sum=0;        for(var i=0; i<arguments.length;i+=1){  //默认会有一个arguments包含所有参数             sum+= arguments[i];        }        return sum;    }    console.log(sum(1,2,3)); // 6

二. 异常处理

1.异常处理返回的对象信息由自己随意构建.返回任意对象均可. throw抛出了一个包含name和message属性的对象.

var add = function(a,b){        if(typeof(a)!='number' || typeof(b)!='number'){            throw{                name:'type Error',                message:'All the parma must be number type'            }        }    }        var add_test = function(){        try{            add("frank",1);        }catch(ex){            console.log(ex.message); // All the parma must be number type        }    }

三.扩展方法.

1.和C#一样,JavaScript也提供了扩展方法,对于一些会经常用到的一些方法,可以通过提供扩展方法,方便对数据处理.

    Array.PRototype.GetOddNumber = function(){         var result = [];         for(var index=0;index<this.length;index++){             if(this[index]%2!=0){                result.push(this[index]);             }         }         return result;    }      var array = [1,2,3,4,5,6];    array = array.GetOddNumber();    console.log(array); // [1, 3, 5, GetOddNumber: function]

四.闭包

对于闭包我也不清楚该怎么定义表示直接上代码吧.

1.作用域. 变量分为全局变量和局部变量两种, 外面无法访问局部变量.

var global_val1 = 3;    var add = function(){        private_val2=4;        var private_val3 =5;    }

2.闭包的应用: 全局变量的坏处在于很多地方都可以修改。下面有这样一个场景, 我要记录一个button的点击次数,比方id分别为btn1

A.全局变量的实现方法.

    var count1 = 0;   $(document).ready(function(){    $("#btn1").click(function(){        count1 +=1;        alert(count1);    });   });

B.使用闭包方法解决:

   $(document).ready(function(){    $("#btn1").click(function(){        alert(showCount());    });   });   var showCount = (function () {    var counter = 0;    return function () {return counter += 1;}   })();

C.对比: 两种方法均可以实现点击次数,但是问题来了. 对于第一种方法,Count是全局变量很容易被其他js修改到. 而且count本来就只用于记录button次数,所以是没必要定义为全局变量的.


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表