1.函数是什么?---函数就是封装了一段可以被重复执行调用的代码块
目的:就是让大量代码重复使用
函数其实就抽取写好的js代码作为一个通用的代码块(封装)
2.作用:
①减少代码冗余(过多)
②方便调用(提供效率提高代码的可读性)
③便于维护(二次修改)
3.js有哪些函数:
系统函数 :就是系统自带的函数 alert()
内置函数(只需要调用):Math.pow() 属于Math对象的内置函数
自定义函数 :你自己写的函数 需要书写 再进行调用
4.函数带括号就是函数,函数没有调用时不会执行的
5.函数主要依赖function关键词进行定义 一般的函数名以fn开头
函数使用分为两步: 声明函数 和 调用函数
1.声明函数
function 函数名(){
//函数体
}
function sayHi(){
console.log('hi~~~')
}
(1)function 声明函数的关键字 全部小写
(2) 函数是做某件事情,函数名一般是动词
(3) 函数不调用,自己不执行
2.调用函数
函数名();
sayHi();
调用函数的时候千万不要忘记加小括号
1.函数可以重复相同的代码
function cook() {
console.log('麻婆豆腐');
}
cook();
2.我们可以利用函数的参数实现函数重复不同的代码
function 函数名(形参1,形参2...){ // 在声明函数的小括号里面是 形参 (形式上的参数)
}
函数名(实参1,实参2...); //在函数调用的小括号里面是 实参(实际的参数)
3.形参和实参的执行过程
function cook(aru) { // 形参是接受实参的 aru = '红烧大肘子' 形参类似于一个变量
console.log(aru);
}
cook('红烧大肘子')
cook('辣椒炒肉')
4.函数的参数可以有,也可以没有个数不限
参数的作用: 参数的作用:在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去。
函数形参实参个数匹配:
function getSum(sum1,sum2){
console.log(num1 + num2)
}
1.如果 实参的个数和形参的个数一直,则正常输出结果
getSum(1,2);
2.如果实参的个数多于形参的个数 ,会取到形参的个数
getSum(1,2,3);
3.如果实参的个数少于形参的个数 多于的形参第一位undefined 最终的结果就是NaN
形参可以看作是不用做声明的变量 num2 是一个变量但是没有接受值 结果就是undefined
getSum(1);NaN
返回值 return
函数返回值格式
function 函数名(){
return 需要返回的结果;
}
函数名();
1.我们函数只是实现某种功能,最终的结果需要返回给函数的调用者函数名()通过return实现的
2.只要函数遇到return 就把后面的结果返回给函数的调用者﹐函数名() = return后面的结果
return 后面的代码不会被执行 有终止函数的作用
return只能返回一个值。如果用逗号隔开多个值,以最后一个为准。
return 只能返回一个值
function fn(num1,num2){
return num1,num2;//返回的结果是最后一个值
}
console.log(fn(1,2)); //结果是返回 2
我们的 函数如果有r eturn 则返回的是 return 后面的值,
如果 函数 么有return 则返回 undefined
break ,continue,return 的区别:
break :结束当前的循环体(如for、while )
continue :跳出本次循环,继续执行下次循环(如for.while )
return :不仅可以退出循环,还能够返回return语句中的值,同时还可以结束当前的函数体内的代码
arguments的使用
arguments 展示形式是一个 伪数组, 因此可以进行 遍历。伪数组具有以下特点:
具有length属性
按索引方式储存数据
不具有数组的push , pop等方法
JavaScript作用域----就是代码名字(变量)在某个范围内起作用和效果
目的:就是为了提高程序的可靠性,,更重要的是减少命名的冲突
全局作用域
整个script标签或者是一个单独的js文件
var num = 10;
局部作用域(函数作用域)
在函数内部就是局部作用域这个代码的名字只在函数内部起效果和作用
function fn(){
var num = 10 ;
}
fn();
变量的作用域
粮据作用域的不同我们变量分为 全局变量 和 局部变量
全局变量:--在任何一个地方都可以使用,只有在浏览器关闭时才会被销毁,因此比较占内存
1.注意 如果在函数内部 没有声明直接赋值的变量也属于全局变量
2.在全局作用域下的变量 在全局下都可以使用
局部变量:--3.局部变量只能在该函数内部使用
1.注意 函数的形参也可以看作是局部变量
2.在局部作用域下的变量 或者 在函数呢不的变量就是 局部变量
从执行效率来看全局变量和局部变量:
(1)全局变量只有浏览器关闭的时候才会销毁,比较占内存资源
(2)局部变量当我们程序执行完毕就会销毁,比较节约内存资源
作用域链--内部函数访问外部函数的变量,采取的是链式查找的方式来决定取那个值这种结构我们称为作用域链(就近原则)
1.只要是代码,就至少有一个作用域
2.写在函数内部的局部作用域
3.如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域
4.根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链
代码:
var num = 10;
function fn() {
var num = 28;
function fun() {
console.log(num);
}
fun();
}
fn();