在计算机语言的学习过程中都避不开一个概念:函数。
直白一些说,函数就是一组实现某个特定功能的代码块。但不是所有牛奶都叫特仑苏,函数比起其他部分的代码不同的地方,在我看来,就是函数通常是可以复用的。
简单来讲,我要实现一个功能,而且在很多地方都要实现这个功能,那么我就可以把这个功能写成函数,在需要用到它的时候直接调用就可以了。
这样做能够极大地简化代码,减少重复率,降低耦合度。
Js中的函数有两种形式:声明式和赋值式。
声明式 :
函数声明的关键字 : function
function 关键字 和 var 关键字的行为几乎一致,都会在内存上开辟一块空间,用来存储变量之中的数据;
function 函数名( 条件 ){
代码
}
函数定义的规范:
函数名的首字母小写;
函数的命名规则和变量命名规则基本一致;
声明时不要漏掉函数的名字。
举例:一个简单的函数声明
function foo(){
console.log("hello world");
}
函数声明之后,并不会马上执行,而是等到程序中调用之后才会执行。
例如一个空调,开机后并不会立即工作,而当用户点击制冷后,才开始制冷;选择制热后,开始加热。
function foo( a ){
if( a === "制冷"){
console.log("室温变低了");//制冷功能
}
if( a === "制热"){
console.log("室温变高了");//制热功能
}
}
foo( "制冷" );//功能的调用
foo( "制热" );
赋值式 :
函数也可以是数据类型的一种,我们可以认为函数是一种数据。事实上,它也能为它赋值的对象返回特定值。在赋值式函数声明中可以没有函数名,这是与声明式不同的地方。
var sum=function(n1,n2){
return n1+n2;
}
需要注意的是,赋值式是无法被调用的,因为他的作用范围是局部的。
还有一个有趣的地方需要注意,两个赋值式函数哪怕看起来一样,其实也是不同的。
var foo1 = function(){}
var foo2 = function(){}
console.log(foo1 === foo2); // false;
虽然他们看起来是一样的,但他们在内存中占据的是不同的空间,所以他们并不相同。
函数调用有两种形式;
一是在js代码之中调用,就如前面的例子所示;另一种是浏览器在特定时机时调用,通常用于一些触发事件。
例如:
<button id="btn">你点我一下试试</button> <script> function foo(){ console.log("hello world"); } foo();//代码调用方式 btn.onclick = foo;//点击事件调用 </script>