理顺 JavaScript (17) - 函数


函数的名称
function fun() {
  alert(123);
}
fun();       //123

f = function() {
  alert(123);
}
f();         //123

msg = alert;
msg(123);    //123

 
 
 
 
 

 

 

  

函数的返回值
function fun() {
  var num = 1;
  return num; //函数可以没有 return; 如果有 之后的代码不会被执行
  num++;
  return num;
}

var r = fun();
alert(r); //1

 
 
 
 
 

 

 

  

函数的既定参数和实际参数
/* 预定参数的个数 */
function fun(a, b, c, d) {
  alert(fun.length);              /* 预定参数个数 */
  alert(arguments.callee.length); /* 也可以这样, arguments.callee 标识当前函数 */
}
fun(11, 22); //4 / 4


/* 实际参数的个数、遍历参数 */
function fun(a, b, c, d) {
  alert(arguments.length); //实际参数个数
  
  for (var i=0; i < arguments.length; i++) {
    alert(arguments[i]);
  }
}
fun(11, 22, 33); //3 / 11 / 22 / 33


/* 不确定参数求和 */
function fun() {
  var num = 0;
  for (var i=0; i < arguments.length; i++) {
     num += arguments[i];
  }
  return num;
}
alert(fun(11, 22, 33)); //66

 
 
 
 
 

 

 

  

this 表示调用函数的对象
<div name='MyDiv' onclick="alert(this.name);">aaaaaa</div> //点击会显示: MyDiv

 
 
 
 
 

 

 

  

caller 表示调用该函数的函数
function fun1() {
  return arguments.callee.caller.arguments[0]; //或写作: fun1.caller.arguments[0];
}

function fun2() {
  alert(fun1());
}

fun2(11, 22); //11

 
 
 
 
 

 

 

  

call、apply
function sum(a, b, c) {
  alert(a+b+c);
}

sum(1, 2, 3);               //6
sum.call(null, 1, 2, 3);    //6
sum.apply(null, [1, 2, 3]); //6

//call 与 apply 都是调用函数的方式, 这里 null 以外的是函数的参数; apply 需要把参数写在数组里; 其目的就是重置第一个参数.

//call 与 apply 的第一个参数表示调用该函数的对象, null 表示无调用对象; 譬如:
function msg(s) {
  alert(s + ' ' + this.toString());
}

var str = 'ABC';
var num = 123;

msg.call(str, 'Hi'); //Hi ABC
msg.call(num, 'Hi'); //Hi 123

 
 
 
 
 

 

 

  

使用 Function 类创建函数
var fun = new Function('alert(123)');
fun(); //123

var fun = new Function('a,b', 'return a+b');
alert(fun(11, 22)); //33

 
 
 
 
 

 

 

  

一个关于闭包的小例子
function fun(x) {
  return function(y) {return x+y;}
}

var a,b,c;
a = fun(1);
b = fun(2);
c = fun(3);

alert(a(1)); //2
alert(b(2)); //4
alert(c(3)); //6

 
 
 
 
 

 

 

  

eval : 这是一个全局函数, 它执行字符串中的 JS 代码并返回结果
var str = '((1 + 2) * 3 - 1) / 4';
alert(eval(str)); //2

 
 
 
 
 

 

 

  

转载于:https://my.oschina.net/hermer/blog/320769

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值