JavaScript 字符串评估

标签 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 控制台上写了这个,输出是“假”。 如果我理解正确的话,“奇怪”的代码,根据 ASCII 表读取“m a n”,parseInt 应该返回一个基于十六进制基数的整数。然后它再次转换为字符串,这次基于 chars 十进制值。 为了完成这一切,我们通过“否定它”来评估返回“x”(不是我正在寻找的单词,但当时不记得更好的单词了......也许评估一下?)。

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

有人愿意详细说明吗?

最佳答案

正如您似乎已经锻炼出来的那样,

return x;

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

来自MDN ,逻辑不是 !:

Returns false if its single operand can be converted to true; otherwise, returns true.

空字符串 "" 为 false,因此 !""true,但任何其他字符串均为 true,因此 !“任何其他字符串”false

关于JavaScript 字符串评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16689067/

相关文章:

javascript - 使用 CSS 过渡动画 SVG 元素的位置

javascript - 带有指令和翻译的 Angular SweetAlert

javascript - HTML5游戏代码中的跳跃角色

javascript - 嵌套导航点击逻辑问题

javascript - 如果名称和值不同,则禁用所有其他单选按钮

javascript - 从 Rails Controller 中的 ajax 访问发布的 json 数据

javascript - 在两个 div 之间画一个箭头

javascript - 用 [] react setState

javascript - sublime 文本的排版工具

php - 使用javascript在linux上执行shell命令