JavaScript-函数

2018-05-08  本文已影响0人  权游一里

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);

函数的属性和方法

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();

特点

上一篇下一篇

猜你喜欢

热点阅读