JavaScript-函数

JavaScript可以用关键字function来定义函数,函数的调用也不必放在函数声明之后,因为JavaScript存在提升(Hoisting)机制。

提升是JavaScript默认将当前作用域提升到前面去的行为,应用在变量的声明与函数的声明。

JavaScript函数的typeof类型为“function”,它也有属性和方法,也可以说它是一个对象。

函数声明

function funName(parameters){
  //....
}

//函数表达式,也是匿名函数(没有名称)
var fun = function(a,b){ //....};
fun(3,4);

Function()构造函数

var fun = new Function("a","b","return a-b");
fun(4,3);

不过声明函数时,使用function关键字就可以了。

函数自调用

(function(a,b){
  //....
})(3,4);

函数的属性和方法

  • arguments: 是一个参数数组,保存参数信息。
  • call():预定义的函数方法
  • apply():预定义的函数方法
var myObject, myArray;
function myFunction(a, b) {
    return a * b;
}
//按函数参数格式传入参数
myObject = myFunction.call(myObject, 10, 2);
//传入参数数组
myArray = [10, 2];
myObject = myFunction.apply(myObject, myArray);

嵌套函数

在 JavaScript 中,所有函数都能访问它们上一层的作用域。
JavaScript 支持嵌套函数。嵌套函数可以访问上一层的函数变量。

function add() {
    var counter = 0;
    function plus() {counter += 1;}
    plus();    
    return counter; 
}

闭包

闭包就是一种允许函数向关联的父级作用域寻址的访问特权。可以访问另一个函数作用域变量的函数,一般是定义在外层函数中的内层函数。

var add = (function () {
    var counter = 0;
    return function () {return counter += 1;}
})();
 
add();
add();
add();

特点

  • 占用更多内存
  • 不容易被释放
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、JavaScript函数定义 定义一个函数:JavaScript 使用关键字function 定义函数。当然,...
    聂叼叼阅读 1,166评论 1 6
  • 在JavaScript中,函数即对象,程序可以随意操控它们。比如,JavaScript可以把函数赋值给变量,或者作...
    kissLife阅读 959评论 0 0
  • 函数函数定义与调用变量作用域全局变量方法高阶函数闭包箭头函数$generator$ 函数 函数定义与调用 定义函数...
    染微言阅读 629评论 0 5
  • 今天是高考的第一天,翘班出来玩感觉如同逃学的孩子,格外兴奋!故宫和北海上一次到几时来过呢?此行是为了故宫的四僧书画...
    任秋风舞阅读 545评论 0 0
  • 你不愿意种花 你说 “我不愿看见它 一点点凋落” 是的 为了避免结束 你避免了一切开始 ——顾城 《避免》 有人是...
    浮世窥阅读 936评论 6 4