请参阅 Node.js 文档中的 此示例:
response.writeHead(statusCode[, statusMessage][, headers])
const body = 'hello world';
response
.writeHead(200, {
'Content-Length': Buffer.byteLength(body),
'Content-Type': 'text/plain',
})
.end(body);
writeHead
函数的第二个参数应该是statusMessage
。
为什么这第二个参数可以自动跳过,我们不需要参数为undefined或者null吗? Node.js 如何知道该对象是第三个参数?
为什么不:
const body = 'hello world';
response
.writeHead(200, undefined, {
'Content-Length': Buffer.byteLength(body),
'Content-Type': 'text/plain',
})
.end(body);
所以类似
const writeHead = (status, bodyOrHeaders, maybeHeaders) => {
let body, headers;
if (maybeHeaders) {
// if we have a 3rd arg, we assume its the value for headers
// and the body is the 2nd arg
headers = maybeHeaders;
body = bodyOrHeaders;
} else {
// otherwise we didnt get a 3rd arg so assume headers is 2nd
body = null;
headers = bodyOrHeaders;
}
// ... do something with status, body and headers
}