JSHint - '返回'后无法访问'break'

时间:2017-07-01 02:35:28

标签: javascript jshint

所以我几个月来一直在开发一种模态控制。它是根据我的客户需求定制编码的,但我想将其发布给普通公众。我一直在努力通过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;
		}
	},
};

enter image description here

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

你需要一个break来断开一个循环或切换不进一步的身体  块(循环/开关)。 return与函数本身分离。因此,一旦返回被调用,返回后没有任何声明。

答案 2 :(得分:-1)

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');
}