js 中的function

1:使用不带括号的函数名,是调用函数指针,而不是调用函数。

2:函数没有重载。(产生了覆盖)

function sum(nub){

return nub+10;

}

function sum(nub){

return nub+20;

}

sum(10); //输出30


3:解析器会率先读取函数声明,并在函数之前就可以执行。而函数表达式,则执行到调用代码时才会执行。

sum(a+b);                                                                   var sum = function(a+b){ return a+b;

}

function sum(a+b){

return a+b;

}


4:作为值的函数

function callFunction(somefunction,A){
  return somefunction(A);
}


function somefunction(a){
  return a;
}


var re = callFunction(somefunction,10);
alert(re)


5:函数内部属性 arguments,caller,this

arguments 的主要用途是保存函数参数,但这个对象还有个叫callee 的属性,该属性是个指针,指向拥有这个arguments 对象的函数。

function factorial (num){

if(num<=1){

return 1;

}else {

return num * arguments.calee(num - 1);  //等价于 return num * factorial(num -1);

}

}

caller 这个属性中保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,它的值为null.

function outer(){

inner();

}

function inner(){

alert(inner.caller); //等价于 alert(arguments.callee.caller);

}

outer();

//输出:



6:每个函数都包含俩个非继承而来的方法:apply()  和 call(). 这俩个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。

(1)apply()方法和call()方法区别就在于接收的参数不同。apply 方法接收俩个参数:一个是在其中运行函数的作用域,另一个是参数数组。第二个参数可以是Array 的实例,也可以是arguments对象。

function sum(num1 + num2){

return num1+num2;

}

 function callSum1(num1,num2){ 

return sum.apply(this,arguments);  //直接传入arguments对象

}

function callSum2(num1,num2){

return sum.apply(this,[num1,num2]); //传入数组

}


alert(callSum1(10,10)); //20

alert(callSum2(10,10)); //20


(2)call() 传递给函数的参数必须逐个列举出来

function sum(num1,num2){

return num1+num2;

}

function callSum(num1,num2){

return sum.call(this,num1,num2);

}

alert(callSum(10,10));//20


(3)在没有参数情况下,选择哪个方法都可以。传递参数本非apply() 和 call()的真正的用武之地,它真正强大的地方是能够扩充函数赖以运行的作用域。

window.color = "red";

var o = {color : "blue"};

function sayColor(){

alert(this.color);

}  

sayColor(); //red

sayColor.call(this); //red

sayColor.call(window); //red

sayColor.call(o);//blue


(4)ECMAScript5 中还定义个bind()方法。这个方法会创建一个函数的实例,其this 值会被绑定到传给bind()函数的值。(作用和call()apply()一样)

window.color = "red";

var o = {color : "blue"};

function sayColor(){

alert(this.color);

}  

var objectSayColor = sayColor.bind(o);

objectSayColor(); //blue







在JavaScriptfunction是定义函数的关键字。function函数有两种定义方式:函数声明和函数表达式。 1. 函数声明 函数声明是最基本的函数定义方式,它由function关键字和函数名组成,函数名后面跟一对圆括号和一对花括号,花括号内是函数体。函数声明的语法如下: ``` function functionName(parameters) { // 函数体 } ``` 其,parameters是函数的参数列表,多个参数用逗号隔开。 示例: ``` function add(a, b) { return a + b; } ``` 2. 函数表达式 函数表达式是将函数赋值给变量,变量名后面跟一对圆括号和一对花括号,花括号内是函数体。函数表达式的语法如下: ``` var functionName = function(parameters) { // 函数体 }; ``` 其functionName是变量名,parameters是函数的参数列表,多个参数用逗号隔开。 示例: ``` var add = function(a, b) { return a + b; }; ``` 另外,函数还支持匿名函数,即没有函数名的函数,示例如下: ``` var add = function(a, b) { return a + b; }; // 调用匿名函数 add(1, 2); ``` 函数的调用可以直接通过函数名加括号来实现,示例如下: ``` // 函数声明调用 add(1, 2); // 函数表达式调用 var result = add(1, 2); ``` 在JavaScript,函数可以作为参数传递给其他函数,这种函数称为回调函数。示例如下: ``` function calculate(a, b, callback) { var result = a + b; callback(result); } calculate(1, 2, function(result) { console.log(result); }); ``` 以上就是JavaScriptfunction函数的用法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值