【问题标题】:JSHint - Unreachable 'break' after 'return'JSHint - “返回”后无法访问“中断”
【发布时间】:2023-03-07 02:36:04
【问题描述】:

所以几个月来我一直在开发模态控件。它是根据我的客户需求进行自定义编码的,但我想将它发布给普通公众。我一直在努力通过 codekit 和 uglify 来缩小它。

这是我收到的剩余警告的示例。

我怎样才能最好地删除这些警告?为了了解对象和数组之间的变化,我扩展了 typeof 函数。

var com = {
	load: function(template, $el, obj, append, callback){
		$.get(template, function(value){
			$.templates("tmpl", value);
			var html = $.render.tmpl(obj);
			if(append){ $el.append(html); }else{ $el.html(html); }
		}).done(function(){
			if(callback !== undefined && com.type(callback) === "function"){ callback(); }
		});
	},
	checkApiEvents: function(api){
		if(!$.isEmptyObject(api.doc)){ $.each(api.doc, function(k,v){ if(com.type(v) === "function"){ $.e.doc[k].push(v); } }); }
		if(!$.isEmptyObject(api.win)){ $.each(api.win, function(k,v){ if(com.type(v) === "function"){ $.e.win[k].push(v); } }); }
	},
	type: function(name){
		switch(name){
			case "function": return "function"; break;
			case "object": if($.isArray(name)){return "array"; }else{ return "object"; } break;
			case "string": return "string"; break;
			case "number": if(!isNaN(name)){ return "number"; }else{ return "string"; } break;
			case '': case "undefined": default: return "undefined"; break;
		}
	},
};

【问题讨论】:

  • 回来后不要休息。返回后不执行任何操作。一个回报就足够了,休息是无法到达和不必要的。摆脱它。
  • 感谢 Andrew,在默认值之前添加一个中断后,它清除了所有剩余的警告,
  • 如果实际上是为了让警告不显示(即您暂时使用提前返回来测试某些东西),您可以指定/* jshint -W027 */。当然不推荐用于生产

标签: javascript jshint


【解决方案1】:

如果您在 jshint W027 - Unreachable '$' after 'return' 中寻找错误并希望早点返回(目前),那么一个简单的解决方案是让 jshint 警告消失,这是使用条件:

function doThis(){
    if (1) return true;
    // I want to keep this but return early for now
    myVar = 0;
}

【讨论】:

    【解决方案2】:

    您需要一个break 来中断循环或切换,而不是进一步向下移动 块(循环/开关)。 return 与函数本身分离。因此,一旦调用 return,return 之后就没有任何语句了。

    【讨论】:

      【解决方案3】:

      return 语句会立即“退出”函数,因此它之后的任何代码都不会运行。

      function hello() {
          console.log('this will run');
          return;
          console.log('this will never run');
      }
      

      是的,您可以将return 语句放在if 块内,但如果它们被调用,则在return 语句之后或if 块之外的任何内容都不会运行。

      function hello() {
          console.log('this will run');
      
          var x = true;
      
          if (x === true) {
              console.log('this will run');
              return;
              console.log('this will never run');
          }
          else {
              return; // this will never return
          }
      
          console.log('this will only run if x is false');
      }
      

      【讨论】:

        猜你喜欢
        • 2018-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-26
        • 1970-01-01
        相关资源
        最近更新 更多