1、数组
// 创建一个空数组
var arr1 = [];
// 多个数组项以逗号隔开
var arr2 = [1, 3, 4,'a'];
// 可以通过数组的length属性获取数组的长度
console.log(arr3.length);
// 可以设置length属性改变数组中元素的个数
arr3.length = 0;
若下标不存在,则返回undefined
新增元素:数组名[下标] = 值; //有值就覆盖,没值就新增
数组名.push()
删除:arr.pop()
打印:console.log();
遍历:for (let index = 0; index < arr.length; index++) {
const element = arr[index];
console.log(element);
}
arr.splice(a,b):删除元素,[开始位置,删除参数个数] 改变原数组
var arr1=arr.slice(a,b):[开始位置,结束位置) 不改变原数组,返回新数组
2、函数
function 函数名(){ 函数体 }
调用: 函数名();
函数表达式:var fn = function(){ }
返回值总结:
1、如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined
2、如果函数使用 return语句,那么跟再return后面的值,就成了函数的返回值
3、如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值也是:undefined
4、函数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,
也就是说return后面的所有其他代码都不会再执行。
1.函数的覆盖问题
如果两个函数都是函数的声明,且函数名相同,那么后边的函数会覆盖前边的
如果两个函数都是函数表达式,且函数名相同,函数的调用会调用最近的一个
2.函数的内置对象
arguments是一个内置属性,存储了传递的所有实参,同时也可以进行遍历
3.匿名函数
(function () {
alert(123);
})();
3.预解析
包含:var和函数
有同名函数就不处理var,有同名var也不处理var。 var b=1 就等价于 b=1
之后其他按序排下去即可
4.作用域
1.全局作用域
直接写在script标签中,或者一个单独的JS文件
页面打开时创建,页面关闭时销毁
在全局作用域中有一个全局对象 window(代表的是一个浏览器的窗口,
由浏览器创建),可以直接使用。
所有创建的变量都会作为 window 对象的属性保存。
所有创建的函数都会作为 window 对象的方法保存。
2.局部作用域(函数作用域)
在函数内部,只在函数的内部起作用
调用时创建,执行完毕销毁
每调用一次就会创建一次新的作用域,他们之间相互独立
3.隐式全局变量
var a = b = c = 1; //b和c就是隐式全局变量
var a = 1; b = 2; c = 3; //b和c就是隐式全局变量
var a = 1, b = 2, c = 3; //b和c不是隐式全局变量
5.对象
创建对象: var person = new Object();
var o = {
name: 'zs',
age: 18,
sex: true,
sayHi: function () {
console.log(this.name);
}
};
6.JavaScript错误
1.try……catch
2.finally
3.throw
7.内置对象
1.Math对象
Math对象不是构造函数,它具有数学常数和函数的属性和方法,都以静态成员的方式提供。
Math.PI 圆周率
Math.random() 生成随机数
Math.floor() 向下取整
Math.ceil() 向上取整
Math.round() 取整,四舍五入
Math.abs() 绝对值
Math.max() 最大值
Math.min() 最小值
Math.sin() 正弦
Math.cos() 余弦
Math.pow() 求指数次幂
Math.sqrt() 求平方根
2.Date对象
1.创建日期对象
Date()是构造函数
var date = new Date();
2.获取原始值:getTime(); valueOf();
3.获取指定部分
getMilliseconds()
getSeconds() // 返回0-59
getMinutes() // 返回0-59
getHours() // 返回0-23
getDay() // 返回星期几 0周日 6周6
getDate() // 返回当前月的第几天
getMonth() // 返回月份,***从0开始***
getFullYear() //返回4位的年份 如 2016
3.array对象
1.创建数组方式
(1)、字面量方式
(2)、new Array()
2.检测一个对象是否拥有数组
instanceof 如果返回true就是数组,flase就是非数组
Array.isArray() 如果返回true就是数组,false是非数组
valueOf() 返回数组对象本身
3.栈操作
push() 添加元素
pop() 删除元素
4.队列操作
shift() 删除元素
unshift() 添加元素
5.排序方式
reverse() 反转数组
sort(sortby); sortby,可选参数,规定排序顺序,必须是函数 如果调用该方法时没有
使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序
进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
6.操作方法
concat() 把参数拼接到当前数组、 或者用于连接两个或多个数组
slice(start,end) 1、从start开始截取元素,到end结束,包括start,不包括end,
返回新数组,start,end是索引,2、不会改变原始数组 splice() 1、从start开始截取元素,
截取length个,,返回新数组,start是索引,length是个数,但是会删除原数组中截取出来的内容
7.位置方法
indexOf() 都是找位置 返回索引值 没有找到返回 -1,第一次出现位置
lastIndexOf() 如果没找到返回-1,元素最后一次出现的位置
8.数组迭代方法
forEcah() 用于调用数组的每个元素,并将元素传递给回调函数
3、filter ()与map ()
filter()根据指定条件过滤元素,返回新数组 ;
map()数根据数学运算,返回新数组
9.清空数组
方式1 推荐
arr = []
方式2
arr.length = 0
方式3
arr.splice(0, arr.length)