这一篇呢,是对之前的函数那一篇的补充,因为又找到好玩的了,所以自然要给与补充。
再附上上一篇函数的文章:
https://blog.csdn.net/weixin_46726346/article/details/107911551
上一篇忘记说了JS中函数最有趣的特点了。根源就是,JS的函数是一个对象,是Function类型的对象。那,由于函数是一个对象,那么函数名就是一个指向函数对象的指针。
就像一个变量名指向一个对象的地址一样。。。
那这就有趣了,我完全可以这么做。
<script>
function f1(){
return 1;
}
var f1=function(){
return 1;
}
</script>
这两种方式,应该是几乎没有任何差别。
那既然函数名是指向对象的指针。
<script>
function f1(){
return 1;
}
var f1=function(){
return 1;
}
var x=f1;
var y=f1;
var z=x;
</script>
哎?这么写也是完全没有问题的啊。。。。。
那你说上面的两种声明函数的方式真的没有区别吗?
我们来看代码:
<script>
f2(5);
function f2(x){
console.log(x);
}
f3(5);
var f3=function(x){
console.log(x);
}
</script>
我用两种方式定义了f2,和f3。并且都在函数定义之前调用。我们来看一下结果:
这里我就不解释了,可以看出这两者的差别了吧。
好,知道了两者的差别后,我们继续看好玩的。。。
刚才说函数名就是一个变量名,那么函数是什么?啊哈,函数不就是值吗。那既然是值,是不是就能被当做另一个函数的参数。。。
我写了一段程序,来看一下:
<script>
function callSomeFunction(somefunction,somedata){
return somefunction(somedata);
}
function add(num){
return num+10;
}
function app(num){
return num-10;
}
var x=50;
x=callSomeFunction(add,x)
console.log(x);
var y=50;
y=callSomeFunction(app,y);
console.log(y);
</script>
因为减法的英文不会,所以用了app哈。。。
这就是一个函数的参数是另一个参数的情况,炫酷吗,其实还有更炫酷的,但我自己掌握的也没有那么好。。。。。
所以只能分享到这里了。。。。
OK,关于函数的补充 就说这些。。。。。。