js基础之函数全局变量与局部变量区别

//     一.全局变量与局部变量:局部变量是指只能在本变量声明的函数内部调用。全局变量时整个代码中都可以调用的变量
    //   单单从字面上很难理解 来我们看实际代码:

      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定义。所以从这里可以看出,使用代码的时候,变量的声明一定要放到代码的前面,以避免出现类似的问题!

posted @ 2016-03-23 15:36  AxinBYZ  阅读(308)  评论(0)    收藏  举报