Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的while循环要测试出生年份是否有4个字符,并且以1或2个无限开始?_Javascript - Fatal编程技术网

Javascript 为什么我的while循环要测试出生年份是否有4个字符,并且以1或2个无限开始?

Javascript 为什么我的while循环要测试出生年份是否有4个字符,并且以1或2个无限开始?,javascript,Javascript,这是我的密码。我还是一个初学者,我已经尝试了半个小时来解决这个问题,但都没有用。这可能是一个简单的解决办法,但我真的不明白我做错了什么。如果你回答我的问题,请非常清楚地解释原因,因为我通常理解赋值运算符,但很明显,这一个是我无法理解的。 谢谢大家! // Calculating your age with your date of birth // yob is the year of birth var yob = parseInt(prompt('What ur date of birth'

这是我的密码。我还是一个初学者,我已经尝试了半个小时来解决这个问题,但都没有用。这可能是一个简单的解决办法,但我真的不明白我做错了什么。如果你回答我的问题,请非常清楚地解释原因,因为我通常理解赋值运算符,但很明显,这一个是我无法理解的。 谢谢大家!

// Calculating your age with your date of birth
// yob is the year of birth
var yob = parseInt(prompt('What ur date of birth', 1995));

function calcage (yob){
    while ((yob[0] != 1 && yob[0] !=2) || (yob.length != 4)) {
        // I don't understand why this is an infinite loop.
        // while yob doesn't start with one 
//or doesn't start with two or     yob length is smaller than 4. 
    // Then ask the question again.
    var yob = parseInt(prompt(' Please enter a valid date of birth. What     your date of birth ', 1995));
}
    var age = 2017 - yob;
return age;
}

var yourage = calcage(yob);
document.write("You are "+yourage+" years old");

当您像这样使用
yob[0]
时,我假设您正在尝试查找yob的第一个数字


除非将yob的值转换为字符串,否则这种方法实际上是行不通的。如果这样做,您可以找到yob的第一个数字,或者从技术上讲,因为您将其转换为字符串,所以它将是第一个字符

yob
是一个整数,而不是数组,也不是字符串。还可以考虑在<代码> PARSETIN()/<代码>上使用第二基数参数来指定基以避免奇怪的bug。这意味着
yob[0]
未定义的。除非先将数字转换为字符串,否则不能使用
[]
运算符访问数字的位数。函数calage(yob){var yob=yob.toString();我使用了它,它工作了。谢谢你们!与其进行混乱的字符串比较,为什么不在while条件中将其作为整数进行比较?
while(yob<1000 | | yob>=3000)
非常感谢,我不知道为什么我没有想到这个!如果你把它作为一个答案发布,我会选择你作为最佳答案