Javascript NodeJS转义反斜杠

Javascript NodeJS转义反斜杠,javascript,node.js,escaping,backslash,Javascript,Node.js,Escaping,Backslash,我面临反斜杠转义的一些问题,下面是我尝试过的代码片段。问题是如何将带有转义斜杠的变量分配给另一个变量 var s = 'domain\\username'; var options = { user : '' }; options.user = s; console.log(s); // Output : domain\username - CORRECT console.log(options); // Output : { user: 'domain\\username' } -

我面临反斜杠转义的一些问题,下面是我尝试过的代码片段。问题是如何将带有转义斜杠的变量分配给另一个变量

var s = 'domain\\username';
var options = {
    user : ''
};
options.user =  s;

console.log(s); // Output : domain\username - CORRECT
console.log(options); // Output : { user: 'domain\\username' } - WRONG
为什么当我打印
选项
对象时,两个斜杠都来了

我觉得我在这里做错了什么,这可能是最基本的

更新: 当我使用此对象
options
时,值按原样传递(使用双斜杠),我将此对象用于SOAP服务,由于用户属性值无效,导致401错误

但是,当我使用相同的用户值尝试使用相同的PHP代码时,它给出了正确的响应,在PHP中,我们也使用两个斜杠来转义该值。

输出是正确的

设置变量时,转义的反斜杠将解释为单个代码点

但是,
options
是一个对象,在记录时显示为JSON blob。此时将重新转义反斜杠,因为这是反斜杠在JSON输出中有效显示为字符串值的唯一方法

如果将
console.log(options)
中的JSON输出重新读取到javascript中(使用
JSON.parse()
或类似方法),然后输出用户密钥,则只会显示一个反斜杠

(以下问题编辑:)

为了让SOAP消费服务接受您的数据,数据可能需要在带内显式转义。在这种情况下,在指定值时需要双重转义:

var s = 'domain\\\\user'

为了确定是否需要这样做,我建议您在工作的PHP应用程序和SOAP应用程序之间放置一个代理,并检查流量。

当您使用
console.log()
对象时,首先使用将其转换为字符串
util.inspect()
将字符串属性值格式化为文本(非常类似于
JSON.stringify
),以便更轻松/准确地显示字符串(可能包含
\n
等控制字符)。在执行此操作时,它必须转义字符串中的某些字符,以便它们是有效的Javascript字符串,这就是为什么您看到反斜杠在代码中被转义的原因。

控制台很可能转义字符串,因为。。这比另一个更好。@JanDvorak谢谢,但我真的很抱歉没有准确地告诉你。你确定你的代码是正确的吗?运行时会出现错误,因为选项上不存在
wsdl\u头
。请通过运行以下代码检查
options.wsdl\u头.user
的类型<代码>控制台.log('type',typeof options.wsdl\u headers.user)更新代码以删除对
wsdl\u头的引用
谢谢,但是我将如何在API服务中使用值为“\”的对象,因为数据按原样传递,抛出401错误。您已经正确地转义了反斜杠。API错误状态的原因很可能在其他地方。但是
API
对象返回了
错误响应
消息和
,因为我可以看到
用户属性
值有
两个斜杠
。但是,当我尝试使用相同的用户值对
PHP代码
执行相同的操作时,它会给出正确的响应,在PHP中,我们也在
使用
两个斜杠
对该值进行转义。更新以反映使用SOAP服务的问题编辑。