使用jquery理解javascript闭包

使用jquery理解javascript闭包,javascript,jquery,closures,Javascript,Jquery,Closures,我已经开始学习javascript闭包,在进行实验时,我意识到以下代码并没有按预期工作: (function($){ var p='<p style="color:red">12345</p>'; $p=$(p); $("body").append($p); $p.appendTo($("body")); console.log($p); })(jQuery) (函数($){ var p='12345; $p=$(p); $(“正

我已经开始学习javascript闭包,在进行实验时,我意识到以下代码并没有按预期工作:

(function($){
    var p='<p style="color:red">12345</p>';
    $p=$(p);
    $("body").append($p);
    $p.appendTo($("body"));
    console.log($p);
})(jQuery)
(函数($){
var p='

12345

; $p=$(p); $(“正文”)。追加($p); $p.appendTo($(“body”); console.log($p); })(jQuery)
在控制台中,我可以看到jquery对象被返回,但它没有被追加到主体中(我已经尝试了append和appendto方法)

有人能给我解释一下为什么这个代码不能按预期工作吗

我有一个想法:这可能是因为调用此函数时没有加载jquery,但是,jquery对象正在输出到控制台,因此这一定意味着调用此函数时加载了jquery


任何知识渊博的人都能提供一些信息吗?

确保执行脚本时
正文可用,您可以使用速记DOMRADY回调:

jQuery(function($){
    var p = '<p style="color:red">12345</p>';
    $p = $(p).appendTo(document.body);
    console.log($p);
});
jQuery(函数($){
var p='

12345

; $p=$(p).appendTo(document.body); console.log($p); });
适合我吗?-jsfiddle之所以能够工作,是因为它将脚本插入到onLoad块中,因此body元素可用。如果您将小提琴更改为“无环绕(头部)”,则可以重现该问题()。在声明页面之前,脚本将立即运行。大卫有答案。$p=$(p)??为什么?还有,为什么总是使用$p?我真的不认为有必要一直使用$p<代码>jQuery(函数($){var p=$('

12345

);p.appendTo($(“body”);})
也可以正常工作well@omarello或者只是
$('

12345

).appendTo(document.body)