JavaScript 第二天
1、数组
1.1 数组的概念
1.11什么是数组
数组就是指一组数据的集合 ,其中每个数据被称作元素,在数组中可以存放任意类型的元素,数组是将一组数据存储在某个变量名下
1.12什么是遍历
遍历就是把数组从头到尾遍历一遍
1.1冒泡
冒泡就是两个两个交换
冒泡趟数是数组的长度减一
四个数循环三次
里面次数是数组长度减i减一
里面需要交换两次
var arr=[11,23,5,6];
var newArr=[];
console.log(arr)
for (var i = 0; i < arr.length-1; i++){
//外层是趟数
for (var j = 0; j < arr.length-i-1;j++){
//里层是次数
if(arr[j]>arr[j+1]){//第一个比第零个小
var item;
item = arr[j+1]
arr[j+1] =arr[j]
arr[j] = item
}
}
}
2、函数
1.什么是函数
函数就是封装了一段可以重复执行的代码块,为的就是让大量代码可以重复使用
2.函数的使用
2.1声明函数
function()就是函数
函数不调用,不会自己执行
function 函数名{
}
2.2调用函数
2.2.1声明方式
//利用函数关键字自定义函数(命名函数)
function fn(){
}
//函数表达式(匿名函数)
var fun =function(){
}
调用需要用
函数名()
函数参数说明
多余参数则取形参的个数
少于则undefined
函数是做末件事或者实现某种功能的
不要在里面做输出语句
要使用return出来给调用函数的人
如果没有return 则返回undefined
2.3函数的内置对象 arguments
arguments
每个函数中都有封装的对象
用意是:存储实参传过来的所有值
3、作用域
3.1什么是作用域
限制代码的生效范围,就是为了减少命名冲突
3.1.1 全局作用域
就是声明在script标签内 或者在一个js文件内
3.1.2 局部作用域
就是在函数内的就是局部作用域
3.1.3 全局变量与局部变量的区别
全局变量就是在全局定义的变量
局部变量就是在局部定义的变量
从效率上看
1.全局变量 只有浏览器关闭才会销毁 比较占内存
2.局部变量 当我们程序执行完毕就会销毁 比较省内存
!!!在局部变量没有用var等声明直接赋值也是全局变量(不应许)
3.1.4作用域链(重点)
作用域链: 内部函数访问外部函数的变量采取的方式来取那个值 这种我们称作作用域链
比如说:一个家,你在房间,想要某样东西房间里没找到,就去大厅找 (往外扩 找上一级)
4、预解析(重点)
预解析分为两种
1.预解析js会把var 和function放在作用域最前面
2.代码执行 从上往下
预解析分为 变量预解析(变量提升) 和 函数预解析(函数提升)
1.变量提升就是把所有的变量声明到作用域最前面 不提升赋值
1.函数提升就是把所有的变量声明到作用域最前面 不调用函数
5、对象(重点)
5.1创建对象的三种方式
5.1.1利用字面量来创建对象
字面量就是花括号{} 里面包含属性及其方法
{}里面使用键值对
键:属性名
值:就是属性值 可以是任意类型 也可以是函数
5.1.2用new来创建对象
var obj =new Object();
obj.uname = '张三'
这种方法是通过 对象名。属性名 = xxx来赋值
5.1.3构造函数(重点)
构造函数就是我们把对象里面的相同的属性及其方法封装到一个函数里面
注意构造函数名首字母需要大写 (遵从语法)
//格式 function 构造函数名 (参数){
// this.参数 = 参数
//}
//调用需要用new 构造函数名()
function Star(uname,age,sex){
this.uname = uname;
this.age = age
this.sex = sex
}
var zs = new Star('张三',18,'男')
构造函数和对象
1.构造函数 指的是类 java的类 类似方法区
2.对象指的是事物 就是可以看到的
3.我们通过构造函数来创建对象就叫实例化
5.2遍历构造函数(重点)
for in
// for(变量 in 对象){
// }
for(var k in obj){
console.log(k)//是变量名
console.log(obj[k])//得到的是属性值
}
5.3new关键字
1.在内存中创建一个新的空对象
2.让this指向这个新的对象
3.执行构造函数里面的代码,给这个新对象添加属性和方法
4.返回这个新对象(所以构造函数里面不需要return)
5、内置对象
5.1 JavaScript中对象分成三种
5.1.1.自定义对象
5.1.2.内置对象
JavaScript自带的对象 比如时间的Math
具体查看mdn文档
Math 处理数字
Date 处理时间 Date是构造函数
时间戳(重点)
获取现在距离1970.1.1年的秒数
//最简单的写法 (最常用)
var date = +new Date()
//h5新增的
console.log(Date.now())
Array 处理数组
检测数组传过来的方法是不是数组
有两种
1. 变量 instanceof Array 运算符
2.Array.isArray(数组) h5 新增的
数组常用的
1.push() 在数组末尾添加
2.unshift() 在数组前面添加
3.pop() 删除数组最后一个 一次删除一个
4.shift() 删除第一个 只能删除一个
5.reverse 翻转数组
6.sort 冒泡排序
//其中sort有问题
//需要用回调函数声明升序还是降序
arr.sort(function(a,b){
//return b-a;//降序
return a-b;//升序
})
5.1.3.浏览器对象
单词汇总及其讲解
1.return :不仅可以退出循环 而且还能够返回return中的值同时还能结束结束函数内的代码
2.arguments 只有函数才有的对象 里面存储了所有实参传过来的值
3.instanceof 运算符 可以用来检测是否为数组