function decimalToHex(d, padding) {
var hex = Number(d).toString(16);
/*I dont understand this part: does this mean if padding gets a value = "undefined". It'd be equal to "justchecking" in this case.
What is a value of "undefined" then? is it really necessary this if-statement? */
padding = typeof (padding) === "undefined" || padding === null ? padding = "justchecking" : padding;
while (hex.length < padding) {
hex = "0" + hex;
}
return hex;
}
感谢您的解释......
答案 0 :(得分:2)
这是一个ternary operator。简而言之,它是if / else块的精简版,格式为:
condition ? true expression : false expression;
在您的情况下,默认padding
为justchecking
。
答案 1 :(得分:2)
padding = typeof (padding) === "undefined" || padding === null ? padding = "justchecking" : padding;
上面的条件错误应该是:
padding = typeof (padding) === "undefined" || padding === null ? "justchecking" : padding;
但无论如何这相当于写作:
if(typeof(padding) == "undefined" || padding === null)
{
padding = 'justchecking';
}
它正在做的是查看填充是否存在并以最明确的方式定义,因为如果填充是“”或0,只检查if(padding)
将返回falsy。但是如果检查变量的类型和它尚未定义,然后它获取特殊字符串“undefined”。如果您只检查null,则可以定义它,因为null与typeof undefined的真实性不同。这里有一点概述:http://scottdowne.wordpress.com/2010/11/28/javascript-typeof-undefined-vs-undefined/你也可以在Douglas Crockfords中找到它的讨论。我认为这是权威指南。
答案 2 :(得分:0)
如果没有填充,则只为padding变量分配默认值“justchecking”。
它也可以写成:
padding = padding || "justchecking";
...虽然它并不完全等效,但这也会将0的值替换为默认值。
答案 3 :(得分:0)
这意味着:如果已经定义并且为null,则将“justchecking”分配给变量“padding”。