前端全棧學習第十二天 js第四天 基礎

2021-09-11 07:25:58 字數 4756 閱讀 7790

1:函式案例

2:函式其他

3:作用域

4:預解析

1:函式案例

// 1: 求一組數中的最大值,最小值,求和

// 2:求階乘

// 3:判斷質數

// 4:通過函式實現陣列的反轉

// 5:求乙個數字的階乘

// 6:費布那切數列

// 7:求乙個數字的階乘和

// 8:氣泡排序

// 1: 求一組數中的最大值,最小值,求和

function allnumber(num) //end if

if (max < num[i]) //end if

sum += num[i];

}var arr = [min, max, sum];

return arr;

//將三個變數用陣列的方式返回(返回到函式裡面,也就是allnumber()),這是最巧妙的地方

}var result = allnumber([1, 9, 2, 8]);

console.log("最小值" + result[0] + "最大值" + result[1] + "求和" + result[2]);

// 2:求階乘

function jiecheng(n)

return sum;

}console.log(jiecheng(3))

// 3:判斷質數

function zhishu(num)

}return true;

}console.log(zhishu(8) ? "是質數" : "不是質數"); //這裡zhishu(8) 接收的是return true ,含義是是質數

// 4:通過函式實現陣列的反轉

function reverse(arr)

return arr;

}console.log(reverse([1, 2, 3, 4, 5, 6, 7, 8, 9]))

// 5:求乙個數字的階乘

var f2 = function (num)

return sum;

}console.log(f2(4))

// 6:遞迴費布那切數列

function f6(n)

return f6(n - 1) + f6(n - 2);

}console.log(f6(4));

var ff6 = function (n)

return ff6(n - 1) + ff6(n - 2);

}console.log(ff6(4));

// 6.1普通實現翻番

function fff6(n)

for (var i = 3; i <= n; i++)

return sum;

}console.log(fff6(3))

// 7:求乙個數字的階乘和,前面有乙個函式已經求出單個階乘,現在只是把他們相加即可

function factoriala(num1)

return sum1;

}console.log(factoriala(3));

// 8:氣泡排序

var f8 = function (array) }}

return array;

}console.log(f8([12, 78, 5, 4, 23, 15, 98, 422, 18, 62]))

2:函式其他

2.1arguments物件偽陣列

偽陣列arguments獲取偽陣列的值

var fn = function ()

return sum;

}console.log(fn(1, 9))

9)])

//這裡有個坑,明明是進行進行陣列的遍歷迴圈,

// 但是進行輸出的時候,陣列的形式卻不行,原因是arguments可以獲取偽陣列的值,

// 但他終歸不是陣列,所以不能用陣列的形式進行傳值

2.1函式的其他定義方式

函式定義有命名函式,匿名函式,函式自定義

命名函式:定義:function fn(){} 呼叫fn();

匿名函式:定義:function (){} ,呼叫:?沒有函式名,該怎麼呼叫?引出了兩種方法,一種是函式表示式(定義)var fn = function(){}呼叫:fn()

另一種是:函式自定義,宣告的時候,直接呼叫(一次性)

(function(){})()

2.2函式也是一種資料型別

function f1()

console.log(typeof f1); //function

2.3:函式作為引數使用

函式裡面的引數可以是任意型別,下面說函式作為引數使用

function f2(fn)

function f3()

f2(f3); //這裡有乙個注意點;函式作為引數使用,是函式名,還是函式名+();

// 因為函式作為引數呼叫的時候,主函式裡面的呼叫是 fn(),缺的是函式**,

// 這時候函式作為引數只要提供**就可以,而函式名裡面就是**,所以傳值,只傳函式名就可以

2.4函式作為返回值使用

function f4()

var ff = f4();

ff();

3:作用域

// 作用域

//1:全域性變數:用var 宣告,如果頁面不關閉,那麼就不會釋放,會佔空間,消耗記憶體

//2:區域性變數:在函式內部定義的變數

// 3:js沒有快級作用域,但是函式除外(這裡快級作用域相當於區域性作用域)

// 4:隱式全域性變數:變數宣告的時候沒有var,如果在函式內部定義了乙個隱式全域性變數,外部是可以訪問的

// 5:全域性變數不會被刪除,但是隱式全域性變數可以被刪除

4:預解析

// 首先需要了解的是瀏覽器遇到js**,會有js解析器進行兩步操作,預解析+執行**

// 預解析:就是提前解析**

//預解析就兩部分:變數宣告提前;函式宣告提前

// 先看變數宣告

console.log(num); //undefined

var num = 10;

// 函式宣告提前

function f1()

f1(); //我是第二個f1

function f1()

f1() //我是第二個f1

// 為什麼輸出這樣的結果,其實是函式宣告提前的原因,而且有函式呼叫在函式宣告前的**,首先會進行函式宣告提前,而且如果函式名一樣,後面的會覆蓋前面的**

function f1()

function f1()

f1(); //我是第二個f1

f1() //我是第二個f1

// 函式宣告提前和變數宣告提前的混合用法

var num = 10;

f2()

function f2()

// 解釋: 函式呼叫之前,肯定是函式的宣告,所以這裡是函式宣告提前

var num = 10;

function f2()

f2()

混淆用法

f3()

function f3()

var num3 = 10;

// 下面看執行過程:首先函式宣告提前,其次變數宣告提前.這裡是變數宣告,但是沒有賦值,所以是ubdefined

var num3;

function f3()

f3()

num3 = 10;

// 函式宣告提前和變數宣告提前的混合用法

console.log(a); //**

function a()

var a = 1;

console.log(a); //1

// 解析過程

var a;

function a()

console.log(a);

a = 1;

console.log(a);

// 函式宣告提前和變數宣告提前的混合用法

var a = 18;

f5();

function f5()

// 函式宣告提前和變數宣告提前的混合用法

f6();

console.log(a); //報錯

console.log(b); //6

console.log(c); //6

function f6()

// 解釋

function f6()

f6();

console.log(a); //報錯 ,a是區域性變數,不會跑到函式外面,所以這裡a既沒有宣告,也沒有賦值。憑空出現,所以報錯

console.log(b); //6

console.log(c); //6

f7(); //不能呼叫,報錯

var f7 = function ()

//解釋,函式表示式,進行變數提公升,var f7,下面剩下

// f7 = function () ,所以 var f7; f7()肯定是報錯的

var f7;

f7();

f7 = function ()

這也就從側面說明,預解析就兩方面:

變數提公升

函式宣告提公升,

(函式表示式用的也是變數提公升)

前端全棧學習第十二天 js第二天 基礎

1 一元運算子 2 順序控制 3 分支結構 if,if else if else if else if else,switch case 三元表示式 4 迴圈結構 while,do while,for,for in 後期 5 案例 每個三遍 1 一元運算子 1 正常的單個 在前,在後,都是在自增 v...

前端全棧學習第十二天 js第三天 基礎

1 陣列 氣泡排序 2 函式 1 陣列 1 陣列的作用,可以一次儲存多個資料 2 建立陣列有兩種方式 通過建構函式建立乙個陣列 var arr new array 5 陣列長度為5,空陣列 var arr1 new array 5,1 陣列長度為2,裡面有5,1兩個元素 通過字面量建立乙個陣列 va...

前端全棧學習第十二天 js第六天 基礎

主要是內建物件的介紹和例子 1 math的兩個例子 2 date例子 1.1 使用math實現系統的max方法 1 使用系統自帶的math.max 方法 var max math.max 12,45,78,999,111111 console.log max 2 使用帶參的函式 function g...