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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40169665/article/details/78525694
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();



猜你喜欢

转载自blog.csdn.net/weixin_40169665/article/details/78525694
今日推荐