Welcome 微信登录

首页 / 脚本样式 / JavaScript / javascript学习笔记2-函数

javascript学习笔记2-函数2010-02-21 javaeye lgx23512.函数

2.1函数直接量

函数直接量是用作表达式,而不是用作语句,它无需指定函数名。与函数写法的比较:

Js代码

function f(){}
var f = function(){}

2.2函数的参数

Js中函数的参数个数和类型是可以很任意的,这就需要用于实质的情况进行相应的判断处理。

可选参数

如果一个函数的参数是可选的,那么如果没有传的话,则是underfined的值,则在函数里用||对它进行赋默认值。这种写法很常用。

用对象来作为函数的参数

当函数的参数较长的用,且常与||一起使用。

参数类型

如果对函数的参数类型有着严格的要求,那么记得一定要在函数内对类型做判断,如果类型不正确,则抛出异常来报告这一事实。如arraycopy()方法,期望的参数是数组,则如果传入的不是数组,那么需要抛出。

再比如我们计算一个数组所有元素的和,如果是在以前,程序里是数组里预先是判定所有的元素都是数值的,然后根据数值的元素的情况去求和。但是,很多时候开发者并不是一个人,可能你要处理的数组是别人开个接口提供给你的,或者你是从数据库去取出数据来构造出数组,这时候你就不能都把元素当作数值来判断,必须对传入的是否是数组,及元素是否是数值进行相应的判断,如果元素有underfined或null时忽略,或元素包含有不是数值时给出提示,或传入的值不是数组时给出提示。具体的代码如下:

Js代码

function ArrayUserCommMgr{}
ArrayUserCommMgr.prototype={
isArray:function(a){
var result = false;
if((a instanceof Array)||(a && typeof a == "object" && "length" in a)){
result = true;
}
return result;
},
getSum:function(a){
if (arrayUserCommMgr.isArray()){
var total = 0;
for(var i = 0; i < a.length; i++) {
var element = a[i];
if (!element) continue; // ignore null and undefined elements
if (typeof element == "number"){
total += element;
}else{
throw new Error("sum(): all array elements must be numbers");
}
}
}else{
throw new Error("sum(): argument must be an array");
}
}
}

以上代码注意的是:

1、用((a instanceof Array)||

(a && typeof a == "object" && "length" in a))

来判断是否传入的是数组(instanceof Array),或类似数组的对象((a && typeof a == "object" && "length" in a))