javascript - 这两个比较有什么区别?

标签 javascript function

这有什么区别...

(function () {})() === (function () {})()
// => true

还有这个……

(function () {}) === (function () {})
// => false

前一个比较的计算结果为 true,而后者的计算结果为 false。这是为什么?

最佳答案

(function () {})()

是一个 IIFE(立即调用的函数表达式)。这意味着,它是一个立即执行的函数,它的实际值是它的 return 值。此函数没有 return 语句,因此值为 undefinedundefined === undefinedtrue

(function () {})

然而,是一个函数。函数不是原始值,而是像对象。在 JavaScript 中,当比较对象(或函数)时,比较的是引用。因为 (function () {}) 创建了一个 函数,所以它们不是相同 函数,因此比较结果是

关于javascript - 这两个比较有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33337891/

相关文章:

javascript - queryselector 的 Angular 通用替代品

javascript - 我如何使用 symfony 的数据初始化我的单页 Backbone 应用程序

javascript - Canvas - 清除矩形不起作用

javascript - scrollTop 等于 0,即使 div 位于页面下方

java - Android - 函数无法识别返回名称

javascript - 使用 onsubmit 在 JS 中提交表单

javascript - 函数调用之前的冒号运算符 ":"(javascript)

function - golang 闭包(匿名函数)捕获错误的参数值

javascript - 为什么换行 (\n) 在我的代码中不起作用?

mysql - 将查询结果插入到 MySQL 表中的一个字段中,并将 SQL 函数返回的值插入到其他字段中