无法理解:“消息”:内容&& content.toString()||空值;

时间:2015-10-22 08:57:20

标签: javascript node.js

在node.js应用程序中,我发现了一个函数(这是一个用于http.ServerResponse类的猴子补丁),它传递了两个参数:

  • 内容:我想这是一个消息字符串(或JSON),它将是客户端的响应消息。
  • 状态:一个数字。

这是功能代码:

http.ServerResponse.prototype.respond = function (content, status) {

  if ('undefined' == typeof status) { // only one parameter found
    if ('number' == typeof content || !isNaN(parseInt(content))) { // usage "respond(status)"
      status = parseInt(content);
      content = undefined;
    } else { // usage "respond(content)"
      status = 200;
    }
  }
  if (status != 200) { // error
    content = {
      "code":    status,
      "status":  http.STATUS_CODES[status],
      "message": content && content.toString() || null
    };
  }
  if ('object' != typeof content) { // wrap content if necessary
    content = {"result":content};
  }
  // respond with JSON data
  this.send(JSON.stringify(content)+"\n", status);
};

我无法理解此行中内容的消息属性受影响的值的含义:

"message": content && content.toString() || null

由于'&&'是逻辑运算符,因此content和content.toString()必须解释为二进制(true / false)。在javascript中将字符串转换为二进制文件意味着什么? (当它不是null或未定义时,它会是真的吗?)

我做了这样的测试:

//content = {var1:'val1', var2:'val2'};

content = "some content here";

/*console.log('content.toString() : ' + content.toString()); // [object Object]

console.log('JSON.stringify() : ' + JSON.stringify(content));

*/

console.log('content == true' + content == true); // this will display : false
console.log('content.toString() == true' + content.toString() == true); // false too.. 

console.log('content && content.toString() : ' + content && content.toString()); // this will display nothing
console.log('(content && content.toString()) == true' + (content && content.toString()) == true); // false


var message =  content && content.toString() || null; //


console.log('message : ' + message);

如图所示:

content == true // returns false
content.toString() == true // returns false too 

我只是假设影响“消息”的值测试内容是否存在并将其转换为String但我不理解其背后的逻辑。

0 个答案:

没有答案