这个 Javascript MD5 implementation 让我很困惑。
在全局空间中,作者声明了一个var:
var hexcase = 0;
后来出现如下方法:
function rstr2hex(input)
{
try { hexcase } catch(e) { hexcase=0; }
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var output = "";
var x;
for(var i = 0; i < input.length; i++)
{
x = input.charCodeAt(i);
output += hex_tab.charAt((x >>> 4) & 0x0F)
+ hex_tab.charAt( x & 0x0F);
}
return output;
}
我不明白的那一行是:
try { hexcase } catch(e) { hexcase=0; }
作者在这里试图完成什么?
最佳答案
他只是确保定义了 hexcase
,如果没有,他就定义它。
尝试放置
try {amIdefined} catch(e) {console.log('was not defined');}
在您的控制台中,您会看到...
请注意,这是确保定义变量的最安全方法。为了做
hexcase = hexcase || 0;
你需要先做var hexcase
,否则你会得到一个错误。
关于javascript - 不清楚的 Javascript 片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8329061/