学习JS的第五天之函数
其他学习笔记:点击前往
文章目录
前言
函数的概念,定义,调用,分类和变量的介绍。
一、函数
1、函数的概念
就是定义一次,就可以多次调用的代码。
2、函数的作用
提高代码的复用率:
以功能模块分离代码,提高可读性,建立模块化编程。
3、函数的定义
函数声明:
function 函数名(参数){
函数体 -- 要执行的代码块。
}
函数表达式:
var 变量名 = function(){
函数体
}
4、函数的调用
直接调用。
函数名(参数);
在函数内调用其他函数。
函数可以被自己调用:
递归
对象的方法
对象 . 方法名();
5、函数的参数
形参:
是在定义函数的时候使用的参数,可以理解为函数中需要用到的未知数(变量)。
实参:
调用函数的时候,给函数的形参传入的具体的值。
function 函数名(形参){
//函数名
}
//调用
函数名(实参);
参数不是必须的。
6、函数的返回值
希望调用函数后得到一个计算结果,
function 函数名() {
//函数体
return 值;
}
调用函数后,得到一个结果,所以可以将函数调用赋值给一个变量;
return 会直接结束函数的执行,后续代码不再执行。
7、函数的分类
根据是否有参数:
有参函数:有参数的函数
无参函数:没有参数的函数。
* 根据是否有 return
返回值函数
根据函数名字
具名函数:函数有名字
匿名函数:函数没有名字
对象方法
var 变量名 = function(){}
8、函数的arguments对象
该对象默认存在于函数内部。并且结构和数组结构类似。
调用函数的时候,传递的实参会保存在 arguments中。
当不确定形参数量的时候,就直接使用arguments替代形参。
由于auguments 类似数组,所以可以通过下标访问实参,可以使用for循环,但是不能使用数组方法。
二、变量
1、作用域
变量可以在哪个范围内可以使用。
2、变量的分类
全局变量:
在函数外通过var,let,const 声明得到的变量就是全局变量。
在函数内部没有通过关键字创建得变量。
全局变量可以在任意范围内访问和修改。
局部变量:
在函数中通过关键字 var,let,const 声明的变量就是局部变量。
局部变量只能在当前函数内部使用,外部无法访问。
3、变量的提升和函数的提升
通过 var 关键字声明的变量,都会在代码执行之前提升到当前作用域顶部。
变量提升只会将变量声明部分提升到当前作用域顶部,但是赋值操作不提升。
通过 function 声明的函数也会在代码执行之前提升到当前作用域顶部。
函数提升的优先级比变量高。
三、简单练习
1、编写一个函数,计算任意两个数字之间所能组成的奇数个数,数字必须是个位数
// 比如: 计算0-3之间能组成的奇数个是01、21、03、13、23、31
function two(n, m) {
for (var i = n; i <= m; i++) {
for (var j = n; j <= m; j++) {
if (i % 2 == 1) {
document.write(String(j) + String(i) + ',');
}
}
}
}
two(0, 3);
2、编写生成4位数字验证码的函数,并生成10次,同时将结果打印出来
function getCode(n){
n= n || 4;
var code = '';
for (var i = 0;i < n; i++){
code += Math.floor(Math.random() * 10);
}
document.write(code);
}
getCode(10);
3、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,请编写一个函数,传入原文,输出密文。
// 原数据 = 1479
// 拆成4位:1 4 7 9
// 分别+ 5:6 9 12 14
// 除10的余数:6 9 2 4
// 换位置(反转):4 2 9 6
// 千位 = parseInt(1479 / 1000)
// 百位 = parseInt((1479 - 千位 * 1000) / 100)
// 十位 = parseInt((1479 - 千位 * 1000 - 百位 * 100) / 10)
// 个位 = 1479 % 10
function moCode (num) {
var arr = [];
for (var i = 0;i < 4; i++) {
arr[i] = num % 10;
arr[i] += 5;
arr[i] %= 10;
num = parseInt(num / 10);
}
return arr.join('');
}
document.write(moCode(1479))
总结
要熟练使用函数,尤其是把函数封装。