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的全局变量&局部变量的更多相关文章

  1. PHP和JS中全局变量和局部变量

    一,PHP中全局变量和局部变量 php与C++中对全局变量和局部变量定义类似,全局变量:函数外定义的变量,在全局通用:局部变量:在函数内定义的变量,只在函数内有效.PHP中变量范围跨越了include ...

  2. css变量复用 全局变量-局部变量

    前言 简单使用场景:同一套后台系统有多套主题的情况下,主题色作为一个最常用到的可复用的颜色,非常有必要像js的全局变量一样存在全局变量中以作复用,之前我第一个想到的是sass的变量声明,未曾想到css ...

  3. js设置全局变量ajax中赋值

    js设置全局变量,在ajax中给予赋值赋值不上问题解决方案 方案一. //在全局或某个需要的函数内设置Ajax异步为false,也就是同步. $.ajaxSetup({async : false}); ...

  4. js设置全局变量 ajax中赋值

    js设置全局变量,在ajax中给予赋值赋值不上问题解决方案 方案一. //在全局或某个需要的函数内设置Ajax异步为false,也就是同步. $.ajaxSetup({async : false}); ...

  5. page的js访问全局变量:app.globalData.openid

    page获取app.js:const app = getApp(); page的js访问全局变量(get/set):const app = getApp(); app.globalData.openi ...

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

    原文链接:http://blog.csdn.net/zyz511919766/article/details/7276089# 今天公司一个实习小妹子问我两段JS代码的区别: <script t ...

  7. JS高级---把局部变量变成全局变量

    如何把局部变量变成全局变量? 把局部变量给window就可以了     函数的自调用---自调用函数 一次性的函数--声明的同时, 直接调用了 (function () { console.log(& ...

  8. js中全局变量和局部变量以及变量声明提升

    javascript中全局变量和局部变量的区别 转载前端小99 发布于2018-04-23 15:31:35 阅读数 2102  收藏 展开 [javascript] view plain copy ...

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

    一.Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分).切记,是function块,而for.while.if块并不是作用域的划分标准,可 ...

随机推荐

  1. java 编码转换

    在网络中爬取到的数据,编码可能与当前编译器的编码不相同,而导致可能产生显示乱码的问题.那么如何将网络的编码,转换为当前编译器认可的编码(一般为UTF-8),就是个问题了. 主要使用了两个方法: Str ...

  2. Python基础第四天

    必须掌握的内置函数 bytes() divmod() eval() exec() isinstance() range() 常用函数 1.数学相关 abs(x) abs()返回一个数字的绝对值.如果给 ...

  3. HTML5学习笔记简明版 目录索引

    http://www.cnblogs.com/TomXu/archive/2011/12/06/2277499.html

  4. UITextField实现过滤选中状态拼音

    先提供下简书地址, 排版更好. 我的简书地址: http://www.jianshu.com/p/80e79c6d1511 UITextField相信很多的iOS开发者都会经常用到, 最近项目中遇到了 ...

  5. Linux硬盘分区和格式化

    分区与格式化   先用fdisk分区,分区完成后再用mkfs格式化并创建文件系统,挂载,磁盘就能使用啦.   分区的原理:        MBR:主引导扇区 主分区表:64bytes,最多只能分四个主 ...

  6. jquery倒计时(仿团购)转至 http://justcoding.iteye.com/blog/2210962

    倒计时一般是用来表示未来某一时刻距现在时刻还剩多少时间.倒计时在WEB上应用非常广泛,如考试系统倒计时,团购网站中的优惠活动倒计时等等.今天,我们来使用jQuery实现一个简单的倒计时功能.

  7. python高级编程之选择好名称:pepe8和命名最佳实践

    # # -*- coding: utf-8 -*- # # python:2.x # __author__ = 'Administrator' # my_list=['a','b','c','d'] ...

  8. pyqt 正则表达式例子学习

    def rex01(self): username=QtCore.QRegExp('[a-zA-Z0-9_]{2,10}') self.names.setValidator(QtGui.QRegExp ...

  9. iOS-网络编程(一)HTTP协议

    一. 网络编程基础 在移动互联网时代,几乎所有应用都需要用到网络,只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力.一个好的移动网络应用不仅要有良好的UI和良好的用户体验也要具备实时更 ...

  10. 虚拟机IOS开发环境搭建教程

    来源:http://www.cnblogs.com/xiaoyaoju/archive/2013/05/21/3091171.html 安装条件: 硬件:一台拥有支持虚拟技术的64位双核处理器和2GB ...