Javascript 使用jQuery.getScript()赋值后未定义全局变量
我有几个全局变量<代码>变量1、变量2等 我不会立即实例化这些变量,但稍后我会使用Javascript 使用jQuery.getScript()赋值后未定义全局变量,javascript,jquery,global-variables,getscript,Javascript,Jquery,Global Variables,Getscript,我有几个全局变量变量1、变量2等 我不会立即实例化这些变量,但稍后我会使用jQuery在一个单独的javascript文件中从构造函数实例化它们 但是,;使用getScript()执行此实例化之后;我尝试访问我新实例化的对象的属性 我得到以下错误: 未捕获的TypeError:无法读取未定义的属性“x” 有没有原因,;或者你不能用这种方式实例化全局变量吗 用于getScript()的代码 }) 在main方法的控制台行中发现错误;无法访问属性x,因为startBtn未定义;但是,所有按钮和其他变
jQuery
在一个单独的javascript
文件中从构造函数实例化它们
但是,;使用getScript()
执行此实例化之后;我尝试访问我新实例化的对象的属性
我得到以下错误:
未捕获的TypeError:无法读取未定义的属性“x”
有没有原因,;或者你不能用这种方式实例化全局变量吗
用于getScript()
的代码
})
在
main
方法的控制台
行中发现错误;无法访问属性x
,因为startBtn
未定义;但是,所有按钮和其他变量都是在js文件的头部定义的。$。getScript
是一个异步函数-它的成功
处理程序在脚本文件的内容从服务器到达后执行-在main
完成后执行,而console.log(startBtn.x,…
立即执行
var functionLoadObjects = function(callback){
$.getScript('objects.js',function(){
... your code ...
callback();
});
}
var main = function () {
var now = Date.now();
var delta = now - then;
functionLoadObjects(function() {
// put here all code that needs things from dynamically loaded script, such as:
console.log(startBtn.x, "Outside of function call startBtn.x");
});
};
显示代码。您是否在
getScript
调用中提供success
回调并执行它?添加了相关代码。是否有任何方法可以确保它首先启动/完成?我设想的唯一问题是,我的main方法调用了由我的functionLoadObjects方法实例化的其他变量。因此,不管怎样;当我的main方法调用update
和render
时,仍然会有问题…@Tukajo,所以也将这些调用添加到回调函数中。如果我将所有这些方法都放在回调函数中,它会不会挫败将我的对象及其构造函数划分到另一个脚本中的尝试?
var main = function () {
var now = Date.now();
var delta = now - then;
functionLoadObjects();
window.addEventListener('mousemove', tracker, false);
console.log(startBtn.x, "Outside of function call startBtn.x");
update(delta / 1000);
render();
then = now;
requestAnimationFrame(main);
var functionLoadObjects = function(callback){
$.getScript('objects.js',function(){
... your code ...
callback();
});
}
var main = function () {
var now = Date.now();
var delta = now - then;
functionLoadObjects(function() {
// put here all code that needs things from dynamically loaded script, such as:
console.log(startBtn.x, "Outside of function call startBtn.x");
});
};