Javascript 我可以优化这些功能吗?

Javascript 我可以优化这些功能吗?,javascript,optimization,Javascript,Optimization,我有下面列出的3个函数(它们是最小化的,因此可能很难阅读)-i0、t0和is is()和t0()都使用此行从DOM中提取数据 var c=document.forms[a].elements; 从i0()中的DOM中提取数据,然后将其传递给is()和t0()是否更好 这样,我只需要从DOM中提取一次数据,但是我需要一个额外的变量来存储它,并将其传递给两个函数 i0(): t0: is(): 函数为(a) { var b=''; var c=document.forms[a].元素; 对于(

我有下面列出的3个函数(它们是最小化的,因此可能很难阅读)-i0、t0和is

is()和t0()都使用此行从DOM中提取数据

  var c=document.forms[a].elements;
从i0()中的DOM中提取数据,然后将其传递给is()和t0()是否更好

这样,我只需要从DOM中提取一次数据,但是我需要一个额外的变量来存储它,并将其传递给两个函数

i0():

t0:

is():

函数为(a)
{
var b='';
var c=document.forms[a].元素;
对于(i=0;i
函数i0(a){
t0()&&(a=is('f0'),s0('bi0.php',a,s2));//这样我就可以像这样使用逗号了
}
//或
函数i0(){
t0()&&s0('bio.php',is('f0'),s2);
}
函数t0(){
var a=文档.forms['f0'].元素,
a1=“请输入您的凭证”,
a2=“该电子邮件未注册”,
a3=“凭证不正确-重置密码?”;
返回+(c0(a,a1,'fb1')&和c2(a[1],a2,'fb1')&和c3(a[2],a3,'fb1'));
}
功能是(a){
var b=“”,
c=文档.表单[a].元素;

对于(var i=0,l=c.length;i我假设您谈论的是时间优化

长途跋涉:一切都可以优化。 简而言之:这种代码中的任何优化都将非常低


无论如何,函数is()与JQuery serialize调用非常相似,并且已经过优化。您考虑过使用它吗?

您可以像这样更改for循环以使其更快,尽管只是稍微进行了优化 (与0的比较比与其他数字的比较快):


不,我只是为了好玩而做一些模糊的微优化:)你的代码没有问题。(除了你从
t0
泄漏
a1
a2
a3
)我觉得我在看外星技术,我可以用它来让我的网站变得更好-这太棒了。再次感谢。这节省了空间+它更简洁+正如你提到的可能更高效+它让你眼前一亮!我可以从库中取出它并在我的代码中单独使用吗?这是可能的,但这是一项非常困难的工作。。(无论如何,最后你必须包括很多功能)Ivan:“……它已经过优化。”你想吗?;o)@Chris:仅仅为此加载jQuery是没有意义的。它们的实现被集成并设计成无缝地工作在jQuery的整体结构中,性能肯定会大大降低。仅供参考:在许多现代浏览器中不再如此。由于以前的浏览器,这一点在总体上仍然适用。哦,真的吗?怎么没有hat changed?在Chrome和FF中,所有测试都以相同的速度运行。在IE中,与零相比速度更快。(出于某种原因,Chrome 14.0.814除外——具体来说,您的精确方法最快。在.815中则不然)非常好。谢谢。结合上面的解决方案。我正在重新定义我的问题-js masters。IE是80%以上的浏览器。奇怪的是,在不同版本的软件中,这样的事情应该以这样的方式发生,考虑到硬件级别,与0.x_x相比,这是最快的。
function i0()
  {
  if(t0())
    {
    var a=is('f0');
    s0('bi0.php',a,s2);
    }
  }
function t0()
  {
  var a=document.forms['f0'].elements;
  a1="Please enter your credentials";
  a2="That email is not registered";
  a3="Incorrect credentials - Reset your password?";
  if(c0(a,a1,'fb1')&&c2(a[1],a2,'fb1')&&c3(a[2],a3,'fb1'))
    {
    return 1;
    }
  else
    {
    return 0;
    }
  }
function is(a)
  {
  var b='';
  var c=document.forms[a].elements;
  for(i=0;i<c.length;i++)
    {
    if(c[i].name)
      {
      if(c[i].type=='checkbox'&&c[i].checked==false)
        {
        b+=c[i].name+"=NULL&";
        }
      else
        {
        b+=c[i].name+"="+c[i].value+"&";
        }
      }
    }
    b=b.slice(0,-1);
  return b;
  }
function i0(a){
    t0() && (a=is('f0'), s0('bi0.php', a, s2)); // just so I can use the comma like this
}

// or

function i0(){
    t0() && s0('bio.php', is('f0'), s2);
}

function t0(){
    var a = document.forms['f0'].elements,
       a1 = "Please enter your credentials",
       a2 = "That email is not registered",
       a3 = "Incorrect credentials - Reset your password?";

    return +( c0(a,a1,'fb1') && c2(a[1],a2,'fb1') && c3(a[2],a3,'fb1') );
}

function is(a){
    var b = '',
        c = document.forms[a].elements;

    for( var i=0, l=c.length; i<l; i++ ){
        c[i].name
            ? c[i].type == 'checkbox' && !c[i].checked && b += c[i].name + '=NULL&'
            : b += c[i].name + '=' + c[i].value + '&';
    }
    return ( b = b.slice(0, -1) );
}
for(i = c.length;i > 0;--i)
{
if(c[i].name)
  {
  if(c[i].type=='checkbox'&&c[i].checked==false)
    {
    b+=c[i].name+"=NULL&";
    }
  else
    {
    b+=c[i].name+"="+c[i].value+"&";
    }
  }
}