js基础 局部变量和全局变量 作用域链 形参是局部变量
2017-12-18 00:00
387 查看
js基础 局部变量和全局变量 作用域链 形参是局部变量
局部变量和全局变量
局部变量:在一个作用域(定义域)内定义的变量就是这个作用域内的局部变量。只能在作用域内被访问到。
全局变量:从广义上来看,全局变量也是一种局部变量。全局变量定义在全局,所以也叫全局变量。可以在任何地方都被访问到。
变量申明的原理:全局变量,在全局定义之后,会永久存在,任何时候,任何位置访问,都能够找到它。局部变量定义在函数内部的,函数定义的过程,并没有真正的去定义这个局部变量,只有在执行函数的时候,才会立即定义这个局部变量,执行完之后,变量就被立即销毁了,在其他的地方访问变量的时候,找不到这个变量,所以会有一个引用错误,变量未定义。
1.4 作用域链
指的是我们变量查找的一个规律:我们可以在不同的作用域内使用相同的标识符去命名变量。我们在使用一个变量的时候,需要找到匹配的标识符,我们有重复的,用哪一个?如果在当前作用域有这个变量,就直接使用,如果当前作用域没有这个变量定义,会一层一层的从本层往外依次查找,遇到第一个就直接使用。类似于就近原则。
当遇见一个变量时,JS引擎会从其所在的作用域依次向外层查找,查找会在找到第一个匹配的标识符的时候停止。在多层嵌套的作用域中可以定义同名的标识符,发生“遮蔽效应”。
如果变量声明时,不写var关键字,计算机会自动在全局作用域内给它进行一个声明,局部变量就强制性的变成了全局变量。这种情况是不合理,会造成一个全局变量的污染。所以,定义变量必须写var关键字。
1.5 形参是局部变量
形参是局部变量,形参的作用域是它定义的函数的内部。
局部变量和全局变量
局部变量:在一个作用域(定义域)内定义的变量就是这个作用域内的局部变量。只能在作用域内被访问到。
全局变量:从广义上来看,全局变量也是一种局部变量。全局变量定义在全局,所以也叫全局变量。可以在任何地方都被访问到。
1 // b是在全局内部定义的变量,是全局变量,可以在任何地方访问到 2 var b = 2; 3 function fun(){ 4 // 在函数内部定义的变量是局部变量,只能在该作用域内访问到 5 var a = 1; 6 console.log(a); 7 } 8 fun(); 9 console.log(b); 10 console.log(a); |
变量申明的原理:全局变量,在全局定义之后,会永久存在,任何时候,任何位置访问,都能够找到它。局部变量定义在函数内部的,函数定义的过程,并没有真正的去定义这个局部变量,只有在执行函数的时候,才会立即定义这个局部变量,执行完之后,变量就被立即销毁了,在其他的地方访问变量的时候,找不到这个变量,所以会有一个引用错误,变量未定义。
1.4 作用域链
指的是我们变量查找的一个规律:我们可以在不同的作用域内使用相同的标识符去命名变量。我们在使用一个变量的时候,需要找到匹配的标识符,我们有重复的,用哪一个?如果在当前作用域有这个变量,就直接使用,如果当前作用域没有这个变量定义,会一层一层的从本层往外依次查找,遇到第一个就直接使用。类似于就近原则。
当遇见一个变量时,JS引擎会从其所在的作用域依次向外层查找,查找会在找到第一个匹配的标识符的时候停止。在多层嵌套的作用域中可以定义同名的标识符,发生“遮蔽效应”。
1 // 全局变量 2 var a = 1; 3 function fun1(){ 4 var a = 2; 5 function fun2(){ 6 var a = 3; 7 console.log(a); //因为本层有定义直接输出3 8 function fun3(){ 9 console.log(a); //本身没有a定义,会从本层出发依次向外查找,当找到定义时,直接执行。3 10 } 11 fun3(); 12 } 13 fun2(); 14 } 15 fun1(); 16 console.log(a); //1 |
如果变量声明时,不写var关键字,计算机会自动在全局作用域内给它进行一个声明,局部变量就强制性的变成了全局变量。这种情况是不合理,会造成一个全局变量的污染。所以,定义变量必须写var关键字。
1 var a = 1; 2 // 相当于 3 // var a = 3; 4 function fun1(){ 5 a = 2; 6 function fun2(){ 7 a = 3; 8 console.log(a); //因为本层有定义直接输出3 9 function fun3(){ 10 console.log(a); //本身没有a定义,会从本层出发依次向外查找,当找到定义时,直接执行。3 11 } 12 fun3(); 13 } 14 fun2(); 15 } 16 fun1(); 17 console.log(a); |
1.5 形参是局部变量
形参是局部变量,形参的作用域是它定义的函数的内部。
1 function fun(a){ 2 // 形参是局部变量 3 console.log(a); 4 } 5 fun(1); 6 console.log(a); WEB前端互动交流群 434623999 |
相关文章推荐
- JS 形参、实参、局部变量、全局变量优先级
- javascript基础笔记(八)之js的全局变量和局部变量
- js的局部变量和全局变量
- Web前端从入门到放弃(js全局变量、局部变量、闭包)
- c基础 堆栈 全局变量 局部变量 const
- JS的作用域和声明提前,js中局部变量泄露为全局变量
- js 局部变量和全局变量
- 黑马程序员——零基础学习iOS开发——07 全局变量、局部变量、static和extern关键字
- JS-全局变量和局部变量
- C语言基础:C语言变量类型 - 全局变量和局部变量
- JS全局变量和局部变量最新解析
- Javascript:谈谈JS的全局变量跟局部变量
- js的局部变量和全局变量,js中的标签,break标签
- 实参与形参、全局变量与局部变量的区别
- Javascript:谈谈JS的全局变量跟局部变量
- js全局变量与局部变量
- js的全局变量与局部变量
- C语言基础-局部变量和全局变量的区别
- js的全局变量和局部变量
- Javascript:谈谈JS的全局变量跟局部变量