1.数组练习
两个数组 数组A 数组B
数组A为固定初始数组['jojo','okok','张三','小伙子','秃头']
数组B为用户动态选择添加的值[] 不确定
需要 将数组B中前N为添加到 数组A中
数组A 有限制长度为 7
var A = ['jojo','okok','张三','小伙子','秃头']
var B = [1,2,3,4]
//输出['jojo','okok','张三','小伙子','秃头',1,2,3]
//简单实现 循环push
// for(var i = 0;i<7 - B.length;i++){
// A.push(B[i])
// }
// console.log(A)
//函数实现+数组方法 concat 合并 输出新数组 slice 切割数组 输出切割部分
function fn(arra,arrb){
var maxLen = 7
var len = arra.length
var newarr = arra.concat(arrb.slice(0,maxLen-len))
return newarr
}
console.log(fn(A,B))
作用域练习
//作用域练习
console.log(x);//undefined
f1()
var x = 0
function f1(){
f2()
var x = 20
function f2(){
x = 20
console.log(x)//20
}
}
console.log(x)//0
console.log(a)//函数体
function a(){
a = 20
}
a()
console.log(a)//20
var a = 30
console.log(a)//30
重点欺骗问题***
//重点欺骗问题
function f1(){
var arr = []
for(var i = 0;i<10;i++){
arr.push(function (){
return i
//数组内存的实际是函数的地址值 都指向函数
//i最后等于10 因为 for循环结束后 i还会++1次
//值只要没有被用到 都不是值 只有用到的时候 才会找相应的地址
})
}
return arr
}
console.log(f1()[3]())
console.log(f1())
//f1()表示arr f1()[3]=arr[3]
f1()[3] //调用f1() 输出arr arr的每一项 又需要运行for循环 push了一个函数 但函数没有调用
f1()[3]()//10 调用的时候 for循环早结束了 i =10 此时调用函数 i等于10