Javascript js中的条件语句没有响应(节点)
我一直在熬夜编写一些代码,我在某个地方做了一次编辑,现在它没有响应。以这段代码为例:Javascript js中的条件语句没有响应(节点),javascript,string,node.js,conditional,Javascript,String,Node.js,Conditional,我一直在熬夜编写一些代码,我在某个地方做了一次编辑,现在它没有响应。以这段代码为例: function message_call(message, socket) { if (message.length > 1) { var func = message[0]; var string = message.slice(1); var string = string.join(' ') } else { var
function message_call(message, socket) {
if (message.length > 1) {
var func = message[0];
var string = message.slice(1);
var string = string.join(' ')
} else {
var func = message[0];
var string = '';
};
if (func[0] == '$') {
if (methods.hasOwnProperty(func)) {
if (string.length > 0) {
methods[func](string, socket)
} else {
console.log(string.length)
};
};
};
};
如果string.length大于0,则应使用string和socket调用方法中的值。如果为0,“else”,则应仅使用套接字调用该命令。例如如果消息等于“$say hi”,则func将为“$say”,而字符串将为“hi”。而“$say”的值将从方法中调用。但是,如果消息等于“$say”,那么函数将是that,字符串将是“”。我在else上调用了方法,并放置console.log以查看它是否有响应。但是,如果长度为0,它甚至不会记录string.length。在功能的外面,问题是,为什么它不打印到else上的控制台?为什么条件语句不能正常工作。如果大于0,它应该做一件事,如果大于0,它应该做另一件事。但是,它只在>0上执行,在else上没有响应。尝试在方法的开头定义func/string,而不是在if/else块中
var func = null, string = null;
// remainder of code. drop using 'var' when assigned values
在您认为字符串失败的上下文中,字符串可能为null或没有长度属性
另外,请确保始终使用分号。这并不是一个真正的答案,但我已经解决了这个问题。当字符串=''时,意味着只有func,出于某种原因,它会转到新行,或者添加空白,使命令无法通过。有什么建议吗
编辑:使用func.strip()完成了这项工作。4个小时的调试,并且必须打印出每一条数据来解决它。偶尔点击空格键不需要花费任何费用。从打印if语句之外的string.length开始,我已经确认,当只有函数时,它实际上是0。我甚至尝试过if(string.length==0){console.log(string.length)};但没有成功。它只是不响应“array”,因为消息是从以前的函数(“”)拆分的,我甚至通过预先定义字符串也尝试过。但是,它只能满足其中一个条件。在第一个条件中,它永远不会对else中生成的变量执行该条件。如果字符串为0,则func后面有空格,这会阻止函数工作。但是谢谢你回答这个问题。