博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js基础之函数全局变量与局部变量区别
阅读量:5274 次
发布时间:2019-06-14

本文共 1499 字,大约阅读时间需要 4 分钟。

//     一.全局变量与局部变量:局部变量是指只能在本变量声明的函数内部调用。全局变量时整个代码中都可以调用的变量

    //   单单从字面上很难理解 来我们看实际代码:
      function myName() {
         i = 'xiaoming';
      }
      myName();
      function sayName() {
         alert(i);
      }
      sayName();
      /*输出结果为:xiaoming
      现在来修改上面的代码:*/
      function myName(){
        i="xiaoming";
        }
        myName();
        function sayName(){
            alert(i);
        }
        sayName();
        // 此时,游览器将没有任何输出结果,因为i 是在函数myName中定义的,所以它只是myName的局部变量,不可能被外部调用。
        // 同理再改
        function myName(){
            i="xiaoming";
        }
        function sayName(){
            alert(i);
        }
        sayName();
        myName();
        // 这种情况下还是不会输出任何结果,javascript代码的执行时从上到下的,在sayName()函数被调用时会检查变量i的值,此时函数myName尚未执行,也就是说i还没有被赋值,所以不会输出任何结果。
         // 为了方便理解 再举一例
         var i="xiaoming";
         function loveName(){
             i="xiaohong";
         }
         loveName();
         function myName(){
             alert(i);
         }
         myName();
         // 结果是xiaohong
         // 首先,i的原始值是xiaoming,但是当调用loveName()函数之后,将i的值改为xiaohong,所以最后的输出结果是xiaohong。
         var i = 'xiaoming';
        function myloveName() {
             var i = 'xiaohong';
        }
        myloveName();
        function myName() {
             alert(i);
        }
        myName();
        // 此时的结果就是xiaohong了,因为代码中的两个i不一样,一个是全局的,一个是局部的,也可以这样理解,虽然两个i的名字一样,但是这两个i的本质却不一样,好像有两个名字一样的人一样,虽然名字一样,但却不是同一个人。
        var i = 'xiaoming';
        function myloveName() {
             i = 'xiaohong';
            alert(i);
        }
        myloveName();
        // 结果是:xiaohong
        // 如果把alert提前呢?
        var i = 'xiaoming';
        function myloveName() {
          alert(i);
         i = 'xiaohong';
        }
        myloveName();
        结果是:undefined
        如果代码是这样:
        var i = 'xiaoming';
        function myloveName() {
          alert(i);
        }
        myloveName();
        // 结果是:xiaoming
        // 为什么会发生上面undefined情况,因为代码的执行顺序是从上到下的,在输出i之前并没有对i定义。所以从这里可以看出,使用代码的时候,变量的声明一定要放到代码的前面,以避免出现类似的问题!

转载于:https://www.cnblogs.com/AxinBYZ/p/5311406.html

你可能感兴趣的文章
iOS之页面传值-----单例传值、通知传值
查看>>
数组换位子
查看>>
软件测试草图
查看>>
一个App项目设计开发完整流程
查看>>
如何使用iClap创建普通批注
查看>>
用Java编写自己的机器人,为你承担苦力
查看>>
第四章App4_3,懂得了抛出异常 throws Exception,read为读取键盘输入数,学会了switch循环...
查看>>
从零开始——MySql01
查看>>
基于线程池的线程管理(BlockingQueue生产者消费者方式)实例
查看>>
sqlmap
查看>>
给出随机存储器(RAM)和只读存储器(ROM)的差别
查看>>
CSS3 3D Transform
查看>>
js深拷贝
查看>>
http和socket之长连接和短连接区别(转)
查看>>
【HTML】网页中如何让DIV在网页滚动到特定位置时出现
查看>>
文件序列化
查看>>
C++11 中的线程、锁和条件变量
查看>>
HDU 2485 Destroying the bus stations(!最大流∩!费用流∩搜索)
查看>>
Oracle关于用户信息的一些SQL语句
查看>>
2019-02-28处理公司同事无法上网事件记录
查看>>