This Javascript MD5 implementation has me confused.
In the global space, the author declares a var:
var hexcase = 0;
Later on, the following method appears:
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;
}
The line that I don't understand is:
try { hexcase } catch(e) { hexcase=0; }
What is the author trying to accomplish here?
He is just making sure hexcase
is defined, and if it isn't, he is defining it.
Try putting
try {amIdefined} catch(e) {console.log('was not defined');}
in your console and you'll see...
Note that this is the safest way of making sure the variable is defined. In order to do
hexcase = hexcase || 0;
you need to do var hexcase
first, or else you will get an error.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With