2011-08-29 185 views
2

我是JavaScript新手。我正在学习它,但我不理解“带参数的功能”。为什么一个功能需要一个“参数”&我们如何知道这个功能需要一个“参数”。你能否给我提供一个链接,我可以从中学习基本的所有JavaScript &我想要一个链接,提供所有包含细节的小型JavaScript程序。将参数传递给函数

+0

可能重复的[最佳资源学习JavaScript(http://stackoverflow.com/questions/11246/best-resources-to-learn-javascript) –

+0

我不同意。这不是一个确切的副本。 @Suraj –

回答

2

如果函数的输出基于某些输入值,则函数将需要参数。举例来说,如果你要编写一个函数,将两个数相加在一起:

function adder(a, b) { 
    return a + b; 
} 

我知道,这个功能有一个名为ab两个参数,因为我可以在函数名后的定义看出来:adder(a, b) 。我需要“传递”两个号码,以该功能为它产生良好的输出,就像这样:

adder(2, 3); // returns 5 

如果我不把它传递两个数字,返回的结果将是NaN,因为函数的参数将是undefined

adder(); // a = undefined, b = undefined, returns NaN 
adder(7); // a = 7, b = undefined, returns NaN 

欲了解更多有关学习JavaScript,一个去的地方就是MDN guide

0

我推荐查看此页http://www.w3schools.com/js/js_functions.asp

我会在我的方式中加几句话。

例如,我们想改变页面

的背景颜色,我将创建一个这样

function changeBG(whichColor){ 
document.bgColor = whichColor; 
} 

所以功能,我可以打电话从点击按钮功能(红色按钮) - onclick="changeBG('red');" 一样,我可以打电话与差异参数方法(例如onclick="changeBG('green');" 我们可以重复使用相同的代码,当我们需要它。

1

有的功能不需要参数。所有的功能都是由2个要领部分:

  • 的实现 - 这是函数的实际代码,它做什么。
  • 接口 - 将它连接到“外部世界”,也就是程序的其余部分。

参数是接口的一部分,你可以传递参数给你的功能,以帮助其实现对总体方案的目标。


考虑以下(理论)例如:

比方说,我想打一个TV操作程序。我想定义一种切换频道的方法。

function switchChannel() { /* do some stuff */ } 

但是,你会问自己的第一件事是什么?用户想要更改哪个频道? 这是接口问题,所以为了包括在我们的功能,我们会做这样的事情:

function switchChannel(channelNum) { /* do some stuff */ } 

当我打电话的功能,我将最有可能做到这一点,像这样:

switchChannel(24); 

即24 将被传递到所述channelNum参数switchChannel()功能的内部。

所以完整的示例代码:

function switchChannel(channelNum) { alert(channelNum); } 
switchChannel(24); 

结果将与


这是它的主要内容一个警告,希望这有助于您:)

0

这不是特定于JavaScript。

所有编程语言都具有需要参数的功能。

实际上,所有功能都有参数。一个函数就像你在数学课上学到的一样:你给它一个输入值,它给你一个输出值。

带“无参数”的函数实际上有0个参数。就其本质而言,它只能返回一个值(除非它正在访问外部变量,这是非常糟糕的形式)。

例如:

function sum0() {   // <-- "no" parameters/arguments 
    return 0; 
} 
function sum1(x0) {   // <-- 1 parameters/arguments 
    return x0; 
} 
function sum2(x0, x1) {  // <-- 2 parameters/arguments 
    return x0+x1; 
} 
function sum3(x0, x1, x2) { // <-- 3 parameters/arguments 
    return x0+x1+x2 
} 

(当然,你永远不会写这些功能,他们是可怕的,重复的,我们写的功能,必须避免重复的东西全部原因实际执行的总和。函数,你可以传入一个数组作为单个参数,或者做return arguments.reduce(sum2)

没有参数的函数有时被称为“thunk”,因为它不需要处理新的信息。这是“已经思考”。例如:

function firstNPrimes(n) { // 1 parameter, not "thought out" 
    // sieve of Eratosthanes goes here 
} 

说我们现在想要一个功能firstFivePrimes。我们有很多方法,我们可以这样做:

function firstFivePrimes() { // no parameters, already "thought out" 
    return firstNPrimes(5); 
} 

但是它已经是“深思熟虑的”,所以我们只能预先计算的话,或者在后台计算的话:

function firstFivePrimes() { // no parameters, already "thought out" 
    return [2,3,5,7,11]; 
} 

两个假设你没有访问全局变量(可怜的形式),实现是相同的。

下面是一个总是返回相同值的“thunk”:一个函数!

function makeCounter() { 
    var i = 0; 
    return function() { 
     console.log(i++); 
    } 
} 

实施例:

> counter = makeCounter() 
> counter() 
0 
> counter() 
1 
> counter() 
2 
> anotherCounter = makeCounter() 
> anotherCounter() 
0 
> anotherCounter() 
1 
> counter() 
3 
> anotherCounter() 
2