JS中如何把局部变量变成全局变量

1、先明白自调用函数的概念(是一次性的函数,在声明的同时,直接调用了)。

那么有一个问题,自调用函数是怎么推出来的呢?下图:f1是函数名,函数名中存的是函数的代码,替代后可以去掉函数名f1。

  

而且在页面加载后,自调用函数的代码就执行完了。下图执行结果报错,因为num是局部变量,且在函数外部没有声明和赋值。还要注意形参和实参的位置。

2、浏览器中的顶级对象是window,引用window对象的属性和方法时,可以省略window(console.log(num);)。window对象既是ECMAScript规范中的Global对象,也是BOM中的顶级对象。

下图通过给window对象的属性赋值,然后在外面去访问属性的值。注:win.num=num; 前一个是属性。

内存图如下:

至此,最初的问题就已经解决了,如何把局部变量变成全局变量?我们只要把局部变量的值给window下的属性就可以了。

3、下面进行具体的应用:通过自调用函数产生一个随机数对象,在自调用函数外面,调用该随机数对象方法产生随机数。产生随机数0-4之间的数。

  <script>

    (function (window) {
      //产生随机数的构造函数
      function Random() {
      }
      //在原型对象中添加方法 
      Random.prototype.getRandom = function (min,max) {
        return Math.floor(Math.random()*(max-min)+min);//floor向下取整
      };
      //把Random对象暴露给顶级对象window--->外部可以直接使用这个对象
      window.random=Random;//将函数名字给了属性Random
    })(window); 
    //实例化随机数对象
    var rm=new window.random(); //window.可以省略  
    //调用方法产生随机数
    console.log(rm.getRandom(0,5));
    // var num=rm.getRandom();
    // console.log(num);

  </script>

 

 

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值