让我们假设我们有
function () {}.bind(null);
和
(function () {}).bind(null);
为什么第一个在开发者控制台中不起作用(它会引发语法错误),但它们都在代码中工作(" .js"网站中的文件)。
答案 0 :(得分:3)
我认为是因为你试图定义一个匿名函数。控制台没有未来的引用方式,所以它是一个毫无意义的努力,你定义一个你无法调用的函数。如果将其定义为变量,则可以使用:
var a = function () {}.bind(null);
另外,我不认为它的约束力相关。定义一个没有绑定的匿名函数,你有相同的错误
编辑
以关键字“function”开头的语句必须是有效的 功能声明声明。这需要函数的名称。
在表达式(或表达式语句)中,该规则是不同的;没有 name是必要的,因为函数充当其中的值 上下文。那时不需要名字。
函数声明不能是匿名的,而是函数表达式 能够。独立的匿名函数看起来像一个函数 声明缺少JavaScript的标识符。但是,结合起来 使用运算符,JavaScript将匿名函数视为 运算符的操作数表达式。