JavaScript-Day04

function練習(xí)

// - 求2個數(shù)中的最大值

//    function getMax(num1, num2) {
//      return num1 > num2 ? num1 : num2;
//    }
//    console.log(getMax(10,20));
//    //console.log(getMax);//函數(shù)的代碼

//    function getMax(num1, num2) {
//      return num1 > num2 ? num1 : num2;
//    }
//    var num1=10;
//    var num2=20;
//    //函數(shù)外面的num1和函數(shù)的形參num1不是同一個變量
//    var result=getMax(num1,num2);
//    console.log(result);
//console.log(getMax);//函數(shù)的代碼


//    - 求3個數(shù)中的最大值

function getThreeMax(x, y, z) {
  return x > y ? (x > z ? x : z) : (y > z ? y : z);
}
console.log(getThreeMax(10,2,24));


//    - 判斷一個數(shù)是否是素數(shù)(質(zhì)數(shù)),只能被1和自身整除纱烘,質(zhì)數(shù)是從2開始
//用這個數(shù)字和這個數(shù)字前面的所有的數(shù)字整除一次(沒有1的,沒有自身的)

function isPrimeNumber(num) {
  for(var i=2;i<num;i++){
    if(num%i==0){
      //說明有一個數(shù)字整除了,就沒有必要向后繼續(xù)整除了,此時就已經(jīng)驗(yàn)證出不是質(zhì)數(shù)
      return false;
    }
  }
  return true;
}
console.log(isPrimeNumber(8)?"是質(zhì)數(shù)":"不是質(zhì)數(shù)");

// var result=isPrimeNumber(2);
// if(result){
// console.log("這個數(shù)字是質(zhì)數(shù)");
// }else{
// console.log("這個數(shù)字不是質(zhì)數(shù)");
// }

//求兩個數(shù)字的差
function getSub(x, y) {
return x - y;
}
console.log(getSub(10, 20));

//求一組數(shù)字中的最大值
function getArrayMax(array) {
  //定義變量假設(shè)這個變量中存儲的是最大值
  var max = array[0];
  for (var i = 0; i < array.length; i++) {
    if (max < array[i]) {
      max = array[i];
    }
  }
  return max;
}
//    var arr=[10,20,30,40,50];
//    var max=getArrayMax(arr);
//    console.log(max);
var max = getArrayMax([10, 20, 30, 40, 50]);//可以直接把數(shù)組傳到函數(shù)中的
console.log(max);


//求一組數(shù)字中的最小值
function getArrayMin(array) {
  //假設(shè)這個變量里存儲的是最小值
  var min = array[0];
  for (var i = 0; i < array.length; i++) {
    if (min > array[i]) {
      min = array[i];
    }
  }
  return min;
}
//測試----調(diào)用函數(shù)并傳入一個數(shù)組,把數(shù)組中的最小值直接顯示出來
console.log(getArrayMin([10, 20, 30, 40, 1]));


//求一組數(shù)字的和
function getArraySum(array) {
  var sum = 0;
  for (var i = 0; i < array.length; i++) {
    sum += array[i];
  }
  return sum;
}
console.log(getArraySum([1, 2, 3, 4, 5, 6]));


//求一個數(shù)組中的最大值和最小值還有和
/**
 *  給我一個數(shù)組,我返回一個數(shù)組(最大值,最小值,和)
 * @param array參數(shù)是一個數(shù)組
 * @returns {*[]}返回值是一個數(shù)組,第一個元素值是最大值,第二個元素值是最小值,第三個元素值是和
 */
function getArrayMaxAndMinAndSum(array) {
  var min = array[0];//最小值
  var max = array[0];//最大值
  var sum = 0;//和
  for (var i = 0; i < array.length; i++) {
    sum += array[i];//和
    //最大值
    if (max < array[i]) {
      max = array[i];
    }// end if
    //最小值
    if (min > array[i]) {
      min = array[i];
    }// end if
  }// end for
  var arr = [max, min, sum];
  return arr;
}
//測試
var resultArray = getArrayMaxAndMinAndSum([1, 2, 3, 4, 5, 6, 7]);
console.log("最大值:" + resultArray[0]);//7
console.log("最小值:" + resultArray[1]);//1
console.log("和:" + resultArray[2]);//28

