function addZero(x) {
if (x < 10) {
return "0" + String(x);
} else {
return String(x);
}
}
function printTime() {
var d = new Date();
var hours = addZero(d.getHours());
var mins = addZero(d.getMinutes());
var secs = addZero(d.getSeconds());
document.body.innerHTML = hours + ":" + mins + ":" + secs;
}
setInterval(printTime, 1000);
所以vsc告诉它是一个字符串构造函数,但是我还是不明白。为什么要用大写字母(String),参数(x)在做什么以及函数返回什么?
答案 0 :(得分:1)
String(variable)
会将您的变量解析为字符串。
false
至'false'
undefined
至'undefined'
null
至'null'
9
至'9'
'a'
至'a'
您可以使用:
variable + ''
'' + variable
解析为字符串
答案 1 :(得分:1)
String全局对象只是将您拥有的数字转换为字符串的一种简单方法,因为稍后需要将其作为字符串处理。在此处查看有关字符串(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)的更多信息。
在此特定功能addZero
中,要点是在小时,分钟或秒的任何单位数值上显示前导零,就像数字时钟一样。如果数字x小于十,则添加零提单。但是必须首先将一个数字制成字符串,因为不能有一个值为08的数字。如果x大于9,则不需要前导零,并且数字本身将作为字符串返回。
答案 2 :(得分:1)
addZero更改为3->“ 03”
所以,结果是 3:10:2-> 03:10:02
x是一个数字,因此加0且x等于x。 但String()将3更改为“ 3”。因此它返回“ 03”。
答案 3 :(得分:1)
第一个功能如何起作用?
它检查输入x
是否小于10,然后将其添加为'0'并返回字符串;
否则,将输入作为字符串返回。
为什么要使用大写字母(字符串)
这是将变量转换为字符串的正确语法。尽管有几种字符串转换方法,例如x.toString()
,但是它们或多或少都彼此不同。因此,如果您为此使用诸如string(x)
之类的其他内容,则会给您带来错误。请参见下面的代码段。
console.log(string(456))
参数(x)在做什么
它只是被迫进入字符串转换过程,其中将使用x
获取所需的数据,该数据是x
的字符串,但您的实际变量x
会被仍保持其数据和数据类型。
函数将返回什么。
该函数将返回一个字符串。如果输入少于10,则该字符串将以'0'开头。
答案 4 :(得分:0)
addZero函数正好按照其名称所述。对于作为参数x
传递的小时,分钟和秒数,它的前面是零。
示例:假设运行代码时是9:23:05。
然后d.getHours()为9,并将此值传递到addZero
。当9小于10时,将执行if
的第一部分,并且addZero
返回“ 0” + 9,即字符串“ 09”,对应于具有两位数字的小时。>
以同样的方式,d.getMinutes()为23,并将此值传递到addZero
。但是现在23> 10并执行else
部分并返回23。
最后,d.getSeconds()为5(因为如果该函数小于10,则仅返回一个数字,即5而不是05。然后将5作为参数x传递到addZero
。我们有x <10,因为5 <10并且x接收到值5。执行if
的第一部分,并返回“ 0” + 5,即字符串“ 05”。
然后将document.innerHTML设置为“ 09” +“:” + 23 +“:” +“ 05”,结果为“ 09:23:05”。
请注意,如果您没有使用addZero
并直接使用Date方法的值,结果将有所不同,最终结果将显示为“ 9:23:5”。
x
是一个FORMAL PARAMETER,是一个符号,用于“接收”传递给函数的值,并允许您操纵在函数范围内接收的值。