JavaScript函数体系
第4章 JavaScript函数
1. 函数基本介绍
① 为什么需要函数
函数最大的好处就是将零散的代码封装到了一起,当我们要再次使用该功能的时候,不需要再重新书写代码,只需要调用封装好的函数就可以了。
函数再有一些地方也被称之为方法。
② 函数的创建
在JavaScript里面,创建函数的关键字为function
语法: function 函数名(形式参数)
{
//函数体
}

除了上面的方法,我们创建函数还有一种方法,通过对象来创建。

③ 函数的调用
方法非常简单,只需要写上函数名,后面加上一对括号(括号里面填写相应的参数)
软性要求:函数名一般是动词,因为函数一般描述的是一个动作

④ 函数的参数
JavaScript里面形参声明的时候不要加上var,加上反而会报错,如下:

1)参数名可以重复,同名的参数取最后一个参数值

2)即使函数声明的时候要求传递参数,但是在调用的时候也可以不传递参数。

3)在调用函数的时候,可以传递多个参数给函数,不用管声明函数时要求传递多少个参数

当一个函数要被执行的时候,我们的系统会做一些准备工作。其中之一就是为函数创建一个arguments的对象属性。arguments有点类似于数组,就是拿来存储所有传递过来的参数的。

和函数体相关的属性
1. arguments.length
表示函数被调用时实际传递的参数的个数

2. caller属性
caller属性并不是arguments对象属性里面的,是函数对象本身的属性。用来显示函数的调用者。如果函数是在全局环境中被调用,那么它的值就是null。如果是另一个函数中被调用,它的值就是那个函数。
全局执行环境中被调用

被一个函数调用

效果:

3. callee属性
callee属性就是arguments里面的一个属性,作用就是打印出正在执行的函数,也就是函数自己本身。

效果:

⑤ 函数的返回值
返回的关键字为return。JavaScript里面即便不写return,也会有返回值,返回一个undefined。

2. 函数的进阶
① 回调函数
所谓回调函数,就回头调用某个函数。例如:函数A有一个参数,这个参数是函数B。当我们函数A执行完之后就会去执行函数B。这就是一个回调的过程。(通俗的讲,就是将一个函数作为参数传递给另一个函数)

示例2:

② 匿名函数
所谓匿名函数,就是没有名字的函数,就是匿名函数。如下:

但是这里有一个问题,没有名字了,我们无法调用这个函数,这个时候,我们可以采用将函数赋值给一个变量,这个时候,这个变量名就是函数名

第2种调用匿名函数的方式:
用一对小括号将函数括起来,后面再跟上一对小括号,代表立即执行该函数。

注意:后面的括号我们是可以传递参数过去的

课堂练习:用户输入两个数a和b,要求a小于b。计算从a累加到b的值。
例如:100 50 提示:数值范围不正确
1 100 输出5050

变量的作用域和生命周期(重要)
① JavaScript里面没有块级作用域
C语言里面存在块级作用域,由一对花括弧来封闭代码,外界无法访问到。

但是,JavaScript没有块级作用域

② 执行环境
所谓执行环境,一般是和函数挂钩。每个函数都有自己的执行环境(换句话说,都有自己的作用域。)

效果:无法找到i,因为i是在test函数里面定义,test函数有自己独立的作用域(或者说是执行环境)

③ 作用域链
如果我们在某一个函数里面要使用某一个变量,但是我们在函数里面又没有声明这个变量,那么系统就会顺着函数的作用域链一层一层往外找。

结果:会输出10,虽然test函数里面没有i这个变量,但是系统会顺着函数的作用域链一层一层往外找。
④ 查询标识符
当我们的函数遇到一个变量的时候,它会顺着作用域链一层一层往外找,直到找到最近的那个变量。

