Avatar ·

JavaScript中的 !!(双感叹号)是什么意思?

大家好!我刚开始学习JavaScript,在别人的代码中遇到了一个奇怪的构造。代码大概是这样的: ```javascript let isActive = !!someValue; ``` 我知道一个感叹号 `!` 是逻辑“非”,它会反转值(把 `true` 变成 `false`,反之亦然)。但为什么要连续写两个感叹号呢?这难道不是和直接写 `!(!someValue)` 一样吗?还是说这是一个我不知道的特殊运算符? 我试着在浏览器控制台中玩了一下: ```javascript console.log(!!"hello"); // true console.log(!!0); // false console.log(!!""); // false console.log(!!null); // false console.log(!!undefined); // false console.log(!!42); // true ``` 结果有点奇怪:`!!"hello"` 返回 `true`,虽然字符串不是空的。`!!0` 返回 `false`,尽管0是一个数字。也许这和类型转换有关?请解释一下,这个双感叹号到底有什么用?