基本功:一句话体现你的能力,经验,遇到什么问题用什么方法,有自己的一套思想。学会企业级开发。
编程的思想:高内聚,低耦合。内部代码联系度强,意味着模块化强,低耦合,重复度低,让一个代码块有强的功能性,独立性。
栈:stack 堆:heap 域:scope
函数名命名规则:
不能数字开头
小驼峰命名法:复合单词:第一个单词小写,之后的单词首字母大写
数学中 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!= 43!…
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 和callercallee表示返回该调用函数;caller表示返回调用该函数的函数
function test1(){
console.log(arguments.callee.length); //表示形参长度
test2();
}
test1();
function test2(){
console.log(test2.caller);
}
test1();//返回test1 函数