1.数据类型
1)基本数据类型 五种 存储在栈当中
2)引用数据类型 function Array Object
基本数据类型的复制实际上就是copy了一份一样的数据,互相独立
引用数据类型的复制实际上是地址的复制,而同一个地址指向的是同一个数据(堆空间)
深拷贝和浅拷贝 — 针对引用数据类型
var arr1 = [1,2,3];
// 浅拷贝 --- 复制了同一个地址 --- 相互影响
var arr2 = arr1;
arr1.push('a');
console.log(arr1,arr2)
// 深拷贝 --- 复制值
for(var i in arr1){
// arr2[i] = arr1[i]
arr2.push(arr1[i])
}
2.栈空间(基本) 堆空间(复杂 )
基本数据类型: number / string / boolean / undefined / null
基本数据类型在内存中的存储情况
复杂数据类型在内存中的存储情况
3.数组的深拷贝和浅拷贝
浅拷贝就是地址拷贝 arr1 = arr2 将会共享一个地址
深拷贝实际是复制的内容 相互独立
4.函数的值传递和引用传递
基本数据类型属于值传递 本质就是一个简单的复制
引用数据类型属于引用传递 共享地址
5.立即执行函数
(function aa(n){
console.log(n)
})(5)//传实参的地方
立即执行函数,只执行一次,一般写作匿名函数
6.回调函数
在函数里面,把另外一个函数作为参数
例:生成0-n之间的随机数
a(function rand(n){
return parseInt(Math.random() * n);
}(5))
function a(b){
var res = b;
console.log(res)
}
7.数组扩展
迭代方法:
1)every() 判断数据里面的每一条数据是否都满足条件 — 判断,输出布尔值
var res = arr.every(function(val,i){
return val > 2
})
console.log(res)
2)some()判断是否有符合条件的数据 — 判断 ,输出布尔值
var res = arr.some(function(val,i){
return val > 2
})
console.log(res)
3) filter() 返回满足条件的数据形成的新的数组 – 返回的是数据
var res = arr.filter(function(val,i){
return val > 20
})
console.log(res)
4)forEach () 遍历每一个数据 ---- 没有返回值 — 不能写返回值,写了也没用
var arr = [1,2,3,4,5];
var sum = 0;
arr.forEach(function(val,i){
sum += val;
})
console.log(sum);
5)map() 操作数据里面的每一个数据 — 改变数组里面的数据
var arr = [1,2,3,4,5];
var res = arr.map(function(val,i){
return val * 1.3
})
console.log(res)
归并方法:
reduce () 三个参数,经过对数据的操作,得到一个值
reduce ()从前往后操作;reduceRight()从后往前操作
都会迭代数组所有项,然后构建一个最终返回值
var arr = [1,2,3,4,5];
var res = arr.reduce(function(sum,val,i){
return (sum + val)
})
console.log(res);