当string可能为null时,确定Node JS中的字符串长度

Ama*_*ght 6 javascript string null if-statement node.js

我正在尝试学习Node并具有以下功能:

this.logMeIn = function(username,stream) {
  if (username === null || username.length() < 1) {
    stream.write("Invalid username, please try again:\n\r");
    return false;
  } else {
  ....etc
Run Code Online (Sandbox Code Playgroud)

而且我正在通过它

if (!client.loggedIn) {
  if (client.logMeIn(String(data.match(/\S+/)),stream)) {
Run Code Online (Sandbox Code Playgroud)

我已经尝试了==和===,但我仍然遇到错误,因为用户名没有检测到它是null,而username.length()失败了:

if (username === null || username.length() < 1) {
                                  ^
TypeError: Property 'length' of object null is not a function
Run Code Online (Sandbox Code Playgroud)

我确信Node不会评估||的第二部分 在if语句中,当第一部分为true时 - 但我无法理解为什么if语句的第一部分在username为null对象时评估为false.有人能帮我理解我做错了什么吗?

Amb*_*mps 9

length是一个属性,而不是一个函数.尝试username.length


Eng*_*eer 5

你传递String(data.match(/\S+/))username参数,所以,当data.match(/\S+/)null,你"null"nullusername,如:

String(null) === "null"
Run Code Online (Sandbox Code Playgroud)

所以你需要改变你的状况:

if( username === null || username === "null" || username.length < 1 )
Run Code Online (Sandbox Code Playgroud)