定义在函数外面的变量(不是别的函数的局部变量)能直接在函数里面使用么? 还是需要当参数传递进去后才能使用?
平常不传递也能直接用了,那当参数传进去还有啥意义?
认证0级讲师
1)函数的目的是把一定的功能封装,并且使其具有一定的重用作用. 2)如果函数中使用的变量都是在函数外面定义的,那么这个函数作用范围仅限在当前函数作用域或当前模块中(其实也是函数)了,达不到复用的目的
bf 说的就是闭包的作用,可以隐藏变量,使其私有化
function a() { var b = {}; function c() { return b; } return c; }
和
function c(b) { return b; }
的意義是截然不同的,
var aa = 123; function add(aa){ aa++ return aa; } console.log(add(aa)) //124 console.log(aa) //123
在aa不是引用的前提下,这样的操作是不会改变aa的值的。 看自己代码使用情况而定
函数内声明的变量,作用域在函数内。 在函数外声明的变量,是全局变量,是在函数可以直接访问。 为什么要传参数? 这样就不会在函数内污染全局变量。
var a = 1; function fn(aa) { a = a + 1; alert(aa); } fn(13); fn(16); //则此时a的值为3;
JS中的作用域为词法作用域,一切定义在函数外面的变量均为全局变量,全局变量就可以在函数内使用,但是你如果以参数传入的话,在函数内部其实是定义了一个同名的变量。
Javascript 闭包 作用于链
获取作用域外的变量的技术,称为闭包,楼主可以了解一下
1)函数的目的是把一定的功能封装,并且使其具有一定的重用作用.
2)如果函数中使用的变量都是在函数外面定义的,那么这个函数作用范围仅限在当前函数作用域或当前模块中(其实也是函数)了,达不到复用的目的
bf 说的就是闭包的作用,可以隐藏变量,使其私有化
和
的意義是截然不同的,
函数内声明的变量,作用域在函数内。
在函数外声明的变量,是全局变量,是在函数可以直接访问。
为什么要传参数?
这样就不会在函数内污染全局变量。
JS中的作用域为词法作用域,一切定义在函数外面的变量均为全局变量,全局变量就可以在函数内使用,但是你如果以参数传入的话,在函数内部其实是定义了一个同名的变量。
获取作用域外的变量的技术,称为闭包,楼主可以了解一下