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
提交
取消