第一个功能如何运作?

时间:2019-03-20 02:47:11

标签: javascript string constructor

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)在做什么以及函数返回什么?

5 个答案:

答案 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,是一个符号,用于“接收”传递给函数的值,并允许您操纵在函数范围内接收的值。