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;
};