Javascript 如何知道作为函数参数传递的变量是“事件”

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)">


收到一只叮咚
浏览 128回答 3
3回答

牧羊人nacy

是什么使它成为事件对象而不是像浮点整数这样的其他类型..?没有什么。你没有理由不能写:loadFile(42);在这种情况下,event该呼叫中将是号码42,而不是事件。event在调用期间唯一生成事件对象的loadFile是调用它的代码。例如,如果它作为事件处理程序连接到 DOM 元素,则浏览器中的 DOM 事件处理代码将使用事件对象作为第一个参数来调用该处理程序。如果你想在代码中强制执行类型安全,你需要 JavaScript 以外的东西,例如 TypeScript(编译为 JavaScript)、Flow、JSDoc+IDE 支持等。这些都在 JavaScript 之上构建了一个静态类型系统,这可以帮助你当一个函数需要(比如说)一个事件对象但你却用一个数字来调用它时,你会发现错误。

哈士奇WWW

我认为这是因为 JavaScript 是弱类型的。它只是检查参数是否具有运行该函数所需的属性,并且它会尽其所能地执行此操作,并且通常会出现错误而不是错误。所以请使用 TypeScript 来代替,哈哈。

繁星淼淼

Javascript 不强制任何类型。作为程序员,您需要知道您的函数将获得什么类型。您可以随时检查参数使用的类型,typeof以确保它符合您的期望。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript