我不明白为什么使用===比较两个函数的表达式的值是false

Ran*_*lue 1 javascript

这是我的代码:

var emptyFunction = function () {};
console.log(emptyFunction === function () {});
Run Code Online (Sandbox Code Playgroud)

这将登录false控制台.为什么?

Ray*_*oal 5

因为函数表达式在执行时会生成一个新的函数对象.

=== 仅当两个操作数是同一个对象时才返回true.

从规范(强调我的):

生成FunctionExpression:function(FormalParameterListopt){FunctionBody}的计算方法如下:1.返回创建一个新的Function对象的结果,该对象在13.2中指定,其中的参数由FormalParameterListopt和FunctionBody指定的body指定.将正在运行的执行上下文的LexicalEnvironment作为Scope传递.如果FunctionExpression包含在严格代码中或者其FunctionBody是严格代码,则传入true作为Strict标志.