咱们如今来理解下函数引用和函数调用的本质区别:当引用函数时候,多个变量内存存储的是函数的相同的入口指针,所以对于同一个函数来说,不管多少个变量引用,他们都是相等的,由于对于引用类型(对象,数组,函数等)都是比较的是内存地址,若是他们内存地址同样的话,说明是相同的;可是对于函数调用来说,好比代码三;每次调用的时候,都被分配一个新的内存地址,因此他们的内存地址不相同,所以他们会返回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。那么这个过程就叫回调。
---------------------
this
在C语言或其余大部分语言中,当函数return了以后,函数内部申明的变量将被销毁,由于函数内部的变量是在栈上的,栈会随着函数的退出而销毁,若是不理解的,能够去研究下C++的传值和传引用。指针