一、函数概述

  1、概述

    把一段相对独立的具有特定功能的代码块封装起来,形成一个独立实体,就是函数,起个名字(函数名),在后续开发中可以反复调用函数的作用就是封装一段代码,将来可以重复使用。

    在JavaScript中,函数也作为一种数据类型存在,而且是引用数据类型,函数名就是指向其内存空间地址的引用。

    Demo:

 var a = function() {
return 2;
};
var b = a;
a.fname = "tom";
alert(b.fname); //结果为tom

二、使用函数

  1、函数的定义

    a、函数声明

     语法格式

function 函数名(){
// 函数体
}

    b、函数表达式(匿名函数)

     语法格式

var fn = function() {
// 函数体
}

      注意

      •  只定义函数并不会执行,只有当函数被调用才会执行;
      • 函数命名使用 动词+名词 的格式,表示做一件事情。
      • 在 Java 中函数(方法)允许重载,但是在 JS 中函数的重载会直接覆盖掉上一次的定义,即不允许重载。

  2、函数的调用

    语法格式:

函数名(实际参数列表);

         注意:函数体只有在调用的时候才会执行,可以调用多次,重复使用,调用JavaScript函数时系统不检查传入参数的个数和类型

  3、函数的参数

    函数内部是一个封闭的环境,可以通过参数的方式,把外部的值传递给函数内部。

    带参数的函数声明 语法格式:

function 函数名(形参1, 形参2, 形参...){
// 函数体
}

     带参数的函数调用 语法格式:

函数名(实参1, 实参2, 实参3);

     a、形参与实参

     形式参数:在声明一个函数的时候,为了函数的功能更加灵活,有些值是固定不了的,对于这些固定不了的值。我们可以给函数设置参数。这个参数没有具体的值,仅仅起到一个占位置的作用,我们通常称之为形式参数,也叫形参。

     实际参数:如果函数在声明时,设置了形参,那么在函数调用的时候就需要传入对应的参数,我们把传入的参数叫做实际参数,也叫实参。

      b、

    扩展:当传入的参数为基本数据类型时,在函数内部改变形参的值,并不会影响外部实参的值。

  4、函数的返回值

    当函数执行完成后,期望函数给一些反馈进行后续的运算,这个时候就需要函数的返回值。

    a、返回值语法

//声明一个带返回值的函数
function 函数名(形参1, 形参2, 形参...){
//函数体
return 返回值;
} //可以通过变量来接收这个返回值
var 变量 = 函数名(实参1, 实参2, 实参3);

    b、注意事项

      •  如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined
      • 如果函数使用 return语句,那么跟再return后面的值,就成了函数的返回值
      • 如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值也是:undefined
      • 数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,也就是说return后面的所有其他代码都不会再执行。

