为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信