gpt4 book ai didi

javascript - jQuery 源中的奇怪代码 : var ! == var ? x:y;

转载 作者:IT王子 更新时间:2023-10-29 03:01:51 24 4
gpt4 key购买 nike

最近我在 jQuery 源代码(最新版本 1.9.1,Sizzle 包,第 129 行 funescape 函数)中发现了一行奇怪的代码:

funescape = function( _, escaped ) {
var high = "0x" + escaped - 0x10000;
// NaN means non-codepoint
return high !== high ? // <--- LINE 129
escaped :
// BMP codepoint
high < 0 ?
String.fromCharCode( high + 0x10000 ) :
// Supplemental Plane codepoint (surrogate pair)
String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
};

high !== high 比较的原因是什么?看起来 return escaped 永远不会被执行。还是我错过了什么?

引用: jQuery Sizzle

最佳答案

其实上面的评论里是这么写的:

// NaN means non-codepoint

因此必须首先执行此比较以处理 JavaScript 中的 NaN 情况:

NaN === NaN 返回 false

正如 James Wiseman 指出的那样了解开发人员为什么使用 high !== high 而不是 isNaN(high) 也很重要,后者会更清楚。

肯定是看性能的。这test显示 a !== aisNaN(a) 快二十倍

zzzzBov也表明 isNaN() 可以被覆盖,使用 !== 也更便携。

更多信息来自 Benjamin Gruenbaum :

It is also worth noting that NaN does not equal to anything else as well, and also it is not equal to anything else in an unstrict sense

来自Jan Dvorak :

Also note {valueOf:function(){return{}}} does equal itself

关于javascript - jQuery 源中的奇怪代码 : var ! == var ? x:y;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14772076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com