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