1.匿名函数:不能单独写在页面内
作用:赋值,传参
(匿名函数可作为参数)
2.有名函数:在function后加名字
(1)可加括号自执行
(2)可把名字直接放在事件位置
例:
1 2 3 4
| function a(){ alert(666); } document.onclick = a;
|
回顾:数据类型:num String boolean null undefined object
typeof:把null归为object,增加function
函数表达式和函数定义的区别:函数表达式可直接加括号自执行;
1 2 3
| 例:var a = function(){ alert(1); }();//可执行
|
将匿名函数强转为函数表达式的方法:在前面加 位操作符(~ + - !)或(function(){……});
函数参数:
1.形参
2.实参
ps:实参多于形参时,多出部分相当于没有,实参少于形参时,未接收到数据的形参为undefined
关于null和undefined
null指向一个空的对象地址,因此typeof将null归为object
1 2 3 4 5 6
| if(null==undefined){ alert(1); } else{ alert(0); }//弹出1,在逻辑运算中null和undefined相等,但不全等,原因就是他们是两种不同的数据类型
|
undefined 不报错 声明但未定义
is not defined 报错,未声明
3.不定参:arguments代表不定参数的集合
1 2 3 4 5 6 7 8
| 例:function fn(){ var sum=0; for (var i = 0; i < arguments.length; i++) { sum+=arguments[i] } alert(sum); } fn(1,2,3,4,5);//弹出15
|
JS代码解析:
第一步,解析定义,包括变量定义和函数定义,普通变量重名,后者覆盖前者。但若定义函数名和普通变量重名,函数优先级大于普通变量(var)
第二步,解析执行,除定义之外的部分,包括赋值,运算等等
1 2 3
| function A(){ alert(0); }//从上至下,先看定义,定义了函数A,再执行,执行后弹出0
|
1
| var a = 10; //从上至下,先看定义,此时a=10,再看执行,由于alert括号内重新声明了a,所以此时a变为undefined。但若把下面的var去掉,由于少了var这一环节,所以程序报错
|