码迷,mamicode.com
首页 > Web开发 > 详细

js变量及其作用域(附例子及讲解)

时间:2016-08-24 13:06:09      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:

Javascript和Java、C这些语言不同,它是一种无类型、弱检测的语言。它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量

技术分享
 

工具/原料

 
  • Chrome 浏览器(以下代码测试均由Chrome调试)

方法/步骤

 
  • js变量的类型及申明方式等等,本文不再说明,读者可以参考相关官方文档

    这里主要介绍js变量及其作用域

  • js变量作用域可分为:"全局变量"和"局部变量"

    "全局变量":申明在函数之外的变量

    "局部变量":申明在函数体中的变量,并且只能在当前函数体内访问,如:function(){var a = 0;}

    注:在申明变量是凡是没有var关键字,而直接赋值的变量均为全局变量

  • 下面就通过几道小例子来熟悉下

    1、function test() {  

               a = 30; 

              var b = 20;

         }

     test();

     console.log("a="+a); //这里很明显,a为全局变量

     console.log("b="+b);//b为局部变量,故在函数test外调用是,提示未定义

    技术分享
  • 2、

    var a = 1;

    function test() {  

              console.log("a="+a); //这里a为undefined

    /*函数中声明的变量在整个函数中都有定义。如果函数内部有定义变量,即使在定义之前输出但会先执行后面定义语句,然后判断输出结果,所以说声明的变量在整个函数中都是起作用的。*/

              var a = 2;

         }

     test();

    技术分享
  • 3、

    给两个小例子作为对比:

    var a; function fun() { a = "global"; } console.log(a);//输出undefined 

    技术分享
  • var a; function fun() { a = "global"; } 

    fun();console.log(a);//输出 global

    技术分享
  • 对于上面这两个小例子,它们唯一的区别就是一个执行了fun函数,一个没有执行;

    如果就是

    var a;console.log(a);//由于a只定义,但没初始化,故输出undefined 

    而function fun(){...}中对a进行初始化,初始化操作实在fun函数作用域内,如果不执行fun()那么初始化操作也不会执行

  • 4、函数域优先于全局域,故局部变量a会覆盖掉全局变量a

        var a=1;

        function main(){

            var a=2;//局部变量

            console.log(a);//2

        } 

       main();

       console.log(a);//1

    技术分享
  • 5、javascript没有块级作用域

    function test(){

       for(var i = 0 ; i < 3 ; i++){

              //i=0,1,2,最后执行到i=3时退出循环

       }

       console.log(i);//3

    }

    test();

    相当于

    function test(){

     var i;

       for(i = 0; i < 3; i++){

              //i=0,1,2,最后执行到i=3时退出循环

       }

       console.log(i);//3

    }

    test();

    技术分享
  •  

js变量及其作用域(附例子及讲解)

标签:

原文地址:http://www.cnblogs.com/renyunbo/p/5802205.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!