Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用javascript编写更高效的代码_Javascript_Refactoring - Fatal编程技术网

用javascript编写更高效的代码

用javascript编写更高效的代码,javascript,refactoring,Javascript,Refactoring,我正在努力编写更可读、更高效的代码,我一直不喜欢if-chains。。是否可以用其他更“优雅”的方式编写以下语句,比如使用三值运算: if(text.length < 1){ if(errtext.length > 1){ errtext+="<br>"; } errors = true; errtext += "Field cannot be empty"; } if(text.length1){ errtext+=“”

我正在努力编写更可读、更高效的代码,我一直不喜欢if-chains。。是否可以用其他更“优雅”的方式编写以下语句,比如使用三值运算:

if(text.length < 1){
    if(errtext.length > 1){
        errtext+="<br>";
    }
    errors = true;
    errtext += "Field cannot be empty";
}
if(text.length<1){
如果(errtext.length>1){
errtext+=“
”; } 错误=正确; errtext+=“字段不能为空”; }

谢谢

像这样的东西怎么样:

errors = (text.length < 1);
if (errors) {
    errtext += (errtext.length > 1 ? "<br>" : "") + "Field cannot be empty";
}
errors=(text.length<1);
如果(错误){
errtext+=(errtext.length>1?
:“”)+“字段不能为空”; }
像这样的东西怎么样:

errors = (text.length < 1);
if (errors) {
    errtext += (errtext.length > 1 ? "<br>" : "") + "Field cannot be empty";
}
errors=(text.length<1);
如果(错误){
errtext+=(errtext.length>1?
:“”)+“字段不能为空”; }
您可以做的一件事是利用大于0的数字的真实性和等于0的数字的虚假性:

if(!text.length) {
  if (errtext.length) {
    errtext += "<br />";
  }

  errors = true;

  errtext += "Field cannot be empty";
}
if(!text.length){
if(errtext.length){
errtext+=“
”; } 错误=正确; errtext+=“字段不能为空”; }
您可以做的一件事是利用大于0的数字的真实性和等于0的数字的虚假性:

if(!text.length) {
  if (errtext.length) {
    errtext += "<br />";
  }

  errors = true;

  errtext += "Field cannot be empty";
}
if(!text.length){
if(errtext.length){
errtext+=“
”; } 错误=正确; errtext+=“字段不能为空”; }
您引用的代码似乎很清楚。您可以加入一个三元(我假设检查应该是
>0
,而不是
>1
):

if(text.length<1){
错误=正确;
errtext+=(errtext.length>0?
“:”)+“字段不能为空”; }
但这不仅不太清楚,而且使用非优化编译器也会降低效率。(这与您在这里介绍的上下文无关,我猜这不是一个紧密的循环。)

比三元测试更好的选项(同样,如果有很多这样的测试):

  • 始终在所有错误文本中包含

    ,然后在演示之前删除第一个错误文本。如果您有很多地方,那么添加错误文本就简单多了
  • 在数组中建立错误消息,然后在显示它们时使用

    作为分隔符

    • 您引用的代码似乎非常清楚。您可以加入一个三元(我假设检查应该是
      >0
      ,而不是
      >1
      ):

      if(text.length<1){
      错误=正确;
      errtext+=(errtext.length>0?
      “:”)+“字段不能为空”; }
      但这不仅不太清楚,而且使用非优化编译器也会降低效率。(这与您在这里介绍的上下文无关,我猜这不是一个紧密的循环。)

      比三元测试更好的选项(同样,如果有很多这样的测试):

      • 始终在所有错误文本中包含

        ,然后在演示之前删除第一个错误文本。如果您有很多地方,那么添加错误文本就简单多了
      • 在数组中建立错误消息,然后在显示它们时使用

        作为分隔符

      老实说,在大多数情况下,您希望使用if链,因为它们对读者来说更清晰。有一些例外,但不多

      通常,如果您的代码很笨拙,那么您的基本方法就是错误的。试试这个:

      function validate()
      {
        errs = [];
        // ...
        if (!txt.length) {
          errs.push("Must have text, man!");
        }
        // ...
        return errs.join("<BR>");
      }
      
      这将在内存中创建以下字符串:

      "Tom"
      "Brad"
      "Sam"
      "Rick"
      "Tom, Brad"
      "Tom, Brad, Sam"
      "Tom, Brad, Sam, Rick"
      
      "Tom"
      "Brad"
      "Sam"
      "Rick"
      "Tom, Brad, Sam, Rick"
      
      其中如下所示:

      var msg = ["Tom", "Brad", "Sam", "Rick"];
      var msg = msg.join(", ");
      
      在内存中创建以下内容:

      "Tom"
      "Brad"
      "Sam"
      "Rick"
      "Tom, Brad"
      "Tom, Brad, Sam"
      "Tom, Brad, Sam, Rick"
      
      "Tom"
      "Brad"
      "Sam"
      "Rick"
      "Tom, Brad, Sam, Rick"
      
      在这种情况下很可能不会有太大的区别,但是养成创建字符串数组和使用join方法的习惯是很好的。在较大的文本操作/生成问题中,它可能会导致巨大的速度减慢

      编辑:

      如果调用函数需要检查是否存在错误,则始终可以对返回字符串的
      .length
      执行If。如果您希望更明确,您可以始终这样做:

      if (!errs.length) {
        return null; // or false, or a constant...
      }
      return errs.join("<BR>");
      
      if(!errs.length){
      返回null;//或false,或常量。。。
      }
      返回errs.join(“
      ”);

      然后在调用代码中添加一个检查(
      ==null
      ,等等)。

      老实说,在大多数情况下,您希望使用if链,因为它们对读者来说更清晰。有一些例外,但不多

      通常,如果您的代码很笨拙,那么您的基本方法就是错误的。试试这个:

      function validate()
      {
        errs = [];
        // ...
        if (!txt.length) {
          errs.push("Must have text, man!");
        }
        // ...
        return errs.join("<BR>");
      }
      
      这将在内存中创建以下字符串:

      "Tom"
      "Brad"
      "Sam"
      "Rick"
      "Tom, Brad"
      "Tom, Brad, Sam"
      "Tom, Brad, Sam, Rick"
      
      "Tom"
      "Brad"
      "Sam"
      "Rick"
      "Tom, Brad, Sam, Rick"
      
      其中如下所示:

      var msg = ["Tom", "Brad", "Sam", "Rick"];
      var msg = msg.join(", ");
      
      在内存中创建以下内容:

      "Tom"
      "Brad"
      "Sam"
      "Rick"
      "Tom, Brad"
      "Tom, Brad, Sam"
      "Tom, Brad, Sam, Rick"
      
      "Tom"
      "Brad"
      "Sam"
      "Rick"
      "Tom, Brad, Sam, Rick"
      
      在这种情况下很可能不会有太大的区别,但是养成创建字符串数组和使用join方法的习惯是很好的。在较大的文本操作/生成问题中,它可能会导致巨大的速度减慢

      编辑:

      如果调用函数需要检查是否存在错误,则始终可以对返回字符串的
      .length
      执行If。如果您希望更明确,您可以始终这样做:

      if (!errs.length) {
        return null; // or false, or a constant...
      }
      return errs.join("<BR>");
      
      if(!errs.length){
      返回null;//或false,或常量。。。
      }
      返回errs.join(“
      ”);

      然后在调用代码中添加一个检查(
      ==null
      ,等等)

      用add方法创建一个
      错误
      类和某种
      错误
      集合怎么样

      您的错误集合将知道如何添加br标记,并且您的调用代码将是所有验证逻辑,而不是验证,消息文本和标记都混合在一起

      您可以检查错误集合是否有任何条目,而不是有标志


      您甚至可以在应用程序的其他位置重用错误

      用add方法创建一类
      Error
      和某种
      Errors
      集合怎么样

      您的错误集合将知道如何添加br标记,并且您的调用代码将是所有验证逻辑,而不是验证,消息文本和标记都混合在一起