js基础--javascript基础概念之函数

引用w3c介绍:

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。

JavaScript 函数语法

函数就是包裹在花括号中的代码块,前面使用了关键词 function:

function functionname()

{

这里是要执行的代码

}


当调用该函数时,会执行函数内的代码。

可以在某事件发生时直接调用函数(比如当用户点击按钮时),并且可由 JavaScript 在任何位置进行调用。

提示:JavaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。

=========

函数

函数对任何语言都是一个核心的概念。因为可以通过函数封装多行语句。然后再不同的地方调用执行它,简化了代码量。提高了可读性。

在ECMAScript 中 使用function 关键字来声明函数。后跟一组参数以及函数体。函数的基本语法如下:

function functionName(arg1,arg2,arg3……argN){
//执行语句
}

示例:

function sayHi(Message,Name){
alert('hi  '+Name+'  '+Message);
}
sayHi('welcome','kin');

上面定义了一个名为sayHi的 函数,函数有两个参数。Message  Name  函数的功能是弹出欢迎的警告框。


下面调用函数时向函数传入了两个值。值赋给了函数。函数执行。

另外函数还可以有返回值。函数可以通过return 语句后跟要返回的值,如:

function welcome(Name){
return 'hi  '+Name+'  Welcome';
}
var say = welcome('kin');
alert(say);



函数中使用return 语句将值返回。函数中只有return 关键字可以实现返回值。使用了return 语句后的代码不会执行。如:

return 'hi  '+Name+'  Welcome';


alert('在return后面的语句将不会执行');//永远不会执行。因为return已经强制退出函数了。


难道一个函数中只能存在一个return语句? 当然不是  只有当函数内的return语句被执行才会终止函数。这样你就可以像下面那样 一个函数中包含多个return函数了;

function Contrast(v1,v2){
if(v1 > v2){
return v1;
}else{
return v2;
}
}//因为条件只会满足一个return语句。
var Max = Contrast(15,20);
alert(Max);



关于函数返回值。一个函数中要么始终有一个返回值。要么始终都没有返回值。否则,会给调试函数带来很多的不便。


另外函数可以不带返回值。做到终止程序的目的

function Contrast(v1,v2){
if(v1 > v2){
return;//return不带任何返回值来做到终止函数运行的目的
}else{
return v2;
}
}


函数命名和变量命名几乎一样。函数名中不能使用eval 或arguments 参数名中亦是如此。


函数参数


ECMAScript 中的参数与其他语言有微微不同。ECMAScript 不会介意你传递进入多少函数。不会介意传入的类型。因为函数接受到始终是一个数组而已,它才不管你那么多呢!函数接受到的参数使用一个数组来保存。因此,在函数体内想访问这些参数,还有一个方法,访问这个保存参数的数组。


保存这个数组的是一个叫arguments 的对象。

它很类似于数组。但是确实是一个object实例,不是array实例。但是你依然可以使用[]来访问对象里面的每个元素。如:


 function Contrast(v1,v2){
alert(arguments[0]);//12
alert(arguments[1]);//22
alert(arguments[2]);//undefined  没有传递值的元素默认是undefined
}
Contrast(12,22);

还可以使用length来准确的查看传入了多少个参数。

alert(arguments.length);



因此EMCAScript可以不显式的使用参数如:

function fun(){
var v = 0;
for(var i = 0;i<arguments.length;i++){
v = v + arguments[i];
}
return v;
}
alert(fun(10,20,30,40));//100



这是EMCAScript 的一大特点。命名的参数只是提供便利。但不是必需的。


没有重载

EMCAScript 不能像传统意义上那样实现重载。因此,如果在javascript中定义了两个名字一样的函数,则改名字只属于后者。如。

function Sum(v1,v2){
return v1 + v2;
}
function Sum(s1,s2){
return s1 - s2;
}
alert(Sum(20,10));//10 调用了后面一个Sum函数。



参数亦是如此:

function Sum(v1,v1){
return v1 + v1;
}
alert(Sum(20,40));//80


传进来的两个v1 后者会被函数中使用;


但是你通过arguments 这个对象来访问则使用的是两个参数。因为传入的参数数组中写入的就是两个参数值。

function Sum(v1,v1){
return arguments[0] + arguments[1];
}
alert(Sum(20,40));//60