数据类型之间存储的区别
存储空间分为两种 堆 和 栈
栈:主要存储基本数据类型的类容
堆:主要存储复杂数据类型的类容
数据类型之间的比较
基本数据类型是 值 之间的比较
复杂数据类型是 地址 之间的比较
var num = 100
var str = '100'
num == str // true
var obj = {name:'jack', age:22}
var obj1 = {name:'jack', age:22}
var obj2 = obj
obj == obj1 // false
obj == obj2 // true
函数参数的传递
//简单数据类型
var num = 100
function fun(m){
m = 200
console.log('m', m ) // 200
}
fun(m)
console.log('m', m) // 100
//复杂数据类型
var a = [2,3,4,1]
function fun(a1){
a1[0] = 'rose'
console.log(a[0] ) // rose
}
fun(a)
console.log(a[0]) // rose
var obj = {name:'jack',age:22}
var obj1 = {name:'jack',age:22}
var obj2 = obj
console.log(obj == obj1) //false
console.log(obj == obj2) //true
因为复杂数据类型,变量存储的是地址,真实类容在 堆空间 内存储,所以赋值时相当于把 obj 存储的那个地址赋值了一份给到 obj2 变量,现在 obj 和 obj2 两个变量的存储地址一样,指向同一个内存空间,所以使用 obj2 这个变量修改空间的内容时, obj 指向的空间也会跟着改变
数组的常用方法
- push是用来在数组的末尾追加一个元素 arr.push()
- pop是用来删除数组末尾的一个元素 arr.pop()
- unshift是在数组的最前面添加一个元素 arr.unshift()
- shift是删除数组最前面的一个元素 arr.shift()
- splice是截取数组中的某些类容,按照索引来截取 arr.splice(从哪一个索引位置开始,截取多少个元素,替换的新元素)
- reverse是用来反转数组使用的 arr.reverse()
- sort是用来给数组排序的 arr.sort()
- contat是把多个数组进行拼接 contat不会改变原数组,而是会返回一个新数组 var newArr = arr.contat(['','',''])
- join是把每个数组里面的每一项内容链接起来,变成一个字符串 不会改变原数组,而是把连接好的字符串返回 var str = arr.join(链接的内容)
- slice方法返回一个新的数组对象,这一对象是由 begin 和 end 确定的原数组的浅拷贝(包括begin,不包括end).原始数组不会改变
- indexOf方法用来找到数组中某一项的索引值
- includes 检测数组是否包含元素
数组的常用遍历方法
-
forEach
匿名函数 function(){} arr.forEach(functon(item,index)){ item:第一个形参,数组元素 index:第二个形参,索引号 }
- map
遍历数组
映射新数组
var newArr = arr.map(function(item){
return 表达式
})
- filter
遍历数组
过滤元素
var newArr = arr.filter(function(item){
return 条件
})
- find
遍历数组
查找到符合条件的第一个元素
- every
遍历数组
判断数组中所有元素是否都满足条件,都满足返回true,有不满足返回false
-
some
遍历数组 判断数组中有没有元素满足条件,只有有一个满足就返回true,都不满足返回false