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并提示