js函数-构成


前言

  函数是一种封装,在任何语言中都是一个核心概念。在js中,函数是做为对象的子类型存在的。可以拥有自己的属性和方法,可以做为值进行传递,这两个特性让js拥有使用函数式编程的能力。

函数的声明

  字面量声明:就是使用function关键字后面跟上固定语法。

function fnName(option1,option2){
  // 这里是代码块
}

  作为函数表达式:只要函数出现的地方,不是函数本身的function 关键字打头的,都叫函数表达式。

// 作为函数表达式的函数
var fn = function(){}

函数的构成

  形参:函数定义的时候在小括号里面定义的参数列表。用来接收实际参数。

  实参:实际调用函数的时候传入的参数。

  return:结束函数执行的同时把后面 跟着的值返回出去,作为函数的产出。是可选的。不显示返回参数的话执行后会默认返回undefined。

  函数的执行:函数表达式后跟一对圆括号()就会执行。

  作为对象的函数:js中的函数作为对象类型是可以拥有自己的属性的。

// 一个做作的加法函数
function add(a,b){ return add.calculate(); } // 为作为对象的函数定义一个calculate属性 这个属性的值指向一个匿名的function。
add.calculate = function(){ let num = 0; Array.prototype.map.call(this.arguments,function(item){ num += item; }) return num; } console.log(add(1,3)); // 4

函数的两个属性

  js中函数的形参和实际运行时传入的实参个数可以是不对等的。默认的从左到右一一对应,多传或少传也不会报错的。

  arguments:可以在函数体内通过函数名访问argument获得函数运行时的实参列表。

  length:可以获取函数定义时,指定的形参个数。

  使用arguments定义一个重载的函数(根据不同实参个数做不同操作,jq的重载从概念上是这么干的)

function getSum(){ // 获取实参列表
    var arg = getSum.arguments; // 没有参数就直接返回 -1
    if(arg.length === 0){return -1} // 只有一个参数就直接返回这个参数
    if(arg.length === 1){ return arg[0]; } var sum = 0; Array.prototype.map.call(arg,function(item){ // item就是实参
        sum += item; }) return sum;
}

 

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM