js 关于全局变量和局部变量的简单理解

1.简单来说在  函数里边定义的变量是局部变量,在函数外边访问不到; 全局变量是在函数外边的,在函数内外都可以被访问;

var a = 10;

        function test() {

            var b = 100;
            console.log(a);//打印结果是10
            a=100;

        }
        test();
        console.log(a); //打印结果为100
        console.log(b);//报错 b is not defind

说明: 因为a 是全局变量所以在函数内部可以被访问且被赋值;第一次打印结果为10;

执行函数后a的值变为100 ;

b是局部变量;在函数外部被打印,访问不到b的值 所以报错;

2.如果局部变量和全局变量的变量名相同的情况;

 1 var a = 10;
 2
 3         function test() {
 4
 5             console.log(a);//打印结果为undefind
 6             var a = 100;
 7             console.log(a);//打印结果为100
 8
 9         }
10
11         test();
12
13         console.log(a);//打印结果为10

说明:1.如果局部变量的变量名和全局变量名形同,在函数内部变量值全部指向局部变量;

2.第5行结果为undefind;因为只要局部变量a被声明,a就指向局部变量,但是打印在赋值之前,结果为undefind;

第二次打印结果在赋值之后 为100;

要想改变全局变量a 的值,可以用window.a ;

3.第三次打印在函数外边,所以打印全局变量a,值为10;

3.关于参数问题;参数也是局部变量;

 1 var a = 1;
 2
 3         function test(a) {
 4
 5             a=100;
 6             console.log(a);//打印结果为100
 7             return a;
 8         }
 9
10         test(a);
11 //        a=test(a);
12
13         console.log(a);//打印结果为1

说明:函数的形参和全局变量重名;既然参数也是局部变量,那函数内部对于a的操作都指向局部变量a影响不了全局变量a,

所以13行输出1;第5行输出100;

浅显的理解就是参数就是引用变量的值,在函数内部进行加工,其实不改变变量的值;(这里是值类型的参数传递情况可以这么理解);

如果是引用类型的参数传递;就会影响到全局变量的值了;(这个和数据存储有关);

原文地址:https://www.cnblogs.com/lxzwhite/p/10187442.html

时间: 2024-10-10 06:59:10

js 关于全局变量和局部变量的简单理解的相关文章

Javascript:谈谈JS的全局变量跟局部变量

原文链接:http://blog.csdn.net/zyz511919766/article/details/7276089# 今天公司一个实习小妹子问我两段JS代码的区别: [javascript] view plain copy <script type="text/javascript"> var a = "Hello"; function test(){ var a; alert(a); a = "World"; alert(

Javascript:谈谈JS的全局变量跟局部变量【转】

两段JS代码的区别:   <script type="text/javascript"> var a = "Hello"; function test(){ var a; alert(a); a = "World"; alert(a); } </script> <script type="text/javascript"> var a = "Hello"; functio

谈谈JS的全局变量跟局部变量

今天公司一个实习小妹子问我两段JS代码的区别: [javascript] view plaincopy <script type="text/javascript"> var a = "Hello"; function test(){ var a; alert(a); a = "World"; alert(a); } </script> [javascript] view plaincopy <script type

JS关于全局变量跟局部变量的总结

一.Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分).切记,是function块,而for.while.if块并不是作用域的划分标准,可以看看以下几个例子: 1 <script> 2 function test2(){ 3 alert ("before for scope:"+i); // i未赋值(并不是未声明!使用未声明的变量或函数全抛出致命错误而中断脚本执行) 4 5 // 此时i的值是underfine

JS的全局变量跟局部变量

一.Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分).切记,是function块,而for.while.if块并不是作用域的划分标准,可以看看以下几个例子: <script> function test2(){ alert ("before for scope:"+i); // i未赋值(并不是未声明!使用未声明的变量或函数全抛出致命错误而中断脚本执行) // 此时i的值是underfined for(var

关于js中全局变量和局部变量的寄到小题

往往最基本的也是最根本的. 这里有三道关于全局变量和局部变量的小题,供诸位一阅. 知识点: (1)在最外层声明的是全局变量 (2)在函数内声明的是局部变量 (3)在函数体内部,但是没有用var声明的变量也是全局变量 第一题: var a = 10;function fun(){var a = "global";}console.log(a); 第二题: var a ;function fun(){a = "global";} fun();console.log(a)

js原型和原型链的简单理解

构造函数创建对象: function Person() { } var person = new Person(); person.name = 'Tian'; console.log(person.name); //Tian Person 就是一个构造函数,使用 new 创建了一个实例对象 person prototype 每个函数都有一个 prototype 属性 每一个 javaScript 对象(null除外)在创建的时候就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会

简单理解js的this

js的this是什么?关于这个东西,博客园里面有太多的解释了,不过,本人看了一下,感觉对this解释的有点复杂了,因此,本人在此给this一个简单易于理解的定义. this其实是js的一个对象,至于是什么对象呢?很简单,this这个对象就是:谁调用它它就指向谁. 关于这一点,其实,博客园的文章已经说明了很多了,有的文章也说到了点子上,只不过,他们解释的还是有点模糊,这里,我给大家做几个简单的对照实验,根据这几个对照实验的结果,大家应该很清楚了. 希望大家根据我的代码重复实现下面的实验. 首先,我

JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用

“JavaScript设计得最出色的就是它的函数的实现.” -- <JavaScript语言精粹> 函数包含一组语句,它们是JS的基础模块单元,用于指定对象的行为.一般来说,所谓编程,就是将一组需求分解成一组函数与数据结构的技能. 1.函数的功能 代码重复性使用 模块化编程 2.语法: 使用函数前要先定义才能使用 函数定义有三个部分:函数名,参数列表,函数体 格式: 1 function 函数名([参数1, 参数2, ...]){ 2 3 函数执行部分; 4 5 return 表达式; 6 7