gpt4 book ai didi

javascript - JavaScript 函数中的相邻括号是如何工作的,这在何处记录?

转载 作者:行者123 更新时间:2023-11-29 17:02:17 26 4
gpt4 key购买 nike

在将其标记为重复之前,请注意:我了解 IIFE 是什么。这个问题与 IIFE 无关。

问题:为什么 JavaScript 能够解析相邻的括号,即使是在标准函数调用中?这个构造 - myFunction()() - 是如何工作的?例如,这是使用 Jasmine 进行测试的一些代码:

var element = compile('<div my-directive></div>')(scope);

为什么我们要走这条路而不是将范围作为第二个参数传递?我不认为这与保持全局环境清洁有任何关系,而且除了与 IIFE 相关的地方外,我在任何地方都找不到关于这个特定构造的信息。这个构造有名称吗?

最重要的是,请提供某种权威引用(指向 mdn、ecmascript 规范等的链接)。

最佳答案

这是两条规则的结果:

  1. 函数调用的返回值可以立即使用(无需赋值给变量)。

  2. 函数是对象(它们可以分配给变量,作为参数传递并从函数调用返回)。

第一条规则意味着如果您有执行此操作的代码:

function a () { return { hello : 'world' } }

你可以这样做:

a().hello; // returns 'world';

这与不使用任何临时变量的做法基本相同:

var tmp = a();
tmp.hello; // value is 'world';

第二条规则意味着你可以这样做:

function b () { return function () { alert('hello world') } }
var c = b();
c(); // alerts 'hello world';

结合规则 1 和规则 2 意味着上面可以重写为:

b()(); // alerts 'hello world';

关于javascript - JavaScript 函数中的相邻括号是如何工作的,这在何处记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26793090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com