关于JS函数的一些基本理解

来源:互联网 发布:windows 10 无法开机 编辑:程序博客网 时间:2024/06/05 21:07
funtion name(arg1,arg2){
...
}
所有的function都是对象 它的name就是指针
函数定义也可以写为:var name = new Function ("arg1","arg2","...") //与上等价 这可看出 function实际上是对象,name就是这个对象的引用(指针)

也可写为:
var sum = function(arg1,arg2){
...
};//此为赋值语句,所以末尾理应要;




函数声明会将引用提前就赋给name,而通过函数赋值的则不会提前将引用赋给name 例:

//正常运行
name();
function name (){
...
}


//编译出错
name();
var name = function(){
...
};

在function内 arguments.callee() 意思为调用本函数;// 这种写法是避免了紧密耦合,即我将name引用赋给别人后也可以正常运行 如:
function name(){
return name()
}

var otherName = name;
name = null; //将name的引用为空
otherName(); // 运行报错 因为name的引用已经空了,在otherName 里调用name函数,所以报错

function name(){
return arguments.callee();
}
var otherName = name;
name = null;
otherName(); //正常运行,即使name指向为空,但函数内调用的为arguments.callee(); 即调用本函数,本函数在此情况下为otherName();



原创粉丝点击