1.javascript函数
函数就是某一个具体功能实现代码的集合
函数的创建
function 函数名称(参数列表){函数体}
[1]函数按照名称分为有名函数和匿名函数
有名函数:function test1(){}
匿名函数:window.οnlοad=function(){}
[2]函数按照参数分为:无参数函数和有参数函数
参数——参数就是局部变量,接收函数之外的数据进入本函数中进行运算活动。
无参数的函数:function test1(){}
有参数的函数:function test2(num,str){}
[3]函数按照返回值分为:无返回值的函数和有返回值的函数
返回值——函数执行完成以后的最终执行结果
无返回值的函数:function test1(){}
有返回值的函数:function test1(){ return xxxx;}
函数声明后不会立即执行,会在我们需要的时候调用到。
函数的调用:1.要什么,给什么2.给什么,收什么
2.函数表达式
[1]表达式——有运算数据和运算符号组成的运算式子
表达式除过 1+1 / 10>3 / true || false / typeof str这些, 还有对象调用属性/对象调用方法都是表达式。
var student={name:"zhangsan",
test1:function(){}}
student.name;//zhnagsan
student.test1();
函数表达式---将函数的创建赋值给变量,函数没有名称,此时变量名称就成了函数名称。
var myfun=function(){} //函数表达式
在使用的时候直接用变量名称表示了函数/函数的结果。
[2]new Function()--通过new Function(函数的参数,函数体中的代码)
var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);
[3]函数提升
之前都是先创建出函数,然后在调用创建的函数
function my1(){
alert("测试函数");
}
my1();
函数提升---先调用没有创建的函数,然后在创建函数,
在执行的时候创建函数会提升到调用函数之前执行。
my1();
function my1(){
alert("测试函数");
}
[4]自调用函数---将需要被调用的函数用“()”包围,然后最后跟随一个“()”表示调用。
(function test3(){alert("自调用函数");})();
(function test3(num1,num2){
alert("自调用函数--num1=="+num1+",num2=="+num2);
})(100,200);
[5]函数可作为一个值使用
function myFunction(a, b) {
return a * b;
}
var num = myFunction(2, 3);
var x=num * 2;
var x = myFunction(2, 3) * 2;
[6]函数是对象
在 JavaScript 中使用 typeof 操作符判断函数类型将返回 "function" 。
function my1(a, b) {
return a * b;
}
alert(typeof my1);//function
但是JavaScript 函数描述为一个对象更加准确。
JavaScript 函数有 属性 和 方法。
arguments.length 属性返回函数调用过程接收到的参数个数.
function myFunction(a, b) {
return arguments.length;
}
toString() 方法将函数作为一个字符串返回.
function myFunction(a, b) {
return a * b;
}
var txt = myFunction.toString();
[7]函数参数
参数---参数就是局部变量,接收函数之外的数据进入本函数中进行运算活动。
函数的参数分为
显式参数(Parameters)与隐式参数(Arguments)
显式参数(Parameters)--在函数创建的时候,写在"()"中的就是显式参数。
function myFunction(a, b) {
return arguments.length;
}
a和b就是myFunction函数的显示参数
隐式参数(Arguments)---在函数创建的时候,"()"中没有参数定义,
调用的时候可以传递参数值,传递的参数值被默认封装到了
arguments数组对象
function test4(){
//alert(arguments); //[object Arguments]
alert(arguments[0]); //100
alert(arguments.length); //2
}
test4(100,200);
[8]函数的调用
1.作为一个函数调用
function test1(num1,num2){
return num1+num2;
}
var res=test1(100,200);
2.函数作为方法调用
对象中可以包含属性和方法,对象的属性就相当于是变量,对象的方法可以使用函数来创建。
通过对象调用方法的方式来调用函数。
var student = {
method:function(num1,num2){
alert("有参数的函数");
}
}
student.method(120,200);
3.使用构造函数调用函数 -- 通过new 来调用函数
function test1(num1,num2){
return num1+num2;
}
var rest= new test1(100,200);
4.作为函数方法调用函数
javascript中有专门调用函数的方法
call()
function test5(num1,num2){
return num1+num2;
}
var rest=test5.call(rest,100,200);
apply()
function test5(num1,num2){
return num1+num2;
}
var prame=[200,200];
var rest=test5.apply(rest,prame);
3.call()与apply()的区别?
call()与apply()的共同之处:
1.都是通过当前函数名称调用
2.call()与apply()的第一个参数是它们的返回值
call()与apply()的不同之处:
call()方法的参数从第二个开始是函数本身所需的参数值,逐一传入。
apply()方法的第二个参数是函数本身所需参数的数组。
两个方法都使用了对象本身作为第一个参数。
两者的区别在于第二个参数:
apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,
而call则作为call的参数传入(从第二个参数开始)。