Mr丶Jia
2016-12-31 15:02
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Math </title>
<script type="text/javascript">
function math(){
for(var i=1;i<=10;i++){
var a1=Math.round((Math.random())*i);
}
return a1;
}
document.write(a1);
</script>
</head>
<body>
</body>
</html>
//几个问题,1: document.write(a1+"<br>");写到for循环里面
//2:最后要运行函数
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Math </title>
<script type="text/javascript">
function math(){
for(var i=1;i<=10;i++){
var a1=Math.round((Math.random())*i);
document.write(a1+"<br>");
}
}
</script>
</head>
<body>
<input type="button" value="运行" onclick="math()">
</body>
</html>
先指出你没输出的原因:
首先,js中作用域只有函数作用域和全局作用域;全局作用域是不能访问局部函数作用域的,而你的a1是定义在math函数里面的for语句里面,相当于math的局部变量,在外面是无法访问的。
给你修改一下吧:
function math(){
var a1 = [];//定义一个数组对象,可以不定义长度,由后面代码决定开辟的空间
for(var i=0;i<=10;i++){//这里从0开始,数组下标从0开始的
a1[i]=Math.round((Math.random())*i);
}
return a1;
}
document.write(math());
math方法定义好了,却没执行,然后就是a1,是个局部变量(ps: 被两个花括号括起来了),不能直接在外面直接输出。你可以试试把外面的a1换成math()。最后做随机数时可以这样简单些:Math.round(Math.random()*10) 也就这样,我也是新手,大家一起努力。
除了楼上的问题,还有你是要返回一个数组吗?先用Array构造函数。如果不是数组的话,不需要for循环,给a1赋值10次毫无意义。
先不说其他的,单单 你的a1定义在for循环内部,就是局部变量,但是你用在了外面(return a1),就肯定是underfined了。
JavaScript进阶篇
468061 学习 · 21891 问题
相似问题