珠峰培训

前端开发中的在函数数据类型详解

作者:fandonglai

2016-07-17 23:39:58

252

function函数数据类型

创建函数,关键字为function ;执行函数,函数名后带小括号
创建函数的步骤:

  • 创建一个函数时,首先开辟一段内存空间,浏览器为其分配一个16进制的地址;
  • 把函数中的代码以字符串的形式存储到空间内;
  • 把当前的地址赋值给函数名.

函数执行步骤:

  • 函数执行时,会为js代码提供一个私有作用域;
  • 把字符串变为js代码,并从上至下执行
    私有作用域保护了里面的变量不受外界干扰,这种形成的保护机制叫闭包

1 函数的返回值

由于闭包的机制导致了在函数体外面无法获取里面变量的值,所以需要关键字return为函数提供出口
return 并不是把变量返回给外边,而是把变量的值返回到外边
若没有写return则默认返回结果为undefined;若只写return而没写变量,则为undefined
函数在return 之后,后面的语句不再执行

2 函数的参数集合

arguments为函数接收参数的集合,但是它不是数组,而是一个类数组
arguments的数据类型为对象;以数字作为索引,从0开始;有length属性。
函数的形参作用:用来实现一个功能,把需要的变量定义到形参上,在执行时提供。
根据参数的不同,函数可以实现一个功能的多种形态。
若定义了形参而执行时未赋值,则为undefined。
arguments.callee代表当前执行函数的本身,它在哪一个函数中运行,就代表哪个函数

3 匿名函数方式

  1. 自执行函数,定义和执行一起完成
;(function(num){
//定义部分
})(100); //执行部分
~function(){}();
!function(){}();
+function(){}();
-function(){}();
//可用来传参
(function(x,y){
console.log(x+y);
})(2,3);
//带返回值
var sum=(function(x,y){
return x+y;
})(2,3);
console.log(sum);

~function(){
var name='~'
console.log(name);
}();

!function(){
var name='!'
console.log(name);
}();

;(function(){
var name=';'
console.log(name);
})();

-function(){
var name='-'
console.log(name);
}();

//逗号运算符
1,function(){
var name=',';
console.log(name);
}();
```
`
``javascript
//异或
1^function(){
var name='^';
console.log(name);
}();

//比较运算符
1>function(){
var name='>';
console.log(name);
}();

~+-!(function(){
var name='~+-!';
console.log(name);
})();

~!(function(){
var name='~!';
console.log(name);
})();

(function(){
var name='call';
console.log(name);
}).call();

(function(){
var name='apply';
console.log(name);
}).apply();
  1. 函数表达式
var a = function(){}