gpt4 book ai didi

javascript - var name = ()() 有什么作用?

转载 作者:行者123 更新时间:2023-12-01 15:15:57 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





JavaScript syntax (0, fn)(args)

(2 个回答)



Why does any JavaScript code want to "cut the binding"?

(1 个回答)


2年前关闭。




我遇到了如下代码。

return new Promise(function (resolve, reject) {
if (!message) return reject(new Error('Requires message request to send'));
message = (0, _getURLJWT)(message);
.....
.....
var enc = (0, _encryptMessage)(plaintext, pubEncKey);

}, function (error, res, body) {
....
....
});
});

我不明白代码中的两个表达式:
message = (0, _getURLJWT)(message);
var enc = (0, _encryptMessage)(plaintext, pubEncKey);

这看起来像 IIFE(立即调用的函数表达式),但是,我不明白行尾的括号是如何工作的或它们在做什么。

谁能帮我理解这一点?

最佳答案

_getURLJWT_encryptMessage可能是使用参数 message 调用的函数和 plaintext, pubEncKey , 分别。

当您编写以逗号分隔的两个值时,Javascript 会评估其所有操作数并返回最后一个。所以0, 1将评估 1 .

所以,(0, _getURLJWT)(message)将评估为 _getURLJWT(message)
例如:

console.log((0,1)); //1

(0, (myArg) => console.log(myArg))('hello'); //hello

使用这种技术的原因

以这种方式调用可确保使用 this 调用函数设置为全局对象。
const myObj = {
printMe: function() { console.log(this); },
}

myObj.printMe(); //{printMe: ƒ}

(0, myObj.printMe)(); // Window {parent: Window, opener: null...} <= loses reference, the this will not longer be bound to myObj, but will be bound to the global object.

关于javascript - var name = ()() 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62367232/

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