JavaScript函数的一些用法总结

JavaScript函数的一些用法总结

函数(Function)

一、定义

JavaScript 使用关键字 function 定义函数。具体定义情况如下:

function name(参数 1, 参数 2) {
    代码块
}

定义函数可以有以下两种形式:

function fnName(){
    代码块
}  

var fnName=function(){
    代码块
} 

二、参数,返回值

函数的参数列表是可变的,数据类型也均是任意类型,arguments可以访问传到函数内部所有的参数。
arguments是一个对应于传递给函数的参数的类数组对象,该对象是所有函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数,第一个参数在索引0处。
我们可以通过类似与访问Array的方式来访问参数,例如:

arguments[0]//函数第一个参数
arguments[1]//函数第二个参数
arguments[2]//函数第三个参数

虽然arguments对象与Array对象很相似,但它并不是一个Array对象,所以也就没有Array对象所对应的属性,值得一提的是,它有一个length属性与Array相同。
我们可以通过Array.from()方法把arguments对象转换成为一个真实数组。
以下是一个arguments对象用法实例:

function addition() {
    var count =0,
        len = arguments.length;
    for(var i=0; i<len; i++){
        count += arguments[i];
    }
    return count;
}
addition()                           
addition(1)                         
addition(1,2,3,4);                   

输出结果分别为0,1,10。即参数不定量,可根据自己的输入进行改变,有点类似于C++的重载函数。

当函数没有明确的返回值时,返回undefined,有返回值则返回。

三、动态函数

JavaScript支持用户创建动态函数。
先说明一下动态函数的必要性,由于在js中,经常会使用到函数,普通函数虽然很方便,但是,形式略显复杂,特别是代码量大的时候,会大大增加js代码的长度和复杂性,这时,我们可以使用动态函数,动态函数形式比较简洁,并且比普通函数表达式更灵活。
其基本结构如下:

var f1=new Function(x,x1,x2,x3……函数体);


//具体例子
var f1=new Function('aaa',"alert(aaa)");
//调用
f1('hello');
//运行结果为弹出对话框hello

这里需要注意Function和function的区别,function是js里的一个标识符,而Function是js中的构造函数,在构造函数中必须传入String格式,所以说如果我写成

var f1=new function('aaa',"alert(aaa)");

该代码执行时会报错:Uncaught SyntaxError: Unexpected token return,就是因为需要传入的参数应为String类型。

四、函数的属性和方法

1.length属性。length属性表示一个函数期待接收的命名参数的个数,示例如下:

function s1(){
alert("s1");
}

function s2(x){
alert(x);
}

function s3(x1, x2){
return x1 + x2;
}

alert(s1.length); 
alert(s2.length); 
alert(s3.length); 

执行结果为0,1,2

2.apply()方法和call()方法
这两个方法均用在特定的执行环境中调用函数
apply()方法接收两个参数:一个是在其中运行函数的执行环境,另一个是参数数组。
call()方法,第一个参数与apply()方法相同,其余参数都直接传递给函数,也就是说传递给函数的参数必须逐个列举出来。
apply()和call()方法强大之处在于可以扩充函数赖以运行的作用域,而且不需要对象对该方法有任何的耦合关联。
使用这些方法可以实现继承,具体示例如下:


function people(name){      
    this.name = name;      
    this.showName = function(){      
        alert(this.name);      
    }      
}      
    
function women(name){    
    people.call(this, name);    
}      
    
var women = new women("CoCo");     
women.showName();
//弹出对话框coco
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值