说下最近刚刚遇到的一些小题目是关于函数的传递,以及对象赋值等一些方面。
发下题目:
var ftn1 =function(){
console.log("test:ftn1");
};
var ftn2 =function(){
console.log("test:ftn2");
};
function ftn(f){
f();
f=ftn2;
}
ftn(ftn1);//运行结果:test:ftn1console.log("====================华丽的分割线======================");
ftn1();//运行结果:test:ftn1
题目就是上面的那个,一开始没有深入理解,纠结了一段时间,了解了器本身。
说下我的理解:首先进行预解析,然后进行,调用ftn(ftn1),ftn1作为一个实参,然后找到ftn(f),然后进行f()的调用,也是fn1()的调用,找到fn1()打印出了test:fn1,那么迷惑点在于f=ftn2,ftn2仅仅是把ftn2的值赋值给了f,但是在ftn(f)执行完毕,f就会自动销毁,本身参数就作为一个局部变量,所以不会去影响全局。
说的有点乱,理解层次还不够。忘多多指点。如有不对,望赐教!告辞。
对了把那个大神的博客地址写下浅谈javascript语法
网友评论