Javascript字符串评估

时间:2013-05-22 10:08:36

标签: javascript

有一家葡萄牙IT公司正在寻找一些领域的开发人员,只是出于好奇(因为我已经找到了工作,谢天谢地)我去检查了招聘信息。

当我去查看JS开发人员的帖子时,他们提供了一段引起我注意的JS代码。我已经和JS一起工作了一段时间,我发现自己不时回到JS编程,但说实话,我从来没有见过任何与给定代码类似的内容。

这是代码:

!(function(x){
    '6D 61 6E'.split(' ').forEach(function(a){
        x+=String.fromCharCode(parseInt(a,16));
    });
    return x;
})('');

我在Chrome的JS控制台上写了这个并输出'false'。 如果我理解正确,“奇怪的”代码,并根据ASCII表读取'm a n',并且parseInt应该返回基于十六进制基数的整数。然后它再次转换为字符串,这次基于字符十进制值。 为了完成这一切,我们通过“否定它”来评估返回'x'(不是我想要的那个词,但是当时记不起更好的一个......评估可能吗?)。

然后,为什么输出错误?如果我们不评估返回结果,那么结果就是预期的'man',但我不明白为什么我们在这个特定实例上得到错误。

有人想详细说明吗?

1 个答案:

答案 0 :(得分:3)

你似乎已经解决了,

return x;

...将返回字符串“man”。但是你的问题似乎归结为!"man"给出false的原因?

来自MDN,逻辑不是!

  

如果单个操作数可以转换为false,则返回true;否则,返回true

空字符串""是假的,因此!""true,但任何其他字符串都是真实的,因此!"any other string"false