收到一只叮咚
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 之上構建了一個靜態類型系統,這可以幫助你當一個函數需要(比如說)一個事件對象但你卻用一個數字來調用它時,你會發現錯誤。

哈士奇WWW
TA貢獻1799條經驗 獲得超6個贊
我認為這是因為 JavaScript 是弱類型的。它只是檢查參數是否具有運行該函數所需的屬性,并且它會盡其所能地執行此操作,并且通常會出現錯誤而不是錯誤。所以請使用 TypeScript 來代替,哈哈。
添加回答
舉報
0/150
提交
取消