为什么 JQuery 全局对象在 JavaScript 函子中无法访问
Why JQuery global object is not accessible in javascript functon?
请参阅下面的片段:
var mySwiper = new $('.swiper-container').swiper({
pagination: '.pagination',
loop:true,
grabCursor: true,
paginationClickable: true
});
function moveslide(n) {
alert(mySwiper)
}
在警报中,它显示"未定义"我不知道为什么? mySwiper
是全局的,它在同一块中不起作用!
请指导。
在评论中,你说过
-
去除
new
没有区别,并且 -
您通过单击按钮呼叫
moveslide
这告诉我们这是三件事之一:
-
您在
var mySwiper = ...
行执行之前调用moveslide
。由于var
声明发生在上下文中的任何分步代码之前 [它们被"提升"]),因此变量存在,但由于该行上的赋值保留在原处,因此可以在mySwiper
获取分配给它的值之前调用moveslide
。 -
mySwiper
值分配的代码可能永远不会被调用。我会在上面放一个断点,看看它是否确实如此;也许错误(异常或逻辑错误)会阻止在分步执行中访问代码。这不会影响moveslide
(函数声明像var
一样被提升),但会影响分配给变量的代码。 -
(这只有在没有
var mySwiper = new ...
行上的new
的情况下才有可能).swiper()
返回undefined
。对于 jQuery 插件来说,这将是一件非常奇怪的事情,如果你甚至在使用new
时也有问题,那么这不是它,但我只是为了完整性而包含它。旁注:为什么
new
不能发生这种情况?因为对于new
,表达式的结果将始终是非空对象引用,而不是原始对象:new
创建一个对象,然后调用您提供给它的函数,该对象可用作this
。如果函数不返回任何内容、返回null
或返回任何基元值(包括undefined
),则new
表达式的结果是对new
创建的对象的引用;如果函数返回非 null 对象引用,则结果是该对象引用。所以你永远无法从new
中得到undefined
.
旁注:从您的问题来看,您似乎认为这是一个范围问题,并困惑为什么mySwiper
不在范围内。这不符合症状。如果您在alert
中看到undefined
,则mySwiper
在范围内;如果它不在范围内,你会得到一个ReferenceError
(因为尝试读取不存在的变量的值是一个错误)。我只是提到这一点,以便如果您以后遇到类似的事情,您就会知道这不是范围,而是时间。
在页面顶部,document.ready
函数内部声明如下内容:
var mySwiper; //making it global
并更改代码,如下所示(仅删除var
):
mySwiper = new $('.swiper-container').swiper({
pagination: '.pagination',
loop: true,
grabCursor: true,
paginationClickable: true
});
function moveslide(n) {
alert(mySwiper)
}
- 如何从对象的原型方法访问JavaScript对象属性
- 如何在不知道关键字的情况下访问javascript对象值
- 可以't访问JavaScript函数范围中的变量
- 使用XPath样式访问Javascript JSON对象属性
- 访问javascript文件输入变量的值
- 如何访问Javascript代码中的rails变量
- jQuery.ajax()访问javascript循环中的beforeEnd局部变量
- 从Jade访问javascript库
- PHP/AAJAX-使用PHP中的$_FILES访问javascript文件数组
- 访问Javascript对象-Node.js的作用域问题
- 从HTML中的另一个文件访问javascript方法
- 存在其他参数时访问Javascript事件
- 如何使用Perl访问JavaScript驱动的网页内容
- 访问JavaScript对象中的方法
- 访问 JavaScript 数组值
- 如何在 setinterval 函数中访问 javascript 数组值
- 在 Java 中访问 JavaScript 对象的字段
- 使用传递给函数的值访问 JavaScript 数组
- 使用相同的名称访问Javascript属性
- 无法访问javascript中二维数组中的第二个字段