javascript - 为什么我不能在其他 JS 文件中使用该函数?
问题描述
这是我的索引文件
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<meta name="description" content="test">
<!-- iOS meta tags & icons -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="test">
<title>test</title>
</head>
<body>
<script type="text/javascript">
console.log('myname');
calcbymodel('/model.json',[0,0,0,0]);
</script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@2.0.0/dist/tf.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/fetch-polyfill@0.8.2/fetch.js"></script><!-- fetch -->
<script src="./babel.min.js"></script><!-- babel -->
<script src="./app.js" type='text/babel'></script>
</body>
</html>
这是 app.js 文件
async function calcbymodel(path, input) {
const model = await tf.loadLayersModel(path);
const r = model.predict(tf.tensor(input));
r.data().then(array => console.log(array));
return r.data();
}
我想知道为什么控制台说:
Uncaught ReferenceError: calcbymodel is not defined
at (index):21
(anonymous) @ (index):21
对于 babel 脚本,由于公司政策拒绝,无法导入。所以,我作为本地文件导入。这是链接:
https://unpkg.com/@babel/standalone/babel.min.js
有人可以帮帮我吗?
原来是babel脚本问题。这是链接: 为什么JS在babel脚本中找不到函数?
解决方案
您需要将 app.js 文件移动到您使用该功能的上方。在这种情况下,您需要将正在使用该函数的脚本标记移到 app.js 脚本下方,或者将 app.js 脚本移到您使用该函数的上方。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<meta name="description" content="test">
<!-- iOS meta tags & icons -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="test">
<title>test</title>
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@2.0.0/dist/tf.min.js">
</script>
<script src="https://cdn.jsdelivr.net/npm/fetch-polyfill@0.8.2/fetch.js">
</script><!-- fetch -->
<script src="./babel.min.js"></script><!-- babel -->
<script src="./app.js" type='text/babel'></script>
<script type="text/javascript">
console.log('myname');
calcbymodel('/model.json',[0,0,0,0]);
</script>
</body>
</html>
因为 HTML 是按照 js 文件在文件中的顺序加载的,所以可以在 HTML 文件中它下面的任何脚本标签中使用一个函数。
推荐阅读
- java - 如何使用 Java 泛型解决这种情况?
- python-3.x - 枢轴输出不如预期
- qt - QT QSS 选择器按部分 ID
- c - 按照每行中相等元素数的升序对数组的行进行排序
- reactjs - 在 React 函数组件中使用对象作为参数
- android - 在 viewModel 中处理片段流的正确方法
- javascript - 仅在以角度完成服务调用后如何正确返回布尔值
- keras - keras 中的注意力功能
- events - Google Calendar event watch api和“生存时间”最长持续时间
- node.js - 将 typescript 与 node 一起使用的最佳实践