为什么我可以在退出调用它的函数后访问 jQuery 的 clone(true,true)?

why can i access jQuery's clone(true,true) even after i exit the function it was called in?

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

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

我意识到即使在我退出该函数后也可以访问 newElem 变量(其中存储了克隆)。尽管我的代码可以正常工作,但我很困惑为什么在函数中声明的变量即使在我退出它后仍能被调用。

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

谢谢

如果您的代码如下所示:

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

// newElem is not available here

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

I realized that the newElem variable (in which the clone is stored) is accessible even after i exit the function.

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

can someone explain if it just a feature of clone() to make it work as such/am i wrong?

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