繁体   English   中英

服务器上的Node.js对象不是客户端上的对象

[英]Node.js Object on the server is not an object on the client

我在Node.js的服务器端有一个对象变量。 我可以使用console.log(typeof(value));进行验证console.log(typeof(value)); 我得到object

当我做一个console.log(value); 我懂了

[ 'bla_bla_1',
  'bla_bla_2',
  'bla_bla_3',
]

然后,我使用Express将变量传递给客户端: res.render('target.ejs', {data:value}); 然后ejs文件使用var value = '<%= data %>';对其进行解析var value = '<%= data %>';

我想知道它是对象还是数组,以便弄清楚如何在客户端处理它。

我写了一个小脚本来测试它:

if (typeof(value) === 'object') {console.log("IT'S AN OBJECT");}
else {console.log("IT'S NOT AN OBJECT");}
if ( Array.isArray(value) ) {console.log("IT'S AN ARRAY");}
else {console.log("IT'S NOT AN ARRAY");}

我得到的是在浏览器控制台中的信息:

IT'S NOT AN OBJECT
IT'S NOT AN ARRAY

使用EJS语法解析后,该值是一个简单字符串。

EJS Doc指定如何按原样设置值。

<%-将未转义的值输出到模板中

请尝试以下方法:

var value = <%- JSON.stringify(data) %>;

MDN

属性名称必须为双引号字符串; 禁止尾随逗号。

这意味着您需要在解析之前替换无效的字符:

 var origvalue = "[ 'bla_bla_1','bla_bla_2','bla_bla_3', ]"; var value = JSON.parse(origvalue.replace(/'/g, '"').replace(/,[^,]*\\]/, '\\]')); if (typeof(value) === 'object') {console.log("IT'S AN OBJECT");} else {console.log("IT'S NOT AN OBJECT");} if ( Array.isArray(value) ) {console.log("IT'S AN ARRAY");} else {console.log("IT'S NOT AN ARRAY");} 

对象具有“ {”和“}” const obj = {Key2:“值”}

并且数组有[]

对象具有键值,数组没有键值,但是如果您是一个正统的人,那么您会知道当日,数组是一个对象

不要相信我,但是我认为typeof用于原始值,并且我们知道数组不是对象,因此最好使用instanceof

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM