前端开发中的在函数数据类型详解
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 匿名函数方式
- 自执行函数,定义和执行一起完成
;(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();
- 函数表达式
var a = function(){}