視頻學習之函數function 部分

基本功:一句話體現你的能力,經驗,遇到什麼問題用什麼方法,有自己的一套思想。學會企業級開發。
編程的思想:高內聚,低耦合。內部代碼聯繫度強,意味着模塊化強,低耦合,重複度低,讓一個代碼塊有強的功能性,獨立性。

棧:stack 堆:heap 域:scope
函數名命名規則:
 不能數字開頭
 小駝峯命名法:複合單詞:第一個單詞小寫,之後的單詞首字母大寫

1.爲什麼叫函數

數學中 y = f(x) 有一個輸入,有一個輸出

function test (a,b){
執行語句;
}

這叫函數聲明(也叫字面量),function 相當於var ;
還有一種是 函數表達式: test 在函數外部不可見,但函數內部可以調用。

var sum = function test (a,b){ //test 可以省略,
執行語句;
test();// true
}
test();// undefined
console.log(sum.name)//test 
2. 函數的參數和形參實參的映射關係:

形參默認值:undefined

function test(a,b){
	console.log(test.length);//2
	console.log(argements.length);//3
	console.log(arguements);//[1,2,3]
}
test(1,2,3);

在函數內部可以更改實參的值:

function test(a,b){
	a = 3;
	console.log(argements[0]);
}
test(1,2);//3

但這裏arguments0和 a=3不是同一個,1 是存在堆內存,3是存在棧內存。 arguments是數組,引用類型,存在堆內存中,他們是存在一種映射關係。形參是一個佔位,映射arguments

3.函數遞歸:函數自己調用自己,性能不佔優勢,佔用內存

n的階乘:
不能用 for循環:

分析: 5!= 54!
4!= 4
3!…

function factorial(n){
	if(n === 1){
		return 1;
	}
	return n*factorial(n-1);
}
factorial(4);//24

斐波那契數列:

function fibonacci(n){
	if(n <=2){
		return 1;
	}
	return fibonacci(n-1)+fibonacci(n-2);
}
fibonacci(5);//5
4.立即執行函數:() 全程IIFE

普通函數存在全局執行環境中,ECglobal,不釋放,佔內存的
我們需要一個函數來只是用一次,然後銷燬,於是產生了立即執行函數;
表達式纔可以使用立即執行符號——();
基本寫法:

(function(){})();  (function(){}());
var sum = (function(){return 10})();//sum = 10;
(function test(a){
	console.log(a);//10
})(10);
var a = (6,5)//5 逗號是運算符,返回 “,” 後面的數
5. call apply 更改this指向 ,還有一個是bind

call 和apply 是function的一個方法;

function test (){
	
}
test.call();//相當於test()

二者的區別在於:call傳的是字符串,apply傳的是數組,call(Object,’name’);apply(Object,[‘name’])

6.callee 和caller

callee表示返回該調用函數;caller表示返回調用該函數的函數

function test1(){
	console.log(arguments.callee.length); //表示形參長度
	test2();
}
test1();
function test2(){
	console.log(test2.caller);
}
test1();//返回test1 函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章