为什么JavaScript会切零?

Vad*_*iak 3 javascript string number-formatting

我有一个简单的函数在数字前添加零:

function validateString(length, str){
    var newStr = '' + str;
       for (var i = str.length; i < length; i++)
          newStr = '0' + newStr;
    return newStr;
}
Run Code Online (Sandbox Code Playgroud)

我需要更改什么(变量的类型?)以使其适用于数字?

validateString(12,2);
"2" // Unexpected rezult
validateString(12,'2');
"000000000002"
Run Code Online (Sandbox Code Playgroud)

Jam*_*lly 7

发生这种情况是因为你打电话str.length而不是newStr.length.数值具有未定义的长度.

更改:

for (var i = str.length; i < length; i++)
Run Code Online (Sandbox Code Playgroud)

至:

for (var i = newStr.length; i < length; i++)
Run Code Online (Sandbox Code Playgroud)

function validateString(length, str){
    var newStr = '' + str;
       for (var i = newStr.length; i < length; i++)
          newStr = '0' + newStr;
    return newStr;
}

console.log(validateString(12,2));
console.log(validateString(12,'2'));
Run Code Online (Sandbox Code Playgroud)