这段代码的含义是什么?start = + start || 0;`在JavaScript中?

时间:2015-03-12 05:08:20

标签: javascript node.js

我读了节点的源代码(v0.10.33),在文件buffer.js中,我找到了这个函数:

SlowBuffer.prototype.toString = function(encoding, start, end) {
  encoding = String(encoding || 'utf8').toLowerCase();
  start = +start || 0;
  if (typeof end !== 'number') end = this.length;

  // Fastpath empty strings
  if (+end == start) {
    return '';
  }

  switch (encoding) {
    case 'hex':
      return this.hexSlice(start, end);

    case 'utf8':
    case 'utf-8':
      return this.utf8Slice(start, end);

    case 'ascii':
      return this.asciiSlice(start, end);

    case 'binary':
      return this.binarySlice(start, end);

    case 'base64':
      return this.base64Slice(start, end);

    case 'ucs2':
    case 'ucs-2':
    case 'utf16le':
    case 'utf-16le':
      return this.ucs2Slice(start, end);

    default:
      throw new TypeError('Unknown encoding: ' + encoding);
  }
};

但我不理解这一行的含义:start = +start || 0;+之前start的目的是什么?

以下是答案: +和 - 运算符也有一元版本,它们只在一个变量上运行。当以这种方式使用时,+返回对象的数字表示,而 - 返回其负对应。

var a = "1";
var b = a;  // b = "1": a string
var c = +a;  // c = 1: a number
var d = -a;  // d = -1: a number
  

+也用作字符串连接运算符:如果其任何参数是字符串或者不是数字,则任何非字符串   参数转换为字符串,2个字符串   级联。例如,5 + [1,2,3]计算字符串“51,   2,3“。更有用的是,str1 +”“+ str2返回str1连接的   str2,之间有空格。

1 个答案:

答案 0 :(得分:0)

它返回对象的数字表示。

请参阅此reference