函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。本文给大家介绍介绍 javascript 中的函数 (二),对 javascript 函数相关知识感兴趣的朋友一起学习吧
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
JavaScript 函数语法
函数就是包裹在花括号中的代码块,前面使用了关键词 function:
- function functionname()
- {
- 这里是要执行的代码
- }
当调用该函数时,会执行函数内的代码。
可以在某事件发生时直接调用函数(比如当用户点击按钮时),并且可由 JavaScript 在任何位置进行调用。
提示:JavaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。
1. 函数的作用域
作用域是指变量的存在的范围。javascript 中有两种作用域,一种是全局作用域,变量在整个程序中一直存在,另一种是函数作用域,变量只存在于函数体内部。在函数体外部声明的变量就是全局变量,它也可以在函数体内部读取。
- var v = 1;
- function f(){
- console.log(v);
- }
- f();
上述这就是全局变量,函数体内部也可以使用。
- function f(){
- var v = 1;
- }
而这个就是局部变量,函数体外部无法读取。
2. 闭包
闭包就是定义在函数体内部的函数。
- function f() {
- var c = function (){};
- }
上诉代码中 c 是定义在函数体 f 中的,c 就是闭包。
闭包的特点就在于,在函数体外部可以读取函数体内部的变量。
- function f() {
- var v = 1;
- var c = function() {
- return v;
- };
- return c;
- }
- var o = f();
- o();
- // 1
上面的代码显示,原先在函数 f 外部,我们是没有办法读取内部变量 v 的。但是,借助闭包 c,可以读到这个变量。
闭包不仅可以读取函数内部变量,还可以使得内部变量记住上一次调用时的运算结果。
- function f(b) {
- return function() {
- return b++;
- }
- }
- var b = f(5);
- b() // 5
- b() // 6
- b() // 7
函数内部的 b 变量,每一次调用都是在上一次调用时的值的基础上进行计算的。
来源: