目录
十六、引用类型(复杂数据类型)和值类型(简单数据类型)的区别
十、数组
1.定义数组
- 语法:var arr = [] (定义一个空数组)
- 数组中可以放任意类型的数据,如字符串、数字、布尔值等
2.数组存值
- 数组中的数据使用索引管理,数组中的数据索引是从0开始
- 如果一开始就知道数组,可以直接存储数据 如:var arr = [91,88,72,45,63];
- 可以通过修改数组索引的方式追加数组元素
3.数组取值
- 语法: 数组名[索引号]
- 没有索引相对应的数组元素的时候,输出的结果为undefined;
4.数组长度
- 数组的长度是元素个数,跟索引号没有关系
- arr.length动态监测数组元素的个数
5.遍历数组
- 指把数组中的每个元素从头到尾都访问一次
- 使用for循环来实现遍历数组,循环初始化从0开始,输出的时候用循环计数器当索引号来使用
十一、函数
1.概念
函数的作用就是封装一段代码,将来可以重复使用。
2.函数的使用
(1)声明函数
- 语法:
function 函数名 (形参){函数体}
- 由于函数一般时为了实现某个功能才定义的,所以通常将函数名命名为动词
(2)调用函数
- 语法:函数名();
- 声明函数本身并不会执行代码,只有调用函数时才会执行的函数体代码
(3)函数的参数
- 形参:形式上的参数 函数定义的时候传递的参数
- 实参:实际上的参数 函数调用的时候传递的参数
- 参数的作用:在函数内部某些值不能固定,可以通过参数在调用函数时的传递不同的值进去
(4)函数的返回值return
- 语法:return 需要返回的结果
- 函数最终的结果需要返回给函数的调用者,通过return实现
- 只要函数遇到return就把后面的结果返回给函数的调用者 函数名()=return后面的结果
- return语句终止函数执行
- return只能返回一个值,如果逗号隔开多个值,以最后一个为准。
- 函数没有return的时候返回的值是undefined
(5)函数书写的两种方式
- 函数声明
function 函数名 (形参){函数体}
- 函数表达式
var 函数名 = function(参数){数体}
//等号后面这段称之为匿名函数
(6)自调用函数
- 语法:
(function () {
函数体
})()
- 用来写一些为了避免变量污染的代码
3.arguments
- 只有函数才有arguments对象
- arguments获取所有实参,是伪数组,并不是真正意义上的数组
- arguments有length属性,但没有真正数组的一些方法
十二、作用域
1.概念:就是代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性,更重要的是减少命名冲突;
2.分类
(1)全局作用域:整个script标签或者是一个单独的js文件
- 全局变量:
在任何一个地方都可以使用
在全局作用域下var声明的变量就是全局变量
特殊情况下,在函数内不使用var声明的变量也是全局变量(不推荐使用)
(2)局部作用域:在函数内部就是局部作用域
- 局部变量:
只在函数内部使用
在函数内部var声明的变量是局部变量
函数的形参实际上就是局部变量
3.作用域链:内部函数访问外部函数的变量,采取的是链式查找的方式来决定取哪个值,这种结构称为作用域链
十三、预解析
1.JS解析器在运行代码的时候分为两步:预解析和代码执行
2.预解析js引擎会把js里面所有的var和function提升到当前作用域的最前面
3.预解析分为变量预解析(变量提升)和函数预解析(函数提升)
- 变量提升不提升赋值操作
- 函数提升不调用函数
十四、对象
1.概念:对象是由属性和方法组成的 数据类型为object
2.字面量初始化对象:
var obj = {
属性名:值
}
3.利用new Object创建对象
语法:
var obj = new Object();
obj.uname = '张三疯';
obj.age = 18;
4.使用对象
(1)调用对象的属性
对象名.属性名
对象名['属性名']
(2)调用对象的方法:
对象名.方法()
5.遍历对象
(1)语法:
for(var key in obj){
}
(2)作用:对对象的属性进行循环操作
6.构造函数创建对象
(1)语法:
function 构造函数名() {
this.属性 = 值;
this.方法 = function () { }
}
var obj = new 构造函数名();
(2)关键字’new‘在构造函数创建对象中执行过程:
- new在内存中创建一个新的空对象
- 让this指向这个新的对象
- 执行构造函数里面的代码,给这个新对象添加属性和方法
- 返回这个新对象(所以构造函数里面不需要return)
十五、内置对象
1.数学对象Math
(1)获取随机数
- 语法:Math.random()
- 这个方法获取到的随机数范围是[0,1),乘以一个系数便可获取相应范围的随机数
(2)对浮点数取整
- 向下取整:Math.floor();
- 向上取整: Math.ceil();
- 四舍五入取整:Math.round(x)
(3)Math.abs(x) 求一个数的绝对值
(4)Math.max(x,y...) 求多个数字中的最大值
(5)Math.min(x,y...); 求多个数字中的最小值
2.Date内置对象
- Date对象是一个构造函数,必须使用new来调用创建
(1)创建Date对象:
var date = new Date();
(2)获取时间的各个部分:
// 获取年份
var year = date.getFullYear();
// 获取月份 , 得到的月份是从0开始的 ,使用 0-11 表示 1-12 月
var month = date.getMonth();
// 获取天
var day = date.getDate();
// 获取小时
var hour = date.getHours();
// 获取分钟
var minute = date.getMinutes();
// 获取秒数
var second = date.getSeconds();
//获取毫秒 0-999
date.getMilliseconds();
//返回距 1970 年 1 月 1 日之间的毫秒数
date.getTime()
//生成一个指定的日期
//传入不同的年月日时分秒
var d1 = new Date(2020,0,1,8,30,59);
//传入一个指定的字符串
var d2 = new Date('2020-01-01');
传入一个 大的数字 -- 从1970年1月1日开始到某个日期的总共的毫秒数
var d3 = new Date(1378594320999);
3.Array对象
(1)push
- 作用:往数组最后添加新成员
- 返回值:为操作后数组的长度
(2)pop
- 作用:从数组最后删除成员
- 返回值:为被删除的成员
(3)unshift
- 作用:往数组最前面添加新成员
- 返回值:为操作后数组的长度
(4)shift
- 作用:从数组最前面删除成员
- 返回值:为被删除的成员
(5)reverse
- 作用:反转数组
- 返回值:翻转后的数组
(6)splice(index,n)
- 作用:用来删除数组中几个元素,并且用参数列表中声明的一个或多个项,来替换那些被删除的元素
- 返回值:切割掉的元素
(7)slice(start,end)
- 作用:切割数组
- 返回值:切割掉的元素
(8)join
- 作用:将数组成员通过一个分隔符合成字符串
- 返回值:合成的字符串
(9)indexOf
- 作用:返回数组中元素第一次出现的索引值
(10)forEach
- 语法:
arr.forEach(function(item,index){
item 是数组里面的每个元素
index 是数组的每个索引
})
- 作用:对数组进行遍历循环,通过item,index获取每一轮循环当中的数组元素和索引
(11)filter
- 作用:循环遍历数组,过滤出满足条件的元素,放到一个新的数组里面
- 语法:
var result = arr.filter(function(item,index){
return 条件
});
4.String内置对象
(1)charAt
- 作用:获取字符串中某个字符
- 返回值:返回的字符
(2)indexOf
- 作用:返回字符串中元素第一次出现的索引值
(3)substring
- 作用:截取字符串
- 用法: substring(start,end)
(4)substr
- 作用:截取字符串
- 用法: substr(index,n)
(5)转大小写
- toUpperCase() 字符串转大写
- toLowerCase() 字符串转小写
(6)replace
- 用法:replace("要被替换的字符",替换的字符)
- 返回值:返回一个新字符串
(7)split
- 是一种分割字符串的方法,这个方法分割字符串后,会以一个数组的方式把所有的数字给我们
- 语法:字符串.split(指定分隔符)
十六、引用类型(复杂数据类型)和值类型(简单数据类型)的区别
1.值类型和引用类型:
- 值类型(简单数据类型):string,number,boolean,undefined,null
- 引用类型(复杂数据类型): Object,Array,Date
2.区别
- 基本数据类型的值,赋值后相互不会影响。
- 引用数据类型的主要特点是赋值方式是传址,并且值存在堆中。引用数据类型的值,赋值后相互影响