JS的全局变量&局部变量

1 <script>
2     var i=10;  //全局变量
3     j = 20;    //全局变量
4
5     function(){
6       var i=30; //局部变量
7        h = 40;  //全局变量
8     }
9 </script>

由此可以总结一句话,在函数内部定义的就是局部变量,否则就是全局变量。

1   <script>
2     var i =10;
3     function display(){
4       //var i = 20;//局部变量只在局部作用域起作用
5       i= 30; //全局的,会将i的值修改为30
6     }
7     alert(i);//结果为10  30
8   </script>

在函数内的变量没有var 声明,则会直接影响全局变量。

为什么没有var的变量是全局的?

是因为,在js中,如果在某个变量没有var声明,会自动到上一层作用域中去找这个变量的声明语句,如果找到,则调用;如果没有找到,继续向上查找,一直查找到全局作用域为止,如果全局作用域仍然没有这个变量的声明语句,那么就会自动在全局作用域中进行声明,这个就是js中的作用域链。

1   <script>
2    window.onload = function display(){
3       i= 30;
4     }
5     alert(i);
6   </script>

弹出的结果就是30

再看这个例子:

 1 <script>
 2    var i = 10;
 3     function fn1(){
 4       i=100;
 5       function fn2(){
 6         i=1000;
 7         function fn3(){
 8           i=10000;
 9         }
10         fn3();
11       }
12       fn2();
13     }
14     fn1();
15     alert(i);
16 </script>

执行的结果就是10000

如果现在把 fn1中的i值改成 var = 100;则弹出i的值为:10;

局部访问全局使用作用域链

全局访问局部可以使用闭包函数模拟

JS的全局变量&局部变量

时间: 2024-10-11 16:49:42

JS的全局变量&局部变量的相关文章

(译)Node.js的全局变量

原文标题:Global Variables in Node.js原文链接:http://www.hacksparrow.com/global-variables-in-node-js.html 你可能正在使用一些 Node.js 的模块,或者一个框架比如 Express.js ,并且突然感觉你需要创建一些全局变量.在 Node.js 中你会如何创建全局变量? 在这个问题上,大多数的建议是"不使用 var 声明变量",或者是"把变量添加到 global 对象上",亦或

js设置全局变量ajax中赋值

js设置全局变量,在ajax中给予赋值赋值不上问题解决方案 方案一. //在全局或某个需要的函数内设置Ajax异步为false,也就是同步. $.ajaxSetup({async : false}); //然后再进行你的Ajax操作 $.post(地址, 参数, function(data, status) { if (status == "success") { //赋值给全局变量 } }); 方案二. $.ajax({type : "post",url :地址,

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高级---把局部变量变成全局变量

如何把局部变量变成全局变量? 把局部变量给window就可以了 函数的自调用---自调用函数 一次性的函数--声明的同时, 直接调用了 (function () { console.log("函数"); })(); 局部变量 页面加载后.这个自调用函数的代码就执行完了 (function (形参) { var num = 10;//局部变量 })(实参); console.log(num); 把局部变量给window, 则局部变量变成全局变量 (function (win) { var

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)