JavaScript中的回调

JavaScript中的回调,javascript,Javascript,我正在研究回调和其他类似的东西,在这个 book()有一个示例,其中包含以下代码 function loadScript(src, callback) { let script = document.createElement('script'); script.src = src; script.onload = () => callback(script); document.head.append(script); } loadScript('https://cdnj

我正在研究回调和其他类似的东西,在这个

book()有一个示例,其中包含以下代码

function loadScript(src, callback) {
  let script = document.createElement('script');
  script.src = src;
  script.onload = () => callback(script);
  document.head.append(script);
}
loadScript('https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.js', script => {
  alert(`Cool, the script ${script.src} is loaded`);
  alert( _ ); // function declared in the loaded script
});
它将动态创建的带有给定src的新标记
附加到文档中

浏览器会自动开始加载,并在完成后执行。我有一个问题:

我是否理解正确,它应该与任何类型的链接一起工作,并在该链接上获取(获取)函数及其结果

在本例中,第二个警报应该显示该函数的某种结果

如果是这样,如何在src中插入另一个带有代码的链接?我尝试了许多其他链接,但第二个警报不起作用。例如:

function loadScript(src, callback) {
  let script = document.createElement('script');
  script.src = src;
  script.onload = () => callback(script);
  document.head.append(script);
}
loadScript('https://jsfiddle.net/Rom28/7rL28mso/', script => {
  alert(`Cool, the script ${script.src} is loaded`);
  alert(test()); // function declared in the loaded script
});
请向我澄清一下。 我还想问一下,在这段代码中,
null
是什么意思:

function loadScript(src, callback) {
  let script = document.createElement('script');
  script.src = src;

  script.onload = () => callback(**null**, script);
  script.onerror = () => callback(new Error(`Script load error for ${src}`));

  document.head.append(script);
}

它与上面的代码相同,但也具有处理错误的功能。

src参数应包含指向js文件的链接(JSFIDLE link不包含js代码,因此无法工作)。例如,您可以尝试创建包含test函数的script.js文件,并将loadScript函数放入html文件中:

function loadScript(src, callback) {
        let script = document.createElement('script');
        script.src = src;
        script.onload = () => callback(script);
        document.head.append(script);
    }
    loadScript('script.js', script => {
        alert(`Cool, the script ${script.src} is loaded`);
        alert(test()); // function declared in the loaded script
    });

现在您可以访问用script.js编写的测试函数了https://jsfiddle.net/Rom28/7rL28mso/不是javascript文件。尝试附加一个
onerror
处理程序,并查看您的控制台。