3.2 将值传递给函数
常常需要获得一些信息并将它交给函数使用。这称为将信息传递(pass)给函数。例如,看一下这个函数定义:
function playBall(batterup)
变量batterup是函数的参数。当调用函数时,可以将数据传递给函数。当处于函数内部时,此数据就保存在batterup变量中。可以向函数传递需要使用的任何数据,包括文本字符串、数字甚至其他JavaScript对象。例如,可以通过batterup变量传递文本字符串形式的玩家名称("Mantle"),或者他在玩家中的编号(7);但是将这两种形式混合使用是非常糟糕的想法,除非你确实知道自己在做什么。与所有变量一样,应该给用作函数参数的变量起合适的名字,这个名称应该能够说明变量的用途。
在一个函数中可以有多个参数。只需将它们放在圆括号中并用逗号分隔:
function currentScore(hometeam,visitors)
我们要强调,参数是变量,所以在调用函数时可以向它们传递不同的值。所以,下面这三个代码片段是等效的:
currentScore(6,4);
var homeScore = 6;
var visitingScore = 4;
currentScore(homeScore,visitingScore);
currentScore(6,3+1);
对于这三个示例,在currentScore()中,hometeam的值都是6,visitors的值都是4。
在这个示例中,我们将对脚本3-3做一些调整,从newCard()函数中去掉一些计算,将它们转移到一个带参数的函数中,这样代码的作用就更清晰了。产生的脚本见脚本3-4。
脚本3-4 通过将值传递给setSquare()函数,脚本更容易阅读和理解了
window.onload = newCard;
function newCard() {
for (var i=0; i<24; i++) {
setSquare(i);
}
}
function setSquare(thisSquare) {
var currSquare = "square" + thisSquare;
var newNum = Math.floor(Math.random() * 75) + 1;
document.getElementById(currSquare). innerHTML = newNum;
}
将值传递给函数的步骤如下:
(1) setSquare(i);
这行代码在newCard()函数中。我们将i的值传递给setSquare()函数。
(2) function setSquare(thisSquare) {
这定义了setSquare()函数,传递给它的是我们要更新的当前格子的编号。我们传递的是循环变量i。当函数接收这一数据时,数据保存在参数thisSquare中。可以这样理解:将i传递给函数,用这一数据填充参数thisSquare,但是函数实际上看不到i。在函数内部,它只知道thisSquare。
(3) var currSquare = "square" + thisSquare;
为了使脚本后面的getElementById()调用更清晰,我们创建并设置一个新变量:currSquare。这是要处理的当前格子的id。它将文本字符串square和thisSquare变量连接起来。
(4) document.getElementById(currSquare). innerHTML = newNum;
这一行找到具有currSquare指定的id的元素,并让它显示newNum。







