1. 程式人生 > >一個函數要使用另一個函數中的數據

一個函數要使用另一個函數中的數據

ole 哪裏 arr 傳參 最大值 num 但是 無法 函數提升

一個函數要使用另一個函數中的數據

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

一個函數要使用另一個函數中的數據