javascript学习笔记2-函数

2.函数

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))

时间: 2024-08-13 08:53:03

javascript学习笔记2-函数的相关文章

javascript学习笔记之函数定义

  本文主要给大家介绍了javascript的一些函数定义方面的基础知识,包括函数声明式.函数表达式.Function 构造函数等,十分的简单实用,有需要的小伙伴可以参考下. 函数声明式 ? 1 2 3 4 5 function funname( 参数 ){   ...执行的代码   } 声明式的函数并不会马上执行,需要我们调用才会执行:funname(); * 分号是用来分隔可执行JavaScript语句,由于函数声明不是一个可执行语句,所以不以分号结束. 函数表达式 ? 1 2 3 4 5

javascript学习笔记之函数定义_javascript技巧

函数声明式 function funname( 参数 ){ ...执行的代码 } 声明式的函数并不会马上执行,需要我们调用才会执行:funname();  * 分号是用来分隔可执行JavaScript语句,由于函数声明不是一个可执行语句,所以不以分号结束. 函数表达式 var x = function( 参数 ){ ...执行的代码块 }; 函数表达式定义的函数,实际上也是一个匿名函数(这个函数没有名字,直接存储在变量中)  * 函数表达式结尾是要加分号的,因为它是一个执行语句. Functio

Javascript学习笔记之 函数篇(三) : 闭包和引用_基础知识

Javascript 中一个最重要的特性就是闭包的使用.因为闭包的使用,当前作用域总可以访问外部的作用域.因为 Javascript 没有块级作用域,只有函数作用域,所以闭包的使用与函数是紧密相关的. 模拟私有变量 复制代码 代码如下: function Counter(start) {     var count = start;     return {         increment: function() {             count++;         },      

Javascript学习笔记之函数篇(四):arguments 对象_基础知识

每一个 Javascript 函数都能在自己作用域内访问一个特殊的变量 - arguments.这个变量含有一个传递给函数的所有参数的列表. arguments 对象不是一个数组.尽管在语法上它跟数组有相同的地方,例如它拥有 length 属性.但它并不是从 Array.prototype 继承而来,实际上,它就是一个对象. 因此,我们不能直接对 arguments 使用一些数组的方法,例如 push, pop 或 slice 等. 所以为了使用这些方法,我们就需要将其转换为一个真正的数组. 转

Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式_基础知识

函数声明 function foo() {} 函数 foo 将会在整个程序执行前被 hoist (提升),因此它在定义 foo 函数的整个 scope (作用域)中都是可用的.即使在函数定义之前调用它也没问题. foo(); // Works because foo was created before this code runs function foo() {} 因为我打算专门写篇介绍作用域的文章,所以这里就不详述了. 函数表达式 对于函数声明,函数的名称是必须的,而对于函数表达式而言则是

Javascript学习笔记之函数篇(五) : &amp;#65279;构造函数_基础知识

Javascript 中的构造函数与其他语言相比也是不同的.任何通过关键字 new 调用的函数都可以当做构造函数. 在构造函数体内,this 指向新创建的对象.如果构造函数体内没有显示的 return 表达式,那么我们就默认返回 this,也就是新建的对象. 复制代码 代码如下: function Foo() {     this.bla = 1; } Foo.prototype.test = function() {     console.log(this.bla); }; var test

Javascript学习笔记之函数篇(六) : &amp;#65279;作用域与命名空间_基础知识

在之前的介绍中,我们已经知道 Javascript 没有块级作用,只有函数级作用域. 复制代码 代码如下: function test() { // a scope     for(var i = 0; i < 10; i++) { // not a scope         // count     }     console.log(i); // 10 } Javascript 中也没有显示的命名空间,这就意味着一切都定义在全局作用域中.每一次引用一个变量时,Javascript 会往上遍

Javascript学习笔记之 函数篇(二) : this 的工作机制_基础知识

全局作用域下 this; 当在全局作用域中使用 this,它指向全局对象. 这里详细介绍下全局对象: 全局对象(Global object) 是在进入任何执行上下文之前就已经创建了的对象: 这个对象只存在一份,它的属性在程序中任何地方都可以访问,全局对象的生命周期终止于程序退出那一刻. 全局对象初始创建阶段将 Math.String.Date.parseInt 作为自身属性,等属性初始化,同样也可以有额外创建的其它对象作为属性(其可以指向到全局对象自身).例如,在 DOM 中,全局对象的 win

Javascript学习笔记2 函数_基础知识

就像我们可以写成这样的形式一样: 复制代码 代码如下: function Hello() { alert("Hello"); } Hello(); var Hello = function () { alert("Hello"); } Hello(); 其实都是一样的. 但是当我们对其中的函数进行修改时,会发现很奇怪的问题. 复制代码 代码如下: <script type="text/javascript"> function Hel

javascript学习笔记(四)function函数部分_基础知识

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. Jscript 支持两种函数:一类是语言内部的函数(如eval() ),另一类是自己创建的. 在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它.(该变量的作用域是局部的). 您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量. 函数的调用方式 1.普通调用:functionName(实际参数...) 2.通过指向函数的变量去调用: var  myVar