数组
数组(Array);就是一组数据的集合,岑处在单个变量下的优雅方式
- 创建数组的两种方式,数组内可以添加不同的类型的元素
- 利用new 创建数组 --var arr = new Array();
- 利用数组字面量创建数组 []
'var arr = [];var arr1 = [1,2,'老师',true];
- 获取数组元素用索引 console.log(arr[3]);
- 可以通过修改length的长度来实现数组扩容的目的,length的属性是可读的(arr.length=5 将数组中的容量扩充至5)
- 可以通过修改数组索引的方式追加数组元素(arr[9]=‘pin’ 给数组添加第十个元素),不能直接给数组名赋值,否则会覆盖掉以前的数据,即从0开始给数组元素赋值
函数
- 函数形参和实参个数不匹配的问题:
实参个数等于形参个数 输出正确结果
实参个数多于形参个数 只取到形参的个数
实参个数小于形参个数 多的形参定义为undefined,结果为NaN
在JS中,形参的默认值为undefined - 函数return只能返回一个值,想返回多个值的时候用数组实现,若函数没有return时,则返回undefined
- arguments的使用:
当我们不确定有多少个参数传递的时候,可以用arguments来获取,他为当前函数的一个内置对象,arguments对象中存储了传递的所有实参arguments展示形式是一个伪数组,因此可以遍历,具有以下特点:
1.具有length属性
2.按索引方式存储数据
3.不具有数组的push,pop等方法
作用域
- 变量的作用域:全局变量 局部变量 es6新增块级作用域(for if 等)
- 如果在函数内部 没有申明直接固执的变量也属于全局变量
- 全局变量:在任何地方都可以使用,只有在浏览器关闭时才销毁,占用内存高
- 局部变量:只有在函数内部使用,当代码块执行时,开始初始化,当执行结束后,被销毁,节省内存空间
预解析
我们的js引擎运行js时分为两步: 预解析 执行代码
预解析:js引擎会把节省里面所有的var还有function 提升到当前作用域的最前面
预解析分为变量预解析(变量提升 不提升赋值操作)和函数预解析(函数提升 不调用函数)
先提升变量 后提升函数
对象
利用字面量{}创建对象:var obj={uname:'zhang',age:18,sayHi:function(){console.log('Hi');}}
- 多个属性或方法之间用逗号隔开,方法冒号后面跟的是匿名函数
- 对象的调用:1.对象.属性名 2.对象[‘属性名’] 对象.方法名
利用 new Object 创建对象`var obj = new Object();
obj.uname=‘wang’;obj.age=18;`
- 利用 = 赋值的方法添加对象的属性和方法
- 每个属性和方法之间用分号结束
用构建函数创建对象
- 利用函数的方法 重复这些相同的代码 我们就把这个函数成为构造函数
- 构造函数 就是把我们对象里面一些相同的属性和方法抽象出来封装到函数里面
function 构造函数名(){
this.属性 = 值;
this.方法 = function(){}
}
//创建:new 构造函数名()
//构造函数名首字母大写
function Star(uname,age,sex){
this.name = uname;
this.age = age;
this.sex = sex;
this.sing = function(sang){
concole.log(sang);
}
}
var a = new Star('wang',14,'女'); //创建对象
console.log(a.name); //调用属性
console.log(a.sing('sing')); //调用方法
1.调用函数返回的是一个对象,返回类型为Object
2.我们构造函数不需要return 就可以返回结果
3.调用创建函数必须使用 new
4.属性和方法前面必须添加 this
遍历对象
for (var k in obj){ // 输出对象的全部内容
console.log(k); //k变量 输出得到的是属性名
console.log(obj[k]); //得到的是属性值
}
内置对象
内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的伙食最基本而必要的功能(属性和方法)
内置对象最大的优点是帮助我们快速开发
JS提供了多个内置对象:Math Date Array String等
MDN:https://developer.mozilla.org/zh-CN/
Math:
- Math.abs(1); //取绝对值 括号内为字符串时 输出 NaN
- Math.floor(1.9); //1 向下取整
- Math.ceil(1.1); //2 向上取整
- Math.round(1.5); //2 四舍五入 .5 特殊,他往大取
- Math.round(-1.5); //-1 Math.round(-1.1); -1
- Math.randon(); //返回一个[0 1) 之间的小数
- 得到任意两数之间的随机整数:
Math.floor(Math.random()*(max-min+1))+min;
Date:
- Date() 日期对象 是一个构造函数 必须使用new 来调用创建我们的日期对象
var date = new Date(); 没有参数时返回系统当前时间