【函数的声明及调用】
1.函数的格式:
function 函数名(参数1,参数2...){
//函数体
return 结果;
}
函数调用 的格式:
直接调用:函数名(参数1 的值,参数2的值...)
事件调用:事件名=函数名()
2.函数声明的几点强调
①函数名的声明,必须符合小驼峰法则(首字母小写,之后每个单词首字母大写);
②参数列表,可以有参数,也可以无参数,分别称为有参函数,无参函数。
③声明函数时的参数列表,称为"形参列表"(变量的名)
调用函数时的参数列表,称为"实参列表"(变量的值)
函数中,实际有效的参数取决于实参的赋值,未被赋值的形参,将Undefined;
④函数如果需要返回值,可用return返回结果。
调用函数时,使用var 变量名=函数名();的方式,接受返回结果;
如果函数没有返回值,则接受的结果为Undefined。
⑤函数中变量的作用域
在函数中,使用var声明的变量,默认为函数局部变量,只在函数内容能用;
不用var声明的变量。默认为全局变量(函数中的全局变量,必须在函数调用后才能使用)
函数形参列表,为函数局部变量,只在函数内部能用。
⑥函数声明与函数调用,没有先后之分,即,调用语句可写在声明语句之前。
注:js中代码运行,会先进行检查,装载,即声明变量、函数等操作;
然后再进入执行阶段,(变量 的赋值等属于执行阶段)
所以函数的声明属于检查装载阶段,函数的调用属于执行阶段,即函数调用语句写在函数声明之前,并没有任何关系
*/
[匿名函数的 声明及调用]
* 1.声明一个匿名函数,直接赋给某个事件;
* window.onload=founction(){}
*
* 2使用函数表达式,声明匿名函数;
* 声明函数表达式 :var func= function(){}
* 调用函数表达式 : func()
* 》》》》》使用匿名函数表达式,则调用语句,必须在声明语句之后,否则报错(对比常规函数声明与调用区别)
*
*
*
* 3使用自执行函数,声明并直接调用匿名函数
* ①!function(参数1){}(参数1的值); //使用任意运算符开头,一般!
* ②(function(){}()) //使用()将匿名函数及之后的括号包裹
* ③(function(){})() //使用()只包裹匿名表达式
* 三种写法特点:
* ①结构清晰,开头加!,结尾加(),不容易乱,推荐使用
* ②可以表明匿名函数与之后 的()为一个整体,推荐使用
* ③无法表明函数与之后的 ()为一个整体,不推荐使用
*
*
*/
【函数内部的重要属性】
*
*
一、【arguments对象】
* 1.用于保存调用函数时,所赋值的实参列表。
* 》》》当我们调用函数并使用实参赋值时,实际上参数已经保存到argument数组中,即使没有
* 形参,也可以使用arguments[n]的形式调用参数:
*
* 2.argument数组的个数,取决于实参列表,与形参无关(顺序从0开始);
* 但,当第n个位置的形参、实参、arguments都存在时,形参与argument是同步的,即在函数中修改其中一个的值,
* 另一个会同步变化。
*
* 3.argument.callee是argument的重要属性,用于返回arguments所在函数的引用。
*arguments.callee()可以调用自身函数执行;
* 在函数内部用函数自身的写法,称为递归,所以arguments.callee()是递归调用时常用的方式
*