从浏览器控制台调用时未定义 Javascript 函数
2021-06-23
487
var ready = function ready(callback) {
if (document.readyState != "loading") callback();else document.addEventListener("DOMContentLoaded", callback);
};
ready(function () {
"use strict";
var callBstApi = function callBstApi(params) {
fetch("http://localhost:3000/api/v1/myApi", {
method: 'POST',
headers: { "Content-Type": "application/json" },
body: JSON.stringify(params)
}).then(function (data) {
console.log(JSON.stringify(params));
}).catch(function (error) {
console.log('test is cancelled!');
});
};
});
当我调用 callBstApi(myParams) onload 时,它可以工作,但如果我从浏览器控制台调用该函数,它会显示以下错误
我必须用 vanilla js 编写脚本。
1个回答
进一步阐述我的评论:
callBstApi
在您的控制台中不可用的原因是它不存在于全局范围内。该函数在您的
ready
函数内定义,因此无法访问。为了避免这种情况,您需要将该方法公开到全局窗口范围。这可以通过这样做来实现:
window.callBstApi = ...
您现在可以在全局范围内访问
callBstApi
(带或不带
window.
前缀,这完全是可选的)并按如下方式调用它:
callBstApi(myParams);
// If you want to be pedantic, you can do:
window.callBstApi(myParams);
p/s:唯一的风险是,如果该键已经在
window
对象中找到,您将覆盖那里的所有内容。
Terry
2021-06-23