Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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 js中的条件语句没有响应(节点)_Javascript_String_Node.js_Conditional - Fatal编程技术网

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后面有空格,这会阻止函数工作。但是谢谢你回答这个问题。