上面的代码会弹出7,但是如果没有var i = 7;会弹出3;如果连var i= 3;也没有,会弹出10,如果连var i= 10也没有,会报错,找不到i。
JavaScript函数体系的更多相关文章
- JavaScript工作体系中不可或缺的函数
一.函数的概念 日常生活中,我们要完成一件事,总是习惯先有一个计划,后期按照计划,一步一步执行,则能够完成,并且达到一定效果实现一定的功能.在编程的世界里,“功能”可称呼为“函数”,因此“函数”即一段 ...
- ABP(现代ASP.NET样板开发框架)系列之21、ABP展现层——Javascript函数库
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之21.ABP展现层——Javascript函数库 ABP是“ASP.NET Boilerplate Project ...
- JavaScript权威设计--JavaScript函数(简要学习笔记十一)
1.函数调用的四种方式 第三种:构造函数调用 如果构造函数调用在圆括号内包含一组实参列表,先计算这些实参表达式,然后传入函数内.这和函数调用和方法调用是一致的.但如果构造函数没有形参,JavaScri ...
- JavaScript 函数
JavaScript 函数 介绍:函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.嗯,就像Java中封装的方法一样. 将脚本编写为函数,就可以避免页面载入时执行该脚本. 函数包含着一些代码 ...
- javascript 函数初探 (一)--- 神马是函数
神马是函数? 所谓函数,本质上是一种代码的分组形式.我们可以通过这种形式赋予某组代码一个名字,以便与之后的调用.下面,我们来示范以下函数的声明: function sum(a, b){ var c = ...
- JavaScript函数的概念
函数是这样的一段代码,它只定义一次,但可能被执行或调用任意多次. JavaScript函数是参数化的:函数的定义会包含形参,这些参数在函数的整体中像局部变量一样工作.函数调用时会为形参提供实参的值.除 ...
- Javascript函数重载,存在呢—还是存在呢?
1.What's is 函数重载? );//Here is int 10 print("ten");//Here is string ten } 可以发现在C++中会根据参数的类型 ...
- JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别
函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {-};使 ...
- javascript 函数重载 overloading
函数重载 https://en.wikipedia.org/wiki/Function_overloading In some programming languages, function over ...
随机推荐
- 问题:OAuth2.0;结果:帮你深入理解OAuth2.0协议
1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间.是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题. 豪车一般配备两种钥匙:主钥匙和泊车钥匙.当你到酒 ...
- 【java并发编程艺术学习】(四)第二章 java并发机制的底层实现原理 学习记录(二) synchronized
章节介绍 本章节主要学习 Java SE 1.6 中为了减少获得锁 和 释放锁 时带来的性能消耗 而引入的偏向锁 和 轻量级锁,以及锁的存储结构 和 升级过程. synchronized实现同步的基础 ...
- .NET牛人养成计划
六大喜讯:(1)对于小型平板等授权免费(2)编译平台Rosly开源,ASP.NET全系平台开源(ASP.NET,Web API):ASP.NET跨平台,Mono,让ASP.NET运行在Linux和Un ...
- atoi函数实现
#include int my_atoi(const char *str) { int result; char sign; for (; str && isspace(*str); ...
- 8、泛型程序设计与c++标准模板库4.标准c++库中的算法
标准c++算法是通过迭代器和模板来实现的,其实算法本身就是一种函数模板. 算法从迭代器那里获得一个元素,而迭代器则知道一个元素在容器中的什么位置.迭代器查找元素的位置并将这些信息提供给算法以便算法能够 ...
- Git fatal:$'GIT_DIR' too big
这句表示的是创建的文件的名称太长了,将你需要放置的代码的文件名字改短一些即可!
- C++基础之预处理和语句
(1)C++语言源程序中可以使用一些预处理中的编译命令,这些命令在程序被正常编译之前执行,被称为预处理命令,这些命令所实现的功能被称为预处理功能(2)常用的预处理命令有文件包含命令.宏定义命令和条件编 ...
- vue-cli目录结构及说明
使用vue-cli有时会出现一些莫名的问题,清楚项目的结构文件及其意义方便更好的开发和解决问题,介绍如下: build/ // 项目构建(webpack)相关代码 build.js // 生产环境构建 ...
- 反射实现数据库增删改查DAO及DAOImpl源代码(二)
配置文件源码 配置文件主要用于配置数据库对象(javaBean),配置表名,配置查询条件,配置删除条件 文件名称:objectConfigPath.properties 这个配置文件里面配置的是另外一 ...
- [Django笔记] uwsgi + nginx 配置
django 和 nginx 通过 uwsgi 来处理请求,类似于 nginx + php-fpm + php 安装nginx 略 安装配置uwsgi pip install uwsgi 回想php- ...