//通過函數(shù)實(shí)現(xiàn)數(shù)組反轉(zhuǎn)
function reverseArray(arr) {
  for (var i = 0; i < arr.length / 2; i++) {
    var temp = arr[i];
    arr[i] = arr[arr.length - 1 - i];
    arr[arr.length - 1 - i] = temp;
  }
  return arr;
}
console.log(reverseArray([1, 2, 3, 4, 5]));

//通過函數(shù)實(shí)現(xiàn)冒泡排序
function sortArray(arr) {
  //控制比較的輪數(shù)
  for (var i = 0; i < arr.length - 1; i++) {
    //控制每一輪的比較次數(shù)
    for (var j = 0; j < arr.length - 1 - i; j++) {
      if (arr[j] > arr[j + 1]) {
        var temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }//end if
    }//end for
  }//end for
  return arr;
}
console.log(sortArray([0, 19, 34, 10, 100, 2]));


//求一個數(shù)字的階乘
function getJieCheng(num) {
  var result = 1;
  for (var i = 1; i <= num; i++) {
    result *= i;
  }
  return result;
}
console.log(getJieCheng(5));//1*2*3*4*5
//求一個數(shù)字的階乘和  5  5的階乘+4的階乘+3的階乘+2的階乘+1的階乘

function getJieChengSum(num) {//5
  var sum=0;//和
  for(var i=1;i<=num;i++){
    sum+=getJieCheng(i);
  }
  return sum;
}
console.log(getJieChengSum(5));
//1 +2+ 6+ 24+120

//函數(shù)內(nèi)部可以調(diào)用其他的函數(shù)

//求斐波那契數(shù)列,12---144
//1 1 2 3 5 8 13 21 34 55 89 144
function getFib(num) {
var num1=1;
var num2=1;
var sum=0;
for(var i=3;i<=num;i++){
sum=num1+num2;
num1=num2;
num2=sum;
}
return sum;
}
console.log(getFib(12));

//輸入,年月日,獲取這個日期是這一年的第多少天

//判斷這個年份是不是閏年
function isLeapYear(year) {
  return year%4==0&&year%100!=0||year%400==0;
}
//年---月---日:2017年4月28日
function getDays(year, month, day) {
  //定義變量存儲對應(yīng)的天數(shù)
  var days = day;
  //如果用戶輸入的是一月份,沒必要向后算天數(shù),直接返回天數(shù)
  if (month == 1) {
    return days;
  }
  //代碼執(zhí)行到這里-----說明用戶輸入的不是1月份
  //用戶輸入的是7月份23日----1宾濒,2旅择,3  +23
  //定義一個數(shù)組,存儲每個月份的天數(shù)
  var months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  //小于的是輸入的月份-1
  for (var i = 0; i < month - 1; i++) {
    days += months[i];
  }
  //需要判斷這個年份是不是閏年
  if(isLeapYear(year)&&month>2){
    days++;
  }
  return days;
}

 console.log(getDays(2000,3,2));





//函數(shù)里面可以調(diào)用其他的函數(shù)

// function f1() {
// console.log("我是一個函數(shù)");
// f2();//函數(shù)的調(diào)用
// }
// function f2() {
// console.log("我也是一個函數(shù)");
// }
//
// f1();

//計算n個數(shù)字的和
//定義一個函數(shù),如果不確定用戶是否傳入了參數(shù),或者說不知道用戶傳了幾個參數(shù),沒辦法計算,但是如果在函數(shù)中知道了參數(shù)的個數(shù),也知道了讨永,每個參數(shù)的值.可以

//定義

// function f1() {
// //獲取的是函數(shù)在調(diào)用的時候,傳入了幾個參數(shù)
// //console.log(arguments.length);
// //使用arguments對象可以獲取傳入的每個參數(shù)的值
// console.log(arguments);
// }

函數(shù)定義

/*
* 命名函數(shù):函數(shù)如果有名字,就是命名函數(shù)
*
* 匿名函數(shù):函數(shù)如果沒有名字,就是匿名函數(shù)
*
* 函數(shù)的另一種定義方式
* 函數(shù)表達(dá)式:
* 把一個函數(shù)給一個變量,此時形成了函數(shù)表達(dá)式
* var 變量=匿名函數(shù);
* 例子:
* var f1=function (){
*
* };
* 如果是函數(shù)表達(dá)式,那么此時前面的變量中存儲的就是一個函數(shù),而這個變量就相當(dāng)于是一個函數(shù),就可以直接加小括號調(diào)用了
* f1();
*
* 注意:
* 函數(shù)表達(dá)式后面,賦值結(jié)束后,要加分號
*
*
*
* 函數(shù)定義:
* 1. 函數(shù)聲明--函數(shù)定義
* function 函數(shù)名(){
* 函數(shù)體
* }
*
* */

