一個函數要使用另一個函數中的數據
阿新 • • 發佈:2018-05-27
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
一個函數要使用另一個函數中的數據