jquery函数parseHTML中的parsed分析
1、从jquery第500行找到
parsed = jQuery.buildFragment();
这里让人不理解buildGragment()到底是什么
还有buildGragment里面三个参数
fragment英文的意思是碎片,也就是不完整的一个片段

2、在jquery代码中找到关于buildGragment()函数的具体代码
有40行,里面的参数是args context scripts
args 从英文意思是参数context的意思是上下文环境scripts的意思是脚本

3、buildGragment()函数
首先定义了三个变量fragment,cacheable,cachehit
片段 可能缓存 缓存标记
然后定义first = args[0]
第一个 是 第一个参数arg[0]
通常是html标签内容

4、下面举一个例子容易理解下面一段代码
//context = !context.nodeType && context[0] || context;
bb = false;
cc = "22";
dd = "33";
var aa = !bb && cc || dd;
console.log(aa)

5、意思就是相当于代码:
var bb = false;
var cc = 11;
var dd = 22;
if(!bb && cc){
var aa = cc;
}else{
var aa =dd;
}
浏览器测试代码

6、这里first.length查阅文档知道是html里面的代码小于512字节的话才能缓存
并且jQuery.support.checkClone的意思是
浏览器要能够支持check属性
jQuery.support.html5Clone的意思是
如果浏览器 支持html5
如果以上都支持,就cacheable = true;
可以缓存了

7、看看最后返回什么
返回一个对象有两个变量
o.fragment 和o.cacheable
缓存对象和是否缓存

8、现在回到parseHTML函数中的代码:
parsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );
这时候parsed就有parsed.fragment 和parsed.cacheable
return jQuery.merge( )
parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment
这时候返回 如果 parsed.cacheable可以缓存的画,就会克隆一个parsed.frag
ment
代码片段副本返回
