我有一个带有JavaScript的页面,该页面具有一个自调用功能,该功能在页面加载时执行。此页面还包括jquery和jquery ui库(包括第一个jquery,然后包括该jquery ui)。
在关闭body标签之前,页面末尾包含以下JavaScript。
在下面的代码中,即使变量x和y正确表示存在jQuery ui,但是在global.method1
函数中,变量z始终是未定义的,因为自从加载jQuery ui以来应该已经定义了变量z。 >
问题
为什么$ .ui是在自调用函数之外以及在同一自调用函数中的文档就绪事件中定义的,而不是在 global.method1 方法中定义的?
我在下面的链接中有一个演示,其中没有看到此行为,即在method1中定义了$ .ui:sample runnable code。因此,这确实令人困惑。
var x = $.ui;//defined
(function (global) {
var dialogOptions;
$(
function () {
var y = $.ui;//defined
//some more code here
}
);
global.method1 = function () {
var z = $.ui; //not defined
//some more code here
}
//some more code here
})(window);
答案 0 :(得分:2)
我试图为您创建一个最小的示例;
所有似乎都已定义。问题必须出在示例中未链接的代码中。
var myArray = new Array();
myArray.push({ColumnA:1, ColumnB: 10, ColumnC:100});
myArray.push({ColumnA:1, ColumnB: 20, ColumnC:200});
myArray.push({ColumnA:2, ColumnB: 10, ColumnC:300});
myArray.push({ColumnA:2, ColumnB: 20, ColumnC:400});
var yourValue = myArray.find(e => e.ColumnA == 2 && e.ColumnB == 20 ? true : false);
console.log(theValue);
var x = $.ui; //defined
console.log(`first: ${x}`);
(function(global) {
var dialogOptions;
$(
function() {
var y = $.ui; //defined
console.log(`second: ${y}`);
//some more code here
}
);
global.method1 = function() {
var z = $.ui; //not defined
console.log(`third: ${z}`);
//some more code here
}
//some more code here
global.method1(); //added this call
})(window);