为什么我可以访问jQuery的克隆(true,true),即使我退出它被调用的函数?

时间:2015-07-31 01:06:29

标签: jquery clone

我使用jQuery的clone(true,true)方法来克隆我的元素并将其存储在函数内的变量newElem中。但是,这是在单击按钮(在函数内部)时完成的。

$("#btnAdd").click(function(){var newElem=$('#student1').clone(true,true) })

我意识到即使在退出函数后,newElem变量(存储克隆的位置)也可以访问。虽然我的代码按我的意愿工作,但我很困惑为什么即使在我退出函数之后也可以调用函数内声明的变量。

有人可以解释一下它是否只是clone()的一个特性,使其正常工作/我错了吗?

由于

1 个答案:

答案 0 :(得分:1)

如果您的代码如下所示:

$("#btnAdd").click(function(){
    var newElem=$('#student1').clone(true,true);
});

// newElem is not available here

然后,这里的newElem变量是一个局部变量,并且只能在该函数的特定调用中使用。它在回调函数的范围内声明,并且只在该函数中可用,除非在调用其他函数时将其值传递给其他函数。

  

我意识到newElem变量(存储克隆的变量)是   即使我退出该功能后也可以访问。

你可能会误解这一点。 newElem变量在回调函数外部不可用。因为你所展示的内容很可能是真实代码的简化版本(因为你所展示的内容实际上没有做任何有效的事情),你的实际代码中可能还有其他东西正在影响这里的行为而你会必须向我们展示更多背景信息以帮助您理解这一点。例如,如果您在此回调函数中创建了一些具有newElem引用的闭包,那么它将在回调函数中保持活动状态,直到这些闭包不再处于活动状态。但是,我们需要查看其余的实际代码,以便对此进行进一步评论。

  

有人可以解释它是否只是clone()的一个功能,使其工作   这样/我错了吗?

这与.clone()无关。它的行为方式是如何设计Javascript语言。