javaScrip第五天(1)

06JavaScript基础

核心知识点

  1. 函数
    2. 函数中的参数
    2. 函数中的返回值

今日学习目标

  1. 能够完成函数相关案例
    2. 能够理解函数中的参数
    2. 能够理解函数中的返回值

函数

为什么要学函数?

 1.1100之间的数字之和

什么是函数?

函数的概念

  函数: 可以封装一段特定功能代码,然后通过函数名调用,实现对该段代码重复使用

函数的作用

实现代码的重复使用。
✔ 对分散代码整合(封装)
✔ 重复使用

创建函数

方式一: 函数声明及执行方式(推荐)

☞ 函数的声明:

function  自定义函数名() {

具体的功能代码

}
注意:
	 1. 由于函数是用来实现某种特定功能代码,所以一般我们设置函数名的时候,以动词开始。
     2. 函数不能自己执行代码,需要通过函数名调用实现代码的执行

☞ 调用函数(执行函数)

函数名();  //函数的调用

方式二:函数表达式(字面量)及执行方式(了解)

var  fn = function () {

}   

fn();

课堂一练

1. 将比较数字大小封装到一个函数中
2. 写一个函数,求1-100之间所有数的和
3. 通过函数方式实现:判断一个数字是基数还是偶数
4. 通过函数的方式实现: 在页面中打印一个10行直角三角形
5. 格式化日期的封装    yyyy-mm-dd  hh:mm:ss

函数的参数

 思考: 利用函数如何计算任意两个数字之和?

形参

在 函数创建时,在小扩号中定义的变量

语法:
function 函数名(形参,形参,形参...) {//形参,就是一个占位符,命名规则和规范和变量一样
	//函数体
}

注意:
	  1 函数也可以做为参数进行传递

实参

实参,在函数调用时,在小扩号中所传入的实际的数据。

语法:
函数名(数据,数据,数据...);   //实参,就是实际的数据

课堂一练

☞ 求 n - m 之间的数字之和    

☞ 求圆的面积  (3.14 * r*r)

☞ 求3个数中的最大值  

☞ 判断一个数是奇数还是偶数  

☞ 求5个数的总和

函数的返回值

 思考: 如何在函数外面获取到上面代码计算出的任意两个数之和?

返回值:函数执行完后,可以把执行的结果 通过 return 语法 返回给 调用者

function add(num1,num2){
//函数体
return num1 + num2; // 注意:return 后的代码不执行
}
var resNum = add(21,6); // 调用函数,传入 两个实参,并通过 resNum 接收函数返回值
alert(resNum);// 27

注意:
    1. 如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined
    2. 如果函数中写了return语句,后面没有写任何其他内容,那么函数的返回值依然是 undefined
    3. 一个函数只能有一个返回值
    4. return 代码执行完成后,后面的代码不再执行
    5. 函数也可以作为返回值(理解)

课堂一练

1.获取数组中最大值,并返回

2.将一个数组中所有偶数添加到一个新数组中返回,并计算新数组总和。

 3 写一个函数,判断是否是闰年【能被4整除且不能被100整除,或者能被400整除】

课后练习

1. 写一个函数,实现对数字数组的排序。
2. 写一个函数,用户输入任意两个数字,获取最大值并返回 

统计班级学生就业薪资,计算总薪资 和 平均薪资。

统计班级学生就业薪资,计算薪资超过15000的人的个数。

给一个不重复的数字数组,求最大值和最大值的在数组中的位置

给一个字符串数组,将数组中的每一个数据拼接在一起,每个数据之间用 | 符合拼接。 如: ‘张三|李四|王五’

给一个数字数组,该数组中有很多数字0,将不为0的数据存入到一个新的数组中

函数其他部分

arguments的使用

☞ 思考: 
	 1. 如果一个函数的参数个数不确定该如何获取?
     2. 演示console.log()中不同个数参数的效果
     3. 介绍arguments对象
     
☞ 通过 arguments获取到函数参数的个数 【不确定函数到底有多少个参数】

☞ 总结:
	 1. 如果函数参数不确定,可以定义函数的时候不写参数,通过arguments获取
     2. 如果函数的参数确定,那么推荐定义函数的时候写参数
     
课堂案例:
 1. 求任意个数中的最大值
 2. 求任意个数的和

匿名函数和自调用函数

☞ 匿名函数: 没有函数名的函数
例如:
var  fn = function () {
    
}
☞总结:
	 1. 匿名函数不能单独使用
      2. 可以将匿名函数赋值给一个变量
      3. 可以让匿名函数自己调用自己(自调用函数【匿名函数】)


☞ 自调用函数: 函数封装好,立即执行。
	总结:
        1. ( function () {} )(); 
☞ 函数属于一种数据类型  
☞ 函数作为参数
☞ 函数可以为返回值

函数作用域及局部变量

作用域

☞ 思考: 在函数内部定义的变量,在函数外部能否访问该变量

作用域: 变量或者函数可以起作用的区域

◆ 全局作用域(全局变量)
 1,在script标签中或者js文件中定义的变量,在任何地方都可以访问
   
   2,在函数内部声明变量不使用var关键字 (不建议使用)
   
◆ 局部作用域(局部变量)
	  1, 在函数内部定义的变量
	  2, 局部变量只能在定义变量的函数中使用
   
◆ 块级作用域 (目前所学版本没有,新版本语义中有块级作用域)
    {
       块级作用域
    }  
 	   1. 本质上块级作用域中的变量在外部不能访问
       2. 但是在js中可以访问块级作用域的变量(证明js没有块级作用域)

全局作用域(全局变量)

声明在所有函数外部的变量,可以所有地方使用

局部作用域(局部变量)

声明在某个函数内部的变量或函数的形参,只能在函数内部使用

作用域链

作用域链:
	当访问一个变量时,会先从本作用域中去找这个变量,若找不到则向上一级作用域中去找,依次类推,就形成了一个作用域链。

作用域链面试题

☞ 分析代码执行结果
 	var a = 1;
    function fn1(){
      var a = 2;
      function fn2(){
          console.log(a);   //a的值 
      }
      fn2()
    }
    fn1();

 ☞ 分析代码执行结果
 	function  f1 () {
        var num = 123;
        function f2 () {
            console.log( num );
        }
        f2 ();
    } 
    var  num = 456;
	f1();

代码预解析

☞ 代码在执行前会进行预解析。
	1. 变量声明提升,把变量提升到当前作用域的最上面,不包括赋值
    2. 函数声明提升,把函数提升到当前作用域的最上名,不包括函数的调用

你可能感兴趣的:(Javascript)