正在回答 回答被采纳积分+1
同学你好,解答如下:
==前后,都是返回的fun这个函数(函数名、函数具体内容都是一样的),但是对应两个指针,两个地址。函数执行会开辟内存空间,执行几次就开辟几次;因此等号前后返回的fun处于不同的内存空间中(在不同的内存空间中,创建了两个一样的函数),是不同的对象,有不同的指针(只是长得一模一样,“长得一模一样”的意思就是函数名、函数内容一样)。或者可以这样理解:function fun(){}是声明一个函数,即创建一个函数;多次调用fn,每次调用,都会创建一个fun,多个fun之间是没有联系的:
这里和fn不同,fn==fn之所以是true,因为等号前后的fn是同一个:
同学再理解一下。
祝学习愉快!
同学你好,解答如下:
js中有两种数据类型,一种是基本数据类型,比如数字;基本类型==比较时,比较的是“值”是否相等,如下:
上图中,a和b的值都是1,所以a==b是true。
另一种是复杂类型,而函数就是复杂数据类型之一;复杂类型在==比较时,要比较是否是同一个对象(比较“址”),并不是比较“值”是否相等。同学的例子中,“==”前后都是函数,虽然长的一样(都是function fun(){}),但是在内存中,二者是独立存在的(内存中,对应着两个对象):
二者并不是同一个对象,因此==的结果为false。
同学可以回顾一下数组的==比较,函数和数组都是复杂类型,道理是一样的:
https://class.imooc.com/lesson/1624#mid=38477(6分26秒)
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星