JavaScript函数的认识和了解
函数
1.函数的概念和作用
什么是函数
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。函数可以封装一段JavaSript代码,它只定义一次,但可以被执行或调用任意多次
函数的作用有哪些?
使程序变得简洁清晰
易于代码维护
提高了代码的复用性,提高程序开发的效率(就是封装一段代码,将来可以重复使用)
2.函数的定义
第一种创建函数的方式: function 函数名(参数1,参数2,...){ 函数体; } 第二种创建函数的方式: var fn=function(参数1,参数2,...){ 函数体; }; 第三种创建函数的方式: var fn=new Function('a','b','alert(a*b)');
注意:
函数声明的时候,函数体并不会执行,当函数被调用的时候才会执行。
3.函数的命名
函数的命名需遵循的规则:
函数命名遵循标识符命名的规则 标识符:变量、函数、属性的名字,或者函数的参数名 a、以$、下划线或字母开头 b、其余位是字母、下划线和数字和$ c、不能是js关键字和保留字 d、严格区分大小写
驼峰命名法
首字母小写,后面单词的首字母需要大写。例如:userName、userPassword
4.函数的调用
调用函数的语法:
函数名();
调用函数的位置:
1. 在script标签里面 函数名(参数) 2. 在html标签里通过事件调用,例如 onclick = '函数名(参数)'
注意:
函数体只有在调用的时候才会执行,调用需要()进行调用。
可以调用多次(重复使用)
代码示例:
// 声明函数 function sayHi() { console.log("吃了没?"); } // 调用函数 sayHi(); // 求1-100之间所有数的和 function getSum() { var sum = 0; for (var i = 0; i < 100; i++) { sum += i; } console.log(sum); } // 调用 getSum();
5.函数参数
思考:为什么要有参数?
function getSum() { var sum = 0; for (var i = 1; i <= 100; i++) { sum += i; } console.log(); } // 虽然上面代码可以重复调用,但是只能计算1-100之间的值 // 如果想要计算n-m之间所有数的和,应该怎么办呢?
函数有了参数,才有灵魂,可以实现多次重复使用了。
在调用函数时,您可以向其传递值,这些值被称为参数。
这些参数可以在函数中使用。
您可以发送任意多的参数,由逗号(,)分割:
语法:
// 函数内部是一个封闭的环境,可以通过参数的方式,把外部的值传递给函数内部 // 带参数的函数声明 function 函数名(形参1, 形参2, 形参...){ //函数声明 // 函数体 } // 带参数的函数调用 函数名(实参1, 实参2, 实参3);
1)形式参数(形参)
形式参数:在声明一个函数的时候,为了函数的功能更加灵活,有些值是固定不了的,对于这些固定不了的值。我们可以给函数设置参数。这个参数没有具体的值,仅仅起到一个占位置的作用,我们通常称之为形式参数,也叫形参。
2)真实参数(实参)
实际参数:如果函数在声明时,设置了形参,那么在函数调用的时候就需要传入对应的参数,我们把传入的参数叫做实际参数,也叫实参。
function fn(a, b) {//a和b是形参 console.log(a + b); } var x = 5, y = 6; fn(x,y); //x和y是实参 //x,y实参,有具体的值。函数执行的时候会把x,y复制一份给函数内部的a和b,函数内部的值是复制的新值,无法修改外部的x,y
总结:形参就是函数定义时候用的,实参是在函数调用时候用的。
- arguments(只在函数里面有效)
JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。也就是说所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有的实参。arguments是一个伪数组,因此及可以进行遍历
6.函数返回值(return)
当函数执行完的时候,并不是所有时候都要把结果打印。我们期望函数给我一些反馈(比如计算的结果返回进行后续的运算),这个时候可以让函数返回一些东西。也就是返回值。函数通过return返回一个返回值
返回值语法:
//声明一个带返回值的函数 function 函数名(形参1, 形参2, 形参...){ //函数体 return 返回值; } //可以通过变量来接收这个返回值 var 变量 = 函数名(实参1, 实参2, 实参3);
函数的调用结果就是返回值,因此我们可以直接对函数调用结果进行操作。
返回值注意点:
如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined
如果函数使用 return语句,那么跟再return后面的值,就成了函数的返回值
如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值也是:undefined
函数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,也就是说return后面的所有其他代码都不会再执行。
推荐的做法是要么让函数始终都返回一个值,要么永远都不要返回值。
7.变量的作用域
在JS当中一个变量的作用域(scope)是程序中定义这个变量的区域。
变量分为两类:全局变量的和局部变量。
其中全局变量的作用域是全局性的,即在JavaScript代码中,它处处都可以使用。而在函数之内声明的变量,就只在函数体内部可以使用。它们是局部变量,作用域是局部性的。
变量的作用域:变量的作用范围
全局变量:全局变量就是定义在函数外部的变量,在当前文件内有效
局部变量:局部变量就是定义在函数内部的变量,这个变量只能在函数内部使用
8.域解析
-
定义变量的时候,变量的声明会被提升到作用域的最上面,变量的赋值不会提升。
-
函数提升
JavaScript解析器首先会把当前作用域的函数声明提前到整个作用域的最前面。
扩展(警告:以上内容未掌握前,勿看)
自调用函数
函数声明的同时进行调用,这种函数只能使用一次。
(function () { alert(123); })();
函数是一种数据类型
function fn() {} console.log(typeof fn);
- 函数作为参数
因为函数也是一种类型,可以把函数作为另一个函数的参数,在另一个函数中调用
- 函数做为返回值
因为函数是一种类型,所以可以把函数作为返回值从函数内部返回
function fn(b) { var a = 10; return function () { alert(a+b); } } fn(15)();
- 领域驱动设计(1)认识了解什么是领域驱动
- ART深入浅出2 -- 认识和了解Runtime Options
- 认识oracle以及创建用户和了解数据类型!
- 通过了解MySpace的六次重构经历,来认识分布式系统到底该如何创建.
- 认识solr结构,了解核心的文件目录和相关的配置文件
- 通过了解MySpace的六次重构经历,来认识分布式系统到底该如何创建.
- QNX分布式实时操作系统初步认识-QNX系统了解认识
- mysql初步认识,了解mysql中的基本数据类型
- JavaScript函数深入了解
- iOS第三天认识及了解注意
- 面试题:谈谈你对spring 的了解以及spring 中DI、AOP、IOC 的认识
- 先作较小规模的投资,借以加深对有关业务的了解,并在当地积累经验和建立人脉网络,增加对监管架构的认识
- 从头认识java-14.2 进一步了解数组
- 认识solr结构,了解核心的文件目录
- Android初试--认识3G了解智能手机系统
- 认识solr结构,了解核心的文件目录
- c语言程序的了解及认识.(150206226贾鸿飞)
- JAVA新手入门--对数据类型/标识符/包等概念的初步认识与了解
- MQ、JMS以及ActiveMQ的了解和认识