2011-10-29 27 views
3

从jQuery 1.7rc1 source code(系1822年至1824年):a = a;是什么意思?分析jQuery的源

if (jQuery.isArray(name)) { 
     name = name; 
} 

什么是有name = name点?两个name可以不一样吗?

+0

标识符名'“名称”'要么是结合到在当前词法环境与否的值。它不能被绑定到两个不同的值。 –

+3

顺便说一下,如果属性是一个具有定义的setter函数的访问器属性,那么对属性的赋值(如'foo.bar = foo.bar;')是有意义的。 (例如'iframe.src = iframe.src;'将重新传递IFRAME。) –

+0

@ŠimeVidas:你能举一个例子吗? – Randomblue

回答

4

我认为它是为了可读性而添加的。该名称应该是一个数组,但并非总是如此。在某些情况下,它将转换为一个数组,但在这种情况下,它是'好的'。

整个片段:

  // Support space separated names 
      if (jQuery.isArray(name)) { 
       name = name; 
      } else if (name in thisCache) { 
       name = [ name ]; 
      } else { 

       // split the camel cased version by spaces 
       name = jQuery.camelCase(name); 
       if (name in thisCache) { 
        name = [ name ]; 
       } else { 
        name = name.split(" "); 
       } 
      } 
2

它看起来就像所有分支if语句所做的一样(它们都指定为name)。

4

声明很可能加入到与其他陈述相一致。 name = name可以省略,但它可能保持清楚地显示块的功能。

没有办法让一个完全相同名称的变量保持不同的值,彼此相邻。

代码

// Support space separated names 
if (jQuery.isArray(name)) { 
    name = name; 
} else if (name in thisCache) { 
    name = [ name ]; 
} else { 
    // split the camel cased version by spaces 
    name = jQuery.camelCase(name); 
    if (name in thisCache) { 
     name = [ name ]; 
    } else { 
     name = name.split(" "); 
    } 
}