看到意想不到的"未定义的“;在Node JS提供的字符串中
Seeing unexpected "undefined" in strings served by Node JS
我刚刚用NodeJS创建了一个非常简单的web服务器,它询问JSON文件的名称,然后在其中循环,并将其中的某些键作为"格式化"的文本文件提供。
代码:
var http = require('http'),
prompt = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
prompt.question("Which library? ", function (whichlib) {
"use strict"
var lib = require("./bot-client/lib/" + whichlib),
rules = lib.data.ruleset,
parse = function (ruleset, prefix) {
var key,
str;
for (key in ruleset) {
str += prefix + " - " + key + "'n";
str += (ruleset[key].hasOwnProperty("ruleset"))
? parse(ruleset[key].ruleset, prefix + "'t")
: "";
}
return str;
},
str = parse(rules, "");
console.log("Ready to serve page.");
http.createServer(function (req, res) {
console.log('Server running at http://127.0.0.1:8124/');
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write(str);
res.end();
}).listen(8124, "127.0.0.1");
});
预期结果示例:
- key1
- key1.1
- key1.1.1
- key1.1.2
- key1.2
- key1.2.1
- key1.2.2
- key1.2.3
- key1.3
- key1.3.1
- key1.3.2
实际结果示例:
undefined - key1
undefined - key1.1
undefined - key1.1.1
- key1.1.2
- key1.2
undefined - key1.2.1
- key1.2.2
- key1.2.3
- key1.3
undefined - key1.3.1
- key1.3.2
问题:
我根本不明白为什么"未定义"会出现,更不用说看到它的外观模式了。我是不是错过了一些显而易见的东西?
将字符串连接到仍然是undefined
:的变量
var key,
str; //you don't set any value here
for (key in ruleset) {
str += prefix + " - " + key + "'n";
在第四行中,str
仍然未初始化。您可以通过将其设置为空字符串来修复它:
var key,
str = '';
for (key in ruleset) {
str += prefix + " - " + key + "'n";
是的,您缺少str
和key
的初始化。
在JavaScript中,如果您将一个未定义的变量连接为字符串,它将实际显示为undefined
。
在您的情况下,更改此:
var key,
str;
对此:
var key = '',
str = '';
初始化变量。
相关文章:
- 在索引.html和应用.js [node.js] 之间共享变量
- JS(node.js)而循环不起作用
- 如何使用 JS (Node.js) 防止 HTTP 查询中允许使用 UTF8 字符串
- Angular JS & Node Webkit Routing
- 当作为脚本运行时.js Node中“this”的上下文是什么
- JS/Node:- 使用 node.io 选择标记
- JavaScript 如何让节点在返回 node.js/Node-RED 之前等待
- 处理快速连续的函数调用 - Javascript / underscore.js / node.js
- 如何在一台服务器中运行不同的.js文件.js NODE JS中的文件
- JS node-mysql bools 表现得很奇怪
- Node.js+Node Webkit+基于Node串行端口的应用程序-这可能吗
- 如何在Express.js/Node.js中检查查询字符串是否有值
- Express.Js, Node.Js, MongoDB Questions
- 在JS/Node中,当多个人编辑相同的记录时,如何避免数据冲突?有图案吗
- 服务器端js(node.js)上的同步
- 将参数从jade发送到js/node
- angular.js+node.js/electron中的Promise;不起作用
- 是否有可能确定我的应用程序的aws实例使用js/node aws-sdk
- Image Magick模块抛出奇怪的错误(Express js Node js)
- 用JS (Node.js)读取文本文件'