参数: javascript中函数在调用时,总会得到一个arguments数组参数。
通过这个数组,函数可以访问所有他被调用时传递给他的参数列表(包括那些未被分配但是在声明时定义的形参。)
在这里,我要说下,这个arguments也是不久前我接触过。当程序出现错误时,利用它,可以查看相应的函数调用是否正
确,并根据相应参数,找到问题所在。
返回: 1、函数没有指定返回值时,返回undefined。2、returne语句可以让函数提前返回。
3、函数用new来调用时,且返回值不是一个对象,则返回this(此新对象)。
异常: throw语句抛出一个exception对象(它包含一个name和一个message属性。
exception对象将被传递一个try语句的catch从句中。由catch来处理。
给类型添加方法: 这个前边提到过,只需给原类型的类添加一个函数即可。例如:Number.integer = function(){}
递归: 递归既是自己直接或间接的调用自身的一中用法。对于javascript的递归,与其他语言也并没有太大的区别。
作用域: 在函数调用时提到了this的取值。那是一个前期比较容易犯错误的地方。这里,也是一处容易忽略的。
作用域就是一个变量的生命周期。javascript中,变量具有函数作用域,但是没有块作用域。
这就要求我们在用时,把所有的变量声明都写到函数的顶部。(其实写到哪,在函数内部都是可见的)。
闭包: 这个是函数的一中很巧妙的用法,但是到目前为止,我并没有真正的领会它的真正作用,所以先把笔记记下
先看一段代码:
var Obj = function() {
var value = 0;
return {
getValue: function() {
return value;
}
}
} ();
通过这段代码,可以看到Obj的值其实就是含有getValue函数的一个对象.注意最后的()。
还有一个现象就是,匿名函数已经返回了。但是它的一个属性value。任然可以通过getValue来使用。这就是闭包。
再来一个例子:
var add_the_handlers = function(nodes) {
var i;
for (i = 0; i < nodes.length; i++) {
nodes[i].onclick = function(i) {
return function(e) {
alert(e);
}
} (i);
}
}
我们定义了一个函数,并立即传递i进去执行,而不是把一个函数赋值给onclick。
那个函数将返回一个事件处理函数,这个事件处理函数绑定传递进去的i值,而不是定义在add_the_handlers函数中的i的值。
那个被返回的函数赋值给onclick
回调:我的理解就是把函数作为参数,然后让这个函数在另一个函数中执行。回调在javascript中,我觉得用的很频繁。这里说下几个注意点:回调中this的取值,回调中借用调用函数的参数的形参数。
回调更好的用途是在异步请求中使用。使得不连续事件的处理更加容易。
对于这一篇的内容,我感觉是是比较重要的。这里简单总结下比较重点的模块:函数调用,作用域,参数,返回,闭包,回调。
在下一篇,继续学习函数,但是是一些还没有接触到的概念,也或许是已经接触到但是没有对应起来的模块。