前言

  函数是一种封装,在任何语言中都是一个核心概念。在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)); //

函数的两个属性

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

  

js函数-构成的更多相关文章

  1. 3.3 js函数

    1.函数语法: 函数声明的方式:function 函数名(参数1,参数2-){//函数体;}函数调用:函数名(参数1,参数2-); 函数内不一定都指定返回值. 如果需要指定返回值,可用 return ...

  2. Js函数function基础理解

    正文:我们知道,在js中,函数实际上是一个对象,每个函数都是Function类型的实例,并且都与其他引用类型一样具有属性和方法.因此,函数名实际上是指向函数对象的指针,不与某个函数绑定.在常见的两种定 ...

  3. js函数表达式和函数声明的区别

    我们已经知道,在任意代码片段外部添加包装函数,可以将内部的变量和函数定义"隐 藏"起来,外部作用域无法访问包装函数内部的任何内容. 例如: var a = 2; function ...

  4. 通用js函数集锦<来源于网络> 【二】

    通用js函数集锦<来源于网络> [二] 1.数组方法集2.cookie方法集3.url方法集4.正则表达式方法集5.字符串方法集6.加密方法集7.日期方法集8.浏览器检测方法集9.json ...

  5. 通用js函数集锦<来源于网络/自己> 【一】

    通用js函数集锦<来源于网络/自己>[一] 1.返回一个全地址2.cookie3.验证用户浏览器是否是微信浏览器4.验证用户浏览器是否是微博内置浏览器5.query string6.验证用 ...

  6. 100多个基础常用JS函数和语法集合大全

    网站特效离不开脚本,javascript是最常用的脚本语言,我们归纳一下常用的基础函数和语法: 1.输出语句:document.write(""); 2.JS中的注释为//3.传统 ...

  7. JS函数

    1.document.write(""); 输出语句2.JS中的注释为//3.传统的HTML文档顺序是:document->html->(head,body)4.一个浏 ...

  8. js函数和运算符

    函数是由事件驱动或者它被调用时执行可重复使用的代码块. <script> function myFunction(){ Alert(“hello World!”): } </scri ...

  9. JavaScript学习03 JS函数

    JavaScript学习03 JS函数 函数就是包裹在花括号中的代码块,前面使用了关键词function: function functionName() { 这里是要执行的代码 } 函数参数 函数的 ...

  10. JSF页面中使用js函数回调后台bean方法并获取返回值的方法

    由于primefaces在国内使用的并不是太多,因此,国内对jsf做系统.详细的介绍的资料很少,即使有一些资料,也仅仅是对国外资料的简单翻译或者是仅仅讲表面现象(皮毛而已),它们的语句甚至还是错误的, ...

随机推荐

  1. Java基础知识整理之static修饰属性

    static 关键字,我们在开发用的还是比较多的.在<Java编程思想>有下面一段话 static 方法就是没有 this 的方法.在 static 方法内部不能调用非静态方法,反过来是可 ...

  2. loj#2269. 「SDOI2017」切树游戏

    还是loj的机子快啊... 普通的DP不难想到,设F[i][zt]为带上根玩出zt的方案数,G[i][zt]为子树中的方案数,后面是可以用FWT优化的 主要是复习了下动态DP #include< ...

  3. 1--单独使用jdbc开发问题总结

    1.数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能. 设想:使用数据库连接池管理数据库连接. 2.将sql语句硬编码到java代码中,如 ...

  4. VLAN虚拟局域网技术(三)-计算机网络

    本文主要知识来源于学校课程,部分知识来自于H3C公司教材,未经许可,禁止转载.如需转载,请联系作者并注明出处. 本节主要介绍 pVLAN和 动态VLAN. 1.   pVLAN:英文全称Private ...

  5. ultraedit激活

    使用期满的解决办法:https://blog.csdn.net/dfh00l/article/details/52093630 下载:https://blog.csdn.net/qq_16093323 ...

  6. Trustzone——利用硬件对数据加密,秘钥存在芯片里

    我是看 https://zhuanlan.zhihu.com/p/26441212 这个文章知道trustzone自身会存储秘钥,这个秘钥可以来自用户指纹,也可以来自云端下发的key. Truztzo ...

  7. MFC默认窗口类名称

    // special AFX window class name mangling #ifndef _UNICODE #define _UNICODE_SUFFIX #else #define _UN ...

  8. python 案例之老王开枪

  9. 一个节点rac+单节点dg网络配置(listener.ora与tnsnames.ora)

    环境说明:  实验环境是 一个节点的 rac + 单机dg    (主备全部用asm存储) tnsnames.ora  文件  (oracle用户) node 1 : node1-> pwd / ...

  10. java代码优化(1)---

    代码的优化,需要考虑的维度很多.但是代码的优化并不是减少代码量,有的时候我们需要增加代码来提高代码的可读性. 1.正确标记变量 2.封装某个动作 3.注意函数的写法 4.不容易理解的东西,加注释