通常,函数中定义局部变量在函数作用域结束时消失。再次调用此函数时,会重新创建变量的存储空间,其值会被重新初始化。如想使局部变量的值在程序的整个生命期里仍然存在,可以定义函数的局部变量为静态变量(使用关键字static),并给它一个初始化。初始化只在函数第一次调用时执行,函数调用之间变量的值保持不变。这就是所谓的静态局部变量,具有局部作用域,只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只在定义自己的函数体内始终可见。
举一反三
- 如果需要一个变量只在某个函数中可以使用,且每次执行函数时都重新定义并初始化该变量,那么这个变量应定义为( )。 A: 全局变量 B: 局部变量 C: 静态局部变量 D: 静态全局变量
- 下列关于静态局部变量的说法,不正确的是( )。 A: 静态局部变量是在函数体内定义的变量,其作用域是本函数 B: 静态局部变量的生命期为整个程序 C: 静态局部变量的初始化只做一次,默认初始化的值为0 D: 静态局部变量的生命期和作用域都与全局变量相同
- 关于静态变量,下列说法错误的是: A: 静态局部变量的值具有可继承性。 B: 局部静态变量是在编译时赋初值的,即只赋初值一次。 C: 静态局部变量的值只能在本函数(或分程序)中使用。 D: 静态变量的初始化是在编译时进行的。 E: 静态变量存储空间在程序执行完就释放掉了。
- JavaScript函数变量按作用域来分有全局变量和局部变量。全局变量是指在函数体外定义的变量,对整个程序起作用。局部变量是指在循环体内定义的变量,只对本函数起作用。不同函数中全局变量的访问值是不同的。
- 对于静态局部变量的适应条件,说法正确的是: A: 如果程序中希望保留函数上次调用结束时的值,使用静态局部变量比较合适。 B: 如果初始化后,变量只被引用而不必改变值的大小,使用静态局部变量可以避免每次调用时重新赋值。 C: 函数中的数组要初始化时必须使用静态局部变量。