为什么更改函数名会破坏我的JavaScript?

为什么更改函数名会破坏我的JavaScript?,javascript,jquery,Javascript,Jquery,我有以下几点,效果很好 $(function() { // Create the chart chart = new Highcharts.StockChart({ ... }); }); 但是,当我进行以下修改时 createCharts(); function createCharts() { // Create the chart chart = new Highcharts.StockChart({ ...

我有以下几点,效果很好

$(function() {

    // Create the chart
    chart = new Highcharts.StockChart({
        ...
    });
});
但是,当我进行以下修改时

createCharts();
function createCharts() {

    // Create the chart
    chart = new Highcharts.StockChart({
        ...
    });
}
我收到以下错误消息

消息:“Highcharts”未定义


没有其他改变为什么上面的代码会破坏我的脚本?

在第一个示例中,函数在加载包含Highcharts定义的文件后运行。在第二种情况下,它会在找到函数定义后立即执行,可能是在加载Highcharts文件之前。

可能是因为Highcharts库尚未加载第二个函数定义。在加载highcharts js文件之前是否运行此代码?

$()是一个特殊函数,它等待dom准备就绪


我猜Highcharts在调用createCharts时尚未创建,而是在DOM准备就绪之前创建的。

在第一个示例中,在文档准备就绪时(即加载Highcharts脚本之后)调用函数。在第二个示例中,HighCharts脚本可能是在正在运行的脚本之后定义的,因此您需要等待文档就绪:

$(createCharts); // <- pass createCharts to $()/jQuery.ready()
function createCharts() {

    // Create the chart
    chart = new Highcharts.StockChart({
        ...
    });
}
$(createCharts);//

createCharts()在文档中准备好了吗?您按什么顺序包含脚本?
<head>
  <!-- libraries first -->
  <script src="jquery.js"></script>
  <script src="highcharts.js"></script>

  <!-- your script last -->
  <script src="myscript.js"></script>
</head>