0

我在编写一些代码时迟到了,我在某处进行了编辑,现在它不会响应。以这段代码为例:

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,它应该从带有字符串和套接字的方法中调用一个值。如果为 0,则“else”应该只使用套接字调用命令。例如。如果消息等于“$say hi”,那么 func 将是“$say”,而字符串将是“hi”。并且“$say”的值将从方法中调用。但是,如果消息等于“$say”,那么函数就是那个,字符串就是“”。我在 else 上调用了方法,并把 console.log 看它是否有响应。但是,如果长度为 0,它甚至不会记录 string.length。它会在函数之外,问题是,为什么它不会在 else 上打印到控制台?为什么条件语句不能正常工作。如果大于 0,它应该做一件事,另一件事。但是它只在 >0 上执行,并且在 else 上没有响应。

4

2 回答 2

1

尝试在方法的开头定义 func/string,而不是在 if/else 块中。

var func = null, string = null;
// remainder of code. drop using 'var' when assigned values

在您认为它失败的上下文中,字符串可能为空或没有长度属性。

另外,请确保您始终使用分号。

于 2013-09-09T05:24:43.123 回答
1

这不是一个真正的答案,但我已经隔离了这个问题。当字符串 = '' 时,意味着只有 func,由于某种原因,它会转到新行,或者添加空格使其无法通过。有什么建议么?

编辑:使用 func.strip() 完成了这项工作。4小时的调试,必须打印出每一条数据来解决它。

于 2013-09-09T06:32:25.623 回答