一、什么是函数?
当我们看到"函数"这两个字的时候,一定会想,它与数学上的函数有什么区别呢?
首先我们要知道,Javascript中的函数与数学上的函数不是一种东西。JS中的函数是一种通过调用来完成具体业务的一段代码块。最核心的目的是将可重复执行的操作进行封装,然后供调用方无限制的调用。说白了函数就是为了完成一定的功能的封装的语句体。
在程序设计中,可以将一段经常使用的代码"封装起来",在需要使用的时候直接调用,这种"封装"就是函数。
二、函数的分类
在javascript中,函数可分为两种,一种是自定义函数,另一种是系统内置函数,而系统函数里面还包括预定义函数。
预定义函数不属于任何对象,它们在使用时不需要通过任何对象来应用。它是一种全局函数,可直接使用。下面是一些常用的预定义函数。
1、eval() 将字符串转换成数字,可以直接执行Js代码
1、isNaN 用来计算一个参数以确定它是否为非数字,如果是NaN,则返回true,否则返回false,isNaN无法判断是否是NaN类型,只有值是true的时候,才能输出true,其他情况全部是false。因为isNaN()会先进行类型转换,然后再判断是否是NaN类型。
3、parseInt()/parseFloat() 将数字字符串转化为一个数值
4、isFinite() 用来确定参数是否是一个有限数值.也就是说,如果该参数为非数字NaN,正无穷数,或负无穷数,则返回false,否则返回true;如果是字符串类型的数字,将会自动关转化为数字型.
5、escape函数/unescape() 将字符串进行编码和解码,这样就可以在所有的计算机上读取该字符串。
三、自定义函数
定义函数:
function 函数名(){
函数体;
}
说明:
function 定义函数关键字,
“函数名” 是你给函数取的名字,
“函数体” 是为完成特定功能的代码。
函数声明后不会立即执行,会在我们需要的时候调用到。可以在某事件发生时直接调用函数(比如当用户点击按钮时),并且可由 JavaScript 在任何位置进行调用。
通过下面这段代码可以更好的理解
<script>
function eat(){
alert("正在吃饭");
}
eat();
</script>
上面的代码是定义了一个名为eat的函数,它执行的功能是通过下面的eat()调用函数,输出"正在吃饭"。这是第一种调用方法。对上边的eat()函数还可以用第二种调用方法。
<button onclick="eat()"></botton>//放在<body>标签内
四、带参函数
带参函数就是能传递参数的函数,在执行函数时需要接受某个值。只有在调用它的时候传递值函数才能够执行。
函数的参数可以为一个或者多个。调用一个函数时所传入的参数为实参,实参决定着形参真正的值。
下面是带两个参数的函数,param1和param2
function testFun(param1, param2) {
console.log(param1, param2);
return 返回值
}
接着我们调用testFun:
testFun("Hello","World");
我们传递了两个参数, "Hello"
和 "World"
。在函数内部,param1
等于“Hello”,param2
等于“World”。请注意,testFun
函数可以多次调用,每次调用时传递的参数会决定形参的实际值。
注意:
1.参数列表:表示函数的输入
2.函数主体:表示为了实现某一功能代码块
3.函数可以有返回值,也可以没有 return 进行返回
五、匿名函数
匿名函数就是没有名字的函数
它的定义形式如下:
function(){
函数体;
}
可以看出,它和普通函数的区别在于它没有函数名。它可以通过下面的方式输出。function前面的波浪线可以替换成其他字符。如"+","-"等
<script>
~function(){
alert("匿名函数");
}();
</script>
六、作用域
局部变量:在函数内部声明的变量,在函数外部并不能访问
function fun(){
var a = 10;
}
console.log(a); //报错
全局变量:函数外部声明的变量,在函数内部可以访问。
var a = 10;
function fun(){
console.log(a);
}
fun(); //输出10