美文网首页
JavaScript之变量

JavaScript之变量

作者: thisDong | 来源:发表于2018-04-21 23:01 被阅读0次

    因为工作的原因登上过讲台。虽然时间不长,但是就是这些零散的“讲台时间”,让以前原本比较模糊的概念清晰了起来,一些知识点也形成了网络,整个知识体系中一些“基础角落”也更加的夯实牢靠。最直接的好处就是知识调用迅捷度的提升,间接的好处就是自信心的提升。感觉整个人都变的萌萌哒……


    感觉自己萌萌哒

    讲课就是知识的复述,但是这种机会比较少。如何才能有一套稳定的机制保证自己学习的知识能够有效的“复述”出来?答案就是建立自己的博客,并且能做到及时更新,这样能做到随时查询和梳理。以上就是我建立博客的最初想法。

    不过作为一名专业的“半吊子”程序员,无时不刻都在鄙视自己,尤其是基础方面,原因是我半路出家改行当了程序员。“学习焦虑”的压力让我觉得梳理下JavaScript的基础知识顺便查漏补缺是一件非做不可的事情,于是有了这个想法,那么就从今天开始吧。

    很多语言中声明变量必须要声明变量的类型。JS这一点让人感到十分惬意,因为它的变量是“松散类型”。所谓的松散类型就是可以保存任何类型的数据。也就是说在JS中变量仅仅是一个用于保存值的“占位符”。声明使用var操作符,也可以说使用关键字var,在后面跟上变量名我们就完成一个变量的声明,并且我们不用考虑变量的类型。

    /*声明变量name*/
    var  name;
    

    JS变量能够保存任何值,而且可以直接初始化变量,在定义变量的同时就可以直接给变量赋值,并根据赋值类型来决定变量的类型。如果不给变量设置初始值,例如var name;那么它就会保存一个特殊的值–“undefined”。

    var  name  =  "Tom";  /*String类型*/
    var  age  =  12;/*Number类型*/
    var  house  =  true; /*Boolean类型*/
    var  work  =  new  Object();  /*Object类型*/
    var  money;  /*undefined*/
    
    还有这种操作?

    另外需要着重提一点的是,在var name="Tom";中变量name保存了一个字符串“Tom”。像这样的初始化变量并不会把它标记为字符类型;初始化的过程就是给变量赋值一样简单。所以JS允许修改变量的值的时候同时修改值的类型。

    var  name  =  "Tom";
    name  =  25;  /*允许且有效但不推荐改变变量的类型*/
    

    上述代码先给变量name赋值“Tom”,之后的操作又将数字25赋值给变量name。那么在最后变量name的输出值就是数字25。这种操作在JS是被允许的,但是不推荐这么做。

    为提高效率或是照顾懒人,我们可以使用一条语句定义多个变量;而且“松散类型”的特点决定了在这条语句中可以有多个类型的初始化变量操作。

    var  name  =  "Tom",age  =  22,work  =  new  Object();
    
    /*如果你有强迫症或是为了提高代码可读性也可以写做以下的方式*/
    var  name  =  "Tom",
         age  =  22,
         work  =  new  Object();
    
    那画面太美我不敢看

    需要注意的地方要来了,在声明变量的时候关键词var并不是必须。如果省略var所定义的变量就是全局变量,用关键字var定义的变量就是局部变量。如果在函数内部使用关键字var定义变量,函数退出后变量会被销毁。这里面牵扯到变量作用域的知识,那是另外一篇文章的内容。这里只是简要的说明下关键字var的作用。

    function  test(){
      var  msg  =  "hello,world!";  /*msg是局部变量*/
    }
    
    test();
    console.log(msg); /*错误!!!*/
    
    
    /*----华丽的分割线-----*/
    
    function  test(){
      msg  =  "hello,world!";/*msg是全局变量*/
    }
    
    test();
    console.log(msg);  /*结果是“hello,world!”*/
    

    JS中让人抓狂的特性之一,就是它对全局变量的依赖。由于它没链接器(linker),所有的编译单元都会载入一个公共全局变量中,这点会造成一些违反直觉的结果。局部作用域中定义的全局变量很难维护,刻意忽略了var关键字也会由于相应变量不会马上就有定义而导致混乱,所以对待全局变量一定要慎重又慎重。在”use strict”(严格模式)下给未经声明的变量赋值会抛出ReferenceError错误。

    另外变量的命名不能是关键字和保留字。所谓关键字和保留字的意思如果不懂,由于和本文内容契合度不高,这里不再详细说明请自行百度解决。//ps:主要是懒的打字了。

    如果你想定义全局变量,最好的方法就是在任何(所有)函数之外放置var定义变量。还有一种方法就是直接给全局对象添加一个属性,因为JS中全局对象是所有全局变量的容器。在web浏览器中全局对象名为window

    window.fullName  =  "Tom";
    /*web浏览器环境中定义全局变量方法*/
    

    关于JS中变量的知识大概也就是这么多……沉迷于学习不能自拔,请把下图中显示器中的内容自行脑补成程序代码,这就是我的苦逼状态……


    (报告完毕!)

    相关文章

      网友评论

          本文标题:JavaScript之变量

          本文链接:https://www.haomeiwen.com/subject/vmoflftx.html