视频学习之函数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 函数
发布了18 篇原创文章 · 获赞 44 · 访问量 3686

猜你喜欢

转载自blog.csdn.net/qq_44758322/article/details/105550795
今日推荐