//函數(shù)聲明,fn是變量,fn是參數(shù),
// function f1(fn) {
// fn();//函數(shù)調(diào)用---說明fn這個變量中存儲的是一個函數(shù)
// }
//

// function f2() {
// console.log("哦,這也可以");
// }
// f1(f2);

//結(jié)論:函數(shù)是可以作為返回值使用的:
function f1() {
console.log("f1函數(shù)調(diào)用了");
return function () {
console.log("這是一個函數(shù)");
};
}

var ff=f1();//調(diào)用
//ff就是一個函數(shù)了
ff();

//預(yù)解析:提前解析代碼
/*
*
* 預(yù)解析:就是在解析代碼之前
* 預(yù)解析做什么事?
* 把變量的聲明提前了----提前到當(dāng)前所在的作用域的最上面
* 函數(shù)的聲明也會被提前---提前到當(dāng)前所在的作用域的最上面
*
*
* */

//預(yù)解析中,變量的提升,只會在當(dāng)前的作用域中提升,提前到當(dāng)前的作用域的最上面
//函數(shù)中的變量只會提前到函數(shù)的作用域中的最前面,不會出去
//預(yù)解析會分段(多對的script標(biāo)簽中函數(shù)重名,預(yù)解析的時候不會沖突)

// function f1() {
//
// console.log(num);//undefined
// var num=10;
// }
// f1();
// console.log(num);//

f1();//-----報錯
var f1=function () {
console.log(a);
var a=10;
};

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市夜郁,隨后出現(xiàn)的幾起案子什燕,更是在濱河造成了極大的恐慌,老刑警劉巖竞端,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屎即,死亡現(xiàn)場離奇詭異,居然都是意外死亡事富,警方通過查閱死者的電腦和手機(jī)技俐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來统台,“玉大人雕擂,你說我怎么就攤上這事〖” “怎么了井赌?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贵扰。 經(jīng)常有香客問我仇穗,道長,這世上最難降的妖魔是什么戚绕? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任纹坐,我火速辦了婚禮,結(jié)果婚禮上舞丛,老公的妹妹穿的比我還像新娘耘子。我一直安慰自己果漾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布谷誓。 她就那樣靜靜地躺著跨晴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪片林。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天怀骤,我揣著相機(jī)與錄音费封,去河邊找鬼。 笑死蒋伦,一個胖子當(dāng)著我的面吹牛弓摘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播痕届,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼韧献,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了研叫?” 一聲冷哼從身側(cè)響起锤窑,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嚷炉,沒想到半個月后渊啰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡申屹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年绘证,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哗讥。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡嚷那,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杆煞,到底是詐尸還是另有隱情魏宽,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布索绪,位于F島的核電站湖员,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瑞驱。R本人自食惡果不足惜娘摔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望唤反。 院中可真熱鬧凳寺,春花似錦鸭津、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晒奕,卻和暖如春闻书,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脑慧。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工魄眉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人闷袒。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓坑律,卻偏偏與公主長得像,于是被迫代替她去往敵國和親囊骤。 傳聞我的和親對象是個殘疾皇子晃择,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情也物,實(shí)現(xiàn)同樣的效果;這時候需要使用工廠模式宫屠。簡單...
    舟漁行舟閱讀 7,750評論 2 17
  • 1、使用typeof bar ===“object”來確定bar是否是一個對象時有什么潛在的缺陷焦除?這個陷阱如何避免...
    深海鯽魚堡閱讀 660評論 1 1
  • 1激况、使用typeof bar ===“object”來確定bar是否是一個對象時有什么潛在的缺陷?這個陷阱如何避免...
    我是大橙閱讀 572評論 0 1
  • 本文檔內(nèi)容參考 《JavaScript 闖關(guān)記》之函數(shù) 函數(shù)是一段代碼膘魄,它只定義一次乌逐,但可以被執(zhí)行或調(diào)用任意次。在...
    穿越人海遇見你閱讀 998評論 0 1
  • 是什么 一門腳本語言 一門解釋型語言 動態(tài)類型語言 基于對象的語言 弱類型語言 使用場景 網(wǎng)頁特效 服務(wù)端開發(fā) 命...
    琿_cysky2018閱讀 425評論 0 0