一个函数要使用另一个函数中的数据

一个函数要使用另一个函数中的数据

1.把局部数据return出去,变成全局的数据

let fn1 = function(){
    let num = 10;
    return num;
}
let num = fn1();

let fn2 = function(){
    console.log('fn2'num);
}
fn2();

2.通过调用函数时传参:让"函数的调用"跟局部的数据在同一个作用域

let fn2 = function(num){
    console.log('fn2',num);
}
let fn1 = function(){
    let num = 10;
    fn2(num);
}
fn1();

函数的作用域

作用域的分类

1.全局作用域

2.局部作用域(函数作用域,大括号里面的叫块级作用域)

3.eval()作用域:它会把括号里面的字符串当作正常的js代码进行解析然后运行

eval("console.log"('hello'));

函数提升

声明式函数会发生函数提升,创建的整个函数全部提升到代码头部。

fn2();
function fn2(){
    console.log('hello');
}

1.函数是“一等公民”

2.提升时函数先提升,变量后提升

3.当变量未赋值时无法覆盖函数

4.但是变量如果赋值会覆盖函数

既没有没有let,也没有var的变量在哪里都是个全局变量

回调函数callback

概念:将一个函数A作为参数(实参)传递给函数B,然后,在函数B中调用函数A,那么,函数A就叫做回调函数。

function a(){
    console.log("a");
}
function b(callback){
    callback();
};
b(a);

console.log(a);
console.log(a());

arr.sort(function(){});

二.JS中常见的回调函数(操作数组的)

1·forEach();ES6 遍历数组 item元素 index下标

let arr = [10,11,12,13,14];
arr.forEach(function(item,index){
    console.log(index);
});

2.map();需要对数组中每一个元素做同样的操作的时候使用.会返回(得到)一个新数组

let arr = [10,11,12,13,14];
let newArr = arr.map(function(item,index){
    return item * 2;
});
console.log(newArr);

3.filter();当要给每一个数组做筛选的时候使用

let arr = [10,11,12,13,14];
let newArr = arr.filter(function(item,index){
    return item % 2 === 0;
});
console.log(newArr);    能够筛选出里面所有的偶数,并返回一个新数组


let arr = [10,11,12,13,14,10,11,12];
let newArr = arr.filter(function(item,index){
    return arr.indexOf(item) === index;

});
console.log(newArr);

4.reduce();

let arr = [10,11,12,13,14];
let result = arr.reduce(function(a,b){
    console.log(a,b);
    return a + b;
});
console.log(result);

let arr = [10,11,12,13,14];
let result = arr.reduce(function(a,b){
    return a > b ? a : b;
});                        找最大值
console.log(result);

5.every();对数组每一个元素做判断如果有一个为假全都是假(一假全假)

let arr = [10,11,12,13,14];
let result = arr.every(function(item,index){
    return item < 30;
});
console.log(result);

6.some();对数组的每一个元素做判断如果有一个元素为真全部都是真(一真全真)

let arr = [10,11,12,13,14];
let resule = arr.some(function(item,index){
    return item < 30;
});
console.log(resule);

随机数

console.log(Math.random() * 10 + 10);

Math.random()0-1取不到1

1-10
Math.random() * 9 + 1

1-20
Math.random() * 10 + 10

13-19
Math.random() * 6 + 13

posted on 2018-05-27 18:05  不吃鱼的猫W  阅读(185)  评论(0编辑  收藏  举报

导航