gpt4 book ai didi

javascript - 此代码如何(例如以什么顺序)运行以及它的作用是什么?

转载 作者:可可西里 更新时间:2023-11-01 02:03:12 25 4
gpt4 key购买 nike

我发现了这个疯狂的 javascript 代码。

有人可以详细说明这段代码所经历的确切步骤以及原因吗?

(function a(a){
return a;
})
(function b(b){
return b;
})
(function c(c){
return c;
})
(true);

最佳答案

  • 这将自调用 a,它被赋予 function b 作为参数(因为 a 被定义为a 的局部作用域内的一个变量 将取代在父作用域中声明的函数 a .).
  • 然后它会自调用 b,它被赋予 c 作为参数。
  • 最后函数 c 被自调用,它返回作为参数给出的 true

您可以将其视为执行此操作的链:

a(var a)    // function b given as arg. When a returns b() will be invoked
b(var b) // function c given as arg. When b returns c() will be invoked
c(true)

a 在函数内部(局部范围)是一个变量,因为 function foo(bar){}function(){var bar =参数[0]}

函数 a 可以这样写并做同样的事情:

function a(foo){
return foo;
}

你可以通过这样做来验证:

console.log('start');

(function a(a){
console.log('a', typeof a);
return a;
})
(function b(b){
console.log('b', typeof b);
return b;
})
(function c(c){
console.log('c', typeof c);
return c;
})
(true);

console.log('end');

ONLINE FIDDLE HERE

控制台输出(已更新以在 FF 中显示 使用 Chrome 查看函数定义输出 ):

> start
> a function
> b function
> c boolean
> end

关于javascript - 此代码如何(例如以什么顺序)运行以及它的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18628074/

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