函数引用和函数调用的区别

我们现在来理解下函数引用和函数调用的本质区别:当引用函数时候,多个变量内存存储的是函数的相同的入口指针,因此对于同一个函数来讲,无论多少个变量引用,他们都是相等的,因为对于引用类型(对象,数组,函数等)都是比较的是内存地址,如果他们内存地址一样的话,说明是相同的;但是对于函数调用来讲,比如代码三;每次调用的时候,都被分配一个新的内存地址,所以他们的内存地址不相同,因此他们会返回false,但是对于代码二来讲,我们看到他们没有返回函数,只是返回数值,他们比较的不是内存地址,而是比较值,所以他们的值相等,因此他们也返回true,我们也可以看看如下实列化一个对象的列子,他们也被分配到不同的内存地址,因此他们也是返回false的;如下代码测试:

function F(){
this.x = 5;
}
var a = new F();
var b = new F();
console.log(a === b); // false

函数与一般变量的差异,在于如何使用数据。与函数相关的数据(或代码)可被执行。想执行函数时,就在函数名称后加上括号(),如果函数需要自变量,也要记得附加上。

函数变量的值不是代码本身,而是指向存储代码的存储器位置的引用。

回调函数。 简单理解就是:函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b。那么这个过程就叫回调。
---------------------

在C语言或其他大部分语言中,当函数return了之后,函数内部申明的变量将被销毁,因为函数内部的变量是在栈上的,栈会随着函数的退出而销毁,如果不理解的,可以去研究下C++的传值和传引用。

 

posted @ 2018-12-22 17:42  篱外听雨  阅读(4248)  评论(1编辑  收藏  举报