首先,有一个概念不是语言支持功能,这种语言可以称为功能语言。函数语言中的函数(函数)除了被调用之外还有其他一些属性。以下三点:
1。函数是一个操作元素。
2。在一个函数中保存数据
3的运作。函数对函数没有任何副作用。
1。函数是一个操作元素。
当调用一个公共函数调用时,抽象地理解它:函数是一个操作符,传入的参数是一个操作数;
但当Javascript函数作为另一函数的参数,它是通过引用,这传入的参数可以理解为一个操作元。结论是功能(作为传入参数)具有动作元素的含义,以及功能参数没有不同于普通的参数。

两。在一个函数中保存数据
在命令语言中,函数中的私有变量(局部变量)不能被保存,从程序的执行开始,在堆栈上分配局部变量,函数执行后释放堆栈,从而不能保存函数中的数据。
在Javascript的函数中,函数中的私有变量可以被修改,当它再次进入函数时,修改的状态将继续:
复制代码代码如下所示:
var集,得到;
函数的MyFunc(){
var值= 100;

功能set_value(v){
值=v;
}
功能get_value(){
返回值;
}

为set_value;
得到= get_value;
}
MyFunc();
console.log(get()); / / 100
集合(300);
console.log(get()); / / 300
一个优点是很明显的,如果一个数据可以存储在连续函数中,那么函数(作为一个构造函数)就可以计算出来,使用这些数据被分配给一个实例;在多个实例之间,因为数据存在不同的闭包,因而不相互影响。
在面向对象的术语中,它意味着不同的实例有它们自己的私有数据(从一个公共数据复制):
复制代码代码如下所示:
函数的MyObject(){
var值= 100;
this.setvalue =函数(){
值=v;
}
this.showvalue =函数(){
console.log(价值);
}
}
var obj1 =新的MyObject();
var obj2 =新的MyObject();

(300)obj2.setvalue;
obj1.showvalue(); / / 100;
三。函数中的操作对函数没有任何副作用。
这一特点的意义在于:
*函数使用入口参数进行操作而不修改它(用作值参数而不是变量参数)。
*函数以外的其他数据(如全局变量)的值在操作期间不会被修改。
*在操作之后通过一个函数返回外部系统的值。

这样的函数在操作过程中对外部系统没有副作用,但是我们注意到Javascript允许函数中全局变量的引用和修改,甚至全局变量都可以声明,这实际上是对其功能特性的破坏。
此外,Javascript还允许在函数内修改对象和数组成员——这些成员应该被对象方法修改,而不是对象系统以外的其他函数。
所以Javascript这个特性只能通过开发者的编程习惯来保证。