gpt4 book ai didi

javascript - 了解不带括号的 `if (document.createEvent) {..}` 函数调用?

转载 作者:行者123 更新时间:2023-11-30 07:55:56 24 4
gpt4 key购买 nike

我有来自 here 的以下脚本:

function download(filename, text) {
var pom = document.createElement('a');
pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
pom.setAttribute('download', filename);

if (document.createEvent) {
var event = document.createEvent('MouseEvents');
event.initEvent('click', true, true);
pom.dispatchEvent(event);
}
else {
pom.click();
}
}

download('test.txt', 'Hello world!');

现在我不明白if (document.createEvent)的用法:

我阅读了问题的答案 In JavaScript, does it make a difference if I call a function with parentheses?并阅读其他一些问题。

在大多数示例中是某种引用,如 window.onload = initAll;var ret = Multiply; 但显然这里不是这种情况。对我来说最有趣的例子是:

function Multiply(operator, operand) {
return operator * operand;
}
var operator = 3;
var operand = 4;
var ret = Multiply;

这里,根据作者的说法,Multiply 不会被执行,ret 引用函数 Multiply

还有 here声明调用不带括号的函数是引用。

但这让我更加困惑,因为对我来说,对 document.createEvent 的引用(创建事件的函数)没有意义。

关于函数 document.createEvent() 的文档,例如 here没有指出不带参数的用法。

所以,请为我黑暗的大脑带来一些光明。感谢您的帮助。

问题(简​​短):

  • document.createEvent 是函数调用还是引用?
  • document.createEvent 返回什么?

最佳答案

Is document.createEvent a function call or a reference?

它试图访问 document 对象的属性。

该属性可能存在。它可能有一个值(value)。该值可能是对函数的引用。

如果所有这些都是这种情况,那么它将是一个真值(并且 if block 将运行)。如果它不存在,它将是一个假值(并且 else block 将运行)。

这是测试浏览器是否支持该功能。

What does document.createEvent return?

属性的值。如果浏览器支持 createEvent,那么它将作为函数求值,这是一个真值。

关于javascript - 了解不带括号的 `if (document.createEvent) {..}` 函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39750229/

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