我有以下腳本here:瞭解`if(document.createEvent){..}`沒有括號的函數調用嗎?
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
返回什麼?
讀取詳細信息它正在檢查document.createEvent函數是否存在。它根本就沒有調用它。在Javascript中,函數是一流的對象,可以這樣對待。 –
它檢查瀏覽器是否支持'document.createEvent',如果是,則使用它,否則使用不同的方法。 – deceze
[JavaScript If語句條件沒有運營商可能的重複?它是做什麼的?](http://stackoverflow.com/questions/3494614/javascript-if-statement-condition-with-no-operator-what-does-it-do) - 這正是同樣的技巧。 – Xufox