亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Javascript 如何知道作為函數參數傳遞的變量是“事件”

Javascript 如何知道作為函數參數傳遞的變量是“事件”

收到一只叮咚 2023-11-02 21:21:37
javascript 引擎通過變量的值了解變量的類型:<script> var x=5.01; //x if float var x="abc"; //x is string var x=true; //x is Boolean</script>但在這兒:<script>var loadFile = function(event) {    var image = document.getElementById('output');    image.src = URL.createObjectURL(event.target.files[0]);}</script>我的問題是:為什么event(作為函數參數傳遞)被稱為事件對象而沒有顯式或隱式表達式來定義它???是什么使它成為事件對象而不是像浮點整數這樣的其他類型..?注意:此處fileLoad稱為:<input type=file id=profilepic accept="image/*" name=profilepic onchange="loadFile(event)">
查看完整描述

3 回答

?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

是什么使它成為事件對象而不是像浮點整數這樣的其他類型..?

沒有什么。你沒有理由不能寫:

loadFile(42);

在這種情況下,event該呼叫中將是號碼42,而不是事件。

event在調用期間唯一生成事件對象的loadFile是調用它的代碼。例如,如果它作為事件處理程序連接到 DOM 元素,則瀏覽器中的 DOM 事件處理代碼將使用事件對象作為第一個參數來調用該處理程序。

如果你想在代碼中強制執行類型安全,你需要 JavaScript 以外的東西,例如 TypeScript(編譯為 JavaScript)、Flow、JSDoc+IDE 支持等。這些都在 JavaScript 之上構建了一個靜態類型系統,這可以幫助你當一個函數需要(比如說)一個事件對象但你卻用一個數字來調用它時,你會發現錯誤。


查看完整回答
反對 回復 2023-11-02
?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

我認為這是因為 JavaScript 是弱類型的。它只是檢查參數是否具有運行該函數所需的屬性,并且它會盡其所能地執行此操作,并且通常會出現錯誤而不是錯誤。所以請使用 TypeScript 來代替,哈哈。



查看完整回答
反對 回復 2023-11-02
?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

Javascript 不強制任何類型。作為程序員,需要知道您的函數將獲得什么類型。您可以隨時檢查參數使用的類型,typeof以確保它符合您的期望。



查看完整回答
反對 回復 2023-11-02
  • 3 回答
  • 0 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號