1. 函数
1. 函数就是待执行的代码段 2. 使用 : 函数的声明 函数的调用 3. 语法 : function 函数名(参数列表){ 函数体; return 返回值; } 解释 : 1. JS中使用function关键字声明函数 2. 函数名自定义,命名规范参考变量的命名规范 3. 参数表示函数体执行所需要使用的数据,可以省略, 小括号不能省略 4. 函数体就是代码段,在函数调用时执行 5. return 表示返回值,用来返回给外界函数体执行的 结果.返回值只能写一个值,return后面不能再写代码, return后面的代码都不执行 6. 函数调用 : 函数名(实际参数); 练习 : 改版日期计算器 1. 闰年判断使用函数封装 2. 主体功能使用函数封装 3. 添加界面元素,通过按钮点击调用主函数 4. 作用 : 1. 封装代码段,实现某个功能 2. 实现代码的复用 5. 匿名函数 语法 : 1. var fn = function (){}; 定义变量保存函数地址,等同于函数名 调用 : fn(); 2. 匿名函数自执行 (匿名函数声明)(实际参数); 6. 函数内部对象(了解) arguments 伴随函数调用,自动产生,直接使用. 表示函数的实际参数,真正传入到函数内部的数据. 本身也是类数组结构2. 变量的作用域 1. 变量起作用的范围 2. 分类 : 1. 全局变量 在全局作用域,程序的任意地方都可以访问 2. 局部变量 在函数作用域中可以访问,出了当前函数,变量就无法 使用 3. 使用 : 1. 函数外部定义的变量,都是全局变量,任意地方都可以访问 2. 函数内部使用var关键字定义的变量,是局部变量,只在 当前函数作用域中起作用,外界无法访问 3. 函数内部省略var关键字定义的变量,都是全局变量 4. 作用域链 : 访问变量时,会首先在当前作用域中查找有无该变量, 有的话直接使用; 没有的话,到上一级作用域中查找, 上一级也没有,再向上查找... 直到全局作用域 形成从里向外链式查找3. JS 内置对象 1. 对象由属性和方法组成 2. 分类 : Array String RegExp Math Date... 3. Array 数组 1. 数组 : 是一种存储结构,可以存储一组数据,自动为每个 元素分配下标,默认从0开始 2. 语法 : 1. 字面量方式 var arr1 = [10,'20',true]; 2. new 关键字创建 //创建的同时初始化元素 var arr2 = new Array(10,20,30); //只传入一个number值,表示指定数组长度 var arr3 = new Array(5); 3. 使用 : 1. 数组元素的下标 : 默认为每个元素自动分配下标,取值范围 0 ~ length-1 2. length 属性 获取数组中元素个数 使用点语法访问对象的属性与方法 et : arr.length; 3. JS 中数组长度是可以动态修改的,可以向数组任意一个位置 插入元素,影响最终长度 4. 遍历数组 借助循环访问数组中每一个元素 1. 普通for循环 for(var i = 0; i < arr.length; i ++){ console.log(arr[i]); }for(var j = arr.length-1; j >= 0; j --){
console.log(arr[j]); } 2. for - in 了解 3. forEach() 了解 练习 : 1. 循环接收用户输入的数据,保存在数组中, 直到用输入exit表示结束,结束之后输出数组 2. 创建一个包含数值的数组,找这一组数据中的最大值 3. 创建只有3个数字的数组,按照从小到大排序后输出 5. 数组方法 1. toString(); 将数组元素转换成字符串输出,返回一个字符串 2. join() 将数组中元素拼接成一个字符串并返回 参数 : 可选,表示元素之间的连接字符 et : //指定元素之间的连接符,默认为逗号 var str3 = arr.join(""); console.log(str3); 3. reverse() 反转数组元素,以倒序形式重新排列数组元素 [10,20,30] -> [30,20,10] 返回值 : 返回转换后的数组, 方法会改变数组的原有结构,一旦调用方法, 数组本身就已经改变了,可以不接收返回值 4. sort() 对数组中元素排序,默认按照元素的Unicode码值升序 排列,改变数组原有的结构和顺序 返回值 : 返回排序后的数组,原数组也会改变. 参 数 : 可选,可以是自定义的排序函数 示例 : 针对number类型,从小到大排列 function sortASC(a,b){ return a-b; } arr.sort(sortASC); 解释 : 自动将数组中数据两两传入,比较大小, a-b 表示从小到大排列(按照字母表顺序或码值) b-a 表示从大到小排列 5. 数组的进出栈操作 栈与队列都是存储结构 特点 : 栈 : 只有一个出入口,数据按顺序存入,先进后出 队列 : 先进先出 数组采用栈结构存储 方法介绍 : 1. 操作数组尾部元素 1. push(data) 在数组的末尾添加元素,多个元素之间使用 逗号隔开 返回值 : 新数组的长度 注意 : 直接向数组添加元素,原始数组会被改变 2. pop() 移除数组末尾元素 返回值 : 返回被移除的元素 无参数 2. 操作数组头部元素 1. 在数组头部追加元素 unshift(); 参数 : 一个或多个元素 返回值 : 数组长度 2. 移除数组头部元素 shift(); 返回被删除的元素 无参数 练习 : 随意录入一个数字,转换成二进制并且输出 十进制转换二进制 : 对2取余,直至商为0,余数倒序排列 十进制 : 5 5 / 2 = 2 .... 1 2 / 2 = 1 .... 0 1 / 2 = 0 .... 1 十进制 : 9 9 / 2 = 4 .... 1 4 / 2 = 2 .... 0 2 / 2 = 1 .... 0 1 / 2 = 0 .... 1 二进制 1001 6. 二维数组 1. 数组中每个元素又都是数组 语法 : 一维数组 : [10,20,30] 二维数组 : [[1,2,3],[4,5,6],[7,8,9]] 2. 访问 : 语法 : 一维数组访问 : arr[0]; 二维数组访问 : arr[0][0]; 访问第一个内层数组中下标为0的元素 练习 : 声明包含若干数字的数组, 接收用户输入的数字, 遍历数组,查找数据,如果数组存在相应的数据,返回下标 不存在,返回-1并提示