【滑稽】每日一记 JS函数、BOM


函数的声明及调用:
函数的定义有三部分:函数名,参数列表,函数体
定义函数的格式:
function 函数名([参数1,参数2。。]){
函数执行部分;
return 结果;
}

函数调用的格式:
函数名(参数1的值,参数2的值。。);
注意:
1、函数名的声明必须符合小驼峰法则(即首字母小写,之后每个单词首字母大写)

2、参数列表,可以有参数(有参函数),也可没有参数(即无参函数)

3、声明函数时的参数列表称为形参列表(变量名),调用函数时的参数列表称为实参列表(变量的值)

  函数中实际有效的参数取决于实参的赋值,未被赋值的形参,将为undefined

4、函数如果需要返回值,可用return返回结果,
调用函数时使用var 变量名=函数名()的方式接收返回结果,
如果函数没有返回值,则接收的结果为undefined

5、函数中变量的作用域:
在函数中使用var声明的变量默认为函数局部变量,只在函数内部可以使用,
函数的形参列表为函数局部变量,只在函数内部能用
不用var声明变量,默认为全局变量(函数中的全局变量必须在函数调用后才能使用)

6、函数声明与函数调用没有先后之分,即调用语句可写在声明语句之前
JS中代码运行会先进行检查、装载,即声明变量、函数等操作,
然后再进入执行阶段(变量的赋值的属于执行阶段)

所以函数的声明属于检查装载阶段,函数的调用属于执行阶段,
所以函数调用语句写在函数声明语句之前,并没有任何关系
例:
console.log(num);
var num = 10;
funN();
function funN(){}
以上代码执行顺序:
------ 检查装载阶段 ------
var num; 声明变量
function funN(){} 声明函数
------ 执行阶段 ------
console.log(num);
num = 10;
funN(); 执行函数中{}的代码


匿名函数的声明及调用:
1、声明一个匿名函数,直接赋给某个事件:
window.onload=function(){}
2、使用函数表达式声明匿名函数:
声明函数表达式:var func = function(){}
调用函数表达式:func();
3、使用自执行函数声明并直接调用匿名函数:(官方推荐使用第二种)
!function(){}(); 使用任意运算符开头,通常使用!
(function(){}()); 使用小括号将匿名函数及之后的括号包裹
(function(){})();使用()包括匿名函数表达式
三种写法的特点:
第一种:结构清晰,开头加!结尾加(),不容易乱
第二种:可以表明匿名函数与之后的()为一个整体
第三种:无法表明函数与之后()为一个整体,不推荐使用

  有参函数调用:!function(){}(参数1,参数2。。);

使用匿名函数表达式,则调用语句必须在声明语句之后,否则报错

 

 

arguments对象:
1、作用:用于保存调用函数时所赋值的实参列表
当调用函数并使用实参赋值时,实际上参数已经保存到argument数组中,
即使没有形参也可以使用arguments[n]的形式调用函数
2、arguments数组的个数取决与实参列表,与形参无关,
但当第n个位置形参、实参、arguments都存在时,形参与arguments是同步的,
(即在函数中修改其中一个的值,另一个会同步变化)
3、arguments.callee是arguments的重要属性,用于返回arguments所在函数的引用
arguments.callee()可以调用自身函数执行
在函数内部调用函数自身的写法被称为递归,
所以arguments.callee()是递归调用时常用的方式

 

this:指向函数调用语句所在的作用域,即哪个对象调用函数,this指向这个对象

 

posted @ 2017-04-07 17:22  瓜皮猴  阅读(173)  评论(0)    收藏  举报