js的函数基础
函数的声明:3种方法:
第一种:
关键字:function
声明方法:function 函数名(形参1,形参2.。。。) { 函数体 }
函数不掉用不执行: 调用方法:函数名();
第二种: 赋值命名法;匿名函数数
var fn = function(形参) { 函数体 };
第三种:构造函数命名法:
var fn = new Function();
参数:
参数可以提高函数的复用性的变量;
函数 形参 相当于在函数中声明的局部变量;在全局中输出函数的形参 会报错;
函数名后边的括号里声明的参数为 形参;
调用过程函数时括号里的参数为 实参;
形参的默认值为underfind;
方法重载和方法重写(强类型里面向对象语言);
方法重载:同一个函数名,不一样的形式参数个数,这两个是不同的函数;
子啊JS里没有方法重载;重要函数名相同就是同一个函数;
方法重写:子类继承的父类的方法,可以重新被覆盖掉;
JS里没有;
JS里相同的函数名,后边的方法会把前边的覆盖;
在声明的函数中;函数名.length的方法会返回函数的形参个数;
实参个数利用arguments内置对象来,只能在函数体内使用;
返回值:
函数内部的变量,函数外部无法直接访问;
想访问函数内部的变量,需要用返回值;
函数返回值问题:
函数没有设置return 或者设置了reurn后边没有加东西,函数都会返回underfiend;(函数默认返回值为underfind);
函数有return,并且在后边加了东西,返回return后边的值;
函数的return会终止函数的执行,return后边的函数代码将不再执行;
参数和返回值的总结:
接收函数的返回值时:
1.要定义变量接收函数返回值
2.直接打印执行函数
函数名 === 整个函数 === arguments.callee;
script标签加载时指教在函数名不加载函数体;
变量的作用域:
根据变量的作用范围可以分为:
全局变量:在哪里能被调用的变量;
1.函数范围外的变量;
2.任何位置不带有关键字var 声明的变量都是全局变量;
局部变量:只能在函数体内调用;
在函数范围内用var声明的变量为局部变量;(函数必须初始化才能被函数外访问)
局部变量函数执行完毕后立即回收;
函数的加载只加载函数名不加载函数体;只有当调用的时候才能加载函数里声明的全局变量;
for()循环中的变量为全局变量,但是也要看for循环的具体位置在哪里;
隐式全局变量:
function fn() {
var n1 = n2 = n3 = 111;
}
其中的n2和n3是隐式全局变量
(预解析)变量声明提升:
与解析:
1.排错(就是括号写不全等语法错误问题)
2.变量声明提升;
js的解析过程中,js把所有的变量函数全部提升到js的最顶端;
1.变量提升:不提升赋值程序,之提升变量的声明;
2.先提升变量正在提升函数;
3.变量提升只提升声明,函数提升提升整个函数;
console.log(aaa);
var aaa = 111;
function aaa() {
alert(111);
}
打印的值为aaa函数;
3.调用函数时:提升效果相同;
4.return也不影响函数的提升
就近原则:
哪个变量近利用哪个变量;
浙公网安备 33010602011771号