三、函数的 arguments 隐形参数

  JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。也就是说所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有的实参。arguments是一个伪数组(类似于Java中的可变长参数,因此及可以进行遍历。

  Demo:

   // 求任意个数的和
function getSum() {
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
} var sum = getSum(5, 1, 3, 4);
console.log(sum);

总结:

  (1)方法定义是,形参的类型不用写,返回值类型也不写。

  (2)方法是一个对象,如果定义名称相同的方法,会覆盖

  (3)在JS中,方法的调用只与方法的名称有关,和参数列表无关

  (4)在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际参数

JavaScript 函数(一)的更多相关文章

  1. ABP(现代ASP.NET样板开发框架)系列之21、ABP展现层——Javascript函数库

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之21.ABP展现层——Javascript函数库 ABP是“ASP.NET Boilerplate Project ...

  2. JavaScript权威设计--JavaScript函数(简要学习笔记十一)

    1.函数调用的四种方式 第三种:构造函数调用 如果构造函数调用在圆括号内包含一组实参列表,先计算这些实参表达式,然后传入函数内.这和函数调用和方法调用是一致的.但如果构造函数没有形参,JavaScri ...

  3. JavaScript 函数

    JavaScript 函数 介绍:函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.嗯,就像Java中封装的方法一样. 将脚本编写为函数,就可以避免页面载入时执行该脚本. 函数包含着一些代码 ...

  4. javascript 函数初探 (一)--- 神马是函数

    神马是函数? 所谓函数,本质上是一种代码的分组形式.我们可以通过这种形式赋予某组代码一个名字,以便与之后的调用.下面,我们来示范以下函数的声明: function sum(a, b){ var c = ...

  5. JavaScript函数的概念

    函数是这样的一段代码,它只定义一次,但可能被执行或调用任意多次. JavaScript函数是参数化的:函数的定义会包含形参,这些参数在函数的整体中像局部变量一样工作.函数调用时会为形参提供实参的值.除 ...

  6. Javascript函数重载,存在呢—还是存在呢?

    1.What's is 函数重载? );//Here is int 10 print("ten");//Here is string ten } 可以发现在C++中会根据参数的类型 ...

  7. JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别

    函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {-};使 ...

  8. javascript 函数重载 overloading

    函数重载 https://en.wikipedia.org/wiki/Function_overloading In some programming languages, function over ...

  9. JavaScript语言精粹读书笔记 - JavaScript函数

    JavaScript是披着C族语言外衣的LISP,除了词法上与C族语言相似以外,其他几乎没有相似之处. JavaScript 函数: 函数包含一组语句,他们是JavaScript的基础模块单元,用于代 ...

  10. 常见的JavaScript函数

    JavaScript函数一共可分为5类:常规函数.数组函数.日期函数.数学函数和字符串函数. (1)常规函数(9个) alert函数:显示一个警告对话框,包括一个“确定”按钮. confirm函数:显 ...

随机推荐

  1. mysql小结(了解)

    Mysql总结 1.数据库的概念 """ 数据库:库(文件夹).表(表结构文件.表数据文件(索引结构)).字段(数据的描述).记录(数据的本体) 分类:效率问题(内存大于 ...

  2. application platform as a service (aPaaS)

    Application platform as a service (aPaaS) is a cloud service that provides environments for the deve ...

  3. 【oracle】ORA-00257 archiver error. Connect internal only, until freed

    [原因]归档日志太多导致磁盘空间过小. [解决办法]删除日志或加大空间

  4. java http get和post请求

    1.http工具类 package com.funshion.common.utils; import java.net.URI;import java.net.URL; import org.apa ...

  5. 以py脚本形式ORM操作 及 django终端打印sql语句的设置

    1. 在Django项目的settings.py文件中,在最后复制粘贴如下代码: LOGGING = { 'version': 1, 'disable_existing_loggers': False ...

  6. 【牛客练习赛53】A-超越学姐爱字符串

    // 题目地址:https://ac.nowcoder.com/acm/contest/1114/A /* 找规律(碰运气) n:1 = 2 n:2 = 3 n:3 = 5 n:4 = 8 ... d ...

  7. Redis读写分离技术解析

    背景 云数据库Redis版不管主从版还是集群规格,replica作为备库不对外提供服务,只有在发生HA的时候,replica提升为master后才承担读写流量.这种架构读写请求都在master上完成, ...

  8. Ribbon核心组件IRule及配置指定的负载均衡算法

    Ribbon在工作时分为两步: 第一步:先选择 EurekaServer,它优先选择在同一个区域内负载较少的Server: 第二步:再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地 ...

  9. [C++基础] 数组、指针、内存篇

    一.数组 2.1 int a[2][2]= { {1}, {2,3} },则 a[0][1] 的值是多少? 二维数组的初始化一般有两种方式: 第一种方式是按行来执行,如int array\[2][3] ...

  10. TreeMap源码分析2

    package map; import org.junit.Test; import com.mysql.cj.api.x.Collection; import map.TreeMap1.Ascend ...