zoukankan      html  css  js  c++  java
  • 基础篇:8.如何定义变量?js变量有什么特点?

    书接上文,废话不多说,直接进入正题,下面我们一起来讨论js中的变量那些事!

    那什么是变量?

    变量是存储信息的容器,可以存储任何类型的数据。

    如何定义变量呢?

    变量可以使用短名称,如x,y;也可以是长名称,如information,construction;但是定义变量也是有要求的,变量的首字母必须是由字母(a-zA-Z)或下划线(_)或美元符($)开头,不能是数字,

    后面的可以是字母(a-zA-Z)或下划线(_)或美元符($)或者是数字,并且是区分大小写的,如:name和Name是不同的2个变量;

    定义变量有多种方法,我们一一来看:

    var name;

    这里只是申明了一个变量name,因为没给这个变量赋值,所以他的值为“undefined”,表示无初始值;

    var name = "tony";
    var age = 27;
    var girlFriend = false;
    var fn = function(){};
    

    这里定义了多个变量,name表示名字,值为“tony”,数据类型为字符串;age表示年龄,值为27,数据类型为number;girlFriend表示女盆友,值为否,数据类型为布尔值;

    fn表示一个方法,值为一个函数,数据类型为对象(数据类型是后面要讲的东西,现在先拿出来,要是有不懂的,可以先放放,看看后面的数据类型篇,在看这里);

    也就是说,变量是可以存放多种类型的,可以是字符串,数字,布尔值,对象等等,也可以是undefined。

    你觉得就这样就完了吗?哈哈,才怪呢,如果变量只能做这点事,那真是屈才了

    var obj = {"name":"tony","age":27,"girlFriend":false};
    

    看看这个定义的obj变量,此时是一个拥有多个值的对象

    看到这里,你是不是觉得感觉又像是掉进了课本里面的知识介绍,干巴巴,从上面描述到下面,马上要讲什么是局部变量,什么是全局变量,然后把局部变量是什么,全局变量是什么一摆,完事,这样真的好吗?不懂的还是不懂,浪费时间,怎么才能让初学者能够理解呢,这是我要思考的问题。

    讲肯定是要讲,但不能像上面那么讲了,下面我们就来换一个画风!

    标题上说,如何定义变量?我觉得首先要解决的是,什么是变量,先要弄懂这个东东是做什么用的,才好进行下一步,那什么是变量呢?

    w3school上面的解释:变量是存储信息的容器。

    JavaScript权威指南上面的解释:变量是一个和数值相关的名字。我们说变量“存储”了或“包含”了那个值。(尼玛,这是什么鬼解释)

    JavaScript入门经典上的解释:变量是保存在内存的数据

    貌似解释都好生硬,那我给一个并不权威的解释,只是为了理解:

    变量就是一个贴着一个便签的盒子,便签上的名字就是这个变量的名字,盒子里面是什么东西,我不知道,可能是任何什么东西,也可能是空的,就看你放什么进去了(脑补一下,一个贴着标签的盒子,就是一个变量)

    如果这么理解变量的话,那定义变量,简单来说就是贴标签了,那第一个知识点就来了,怎么来贴标签?

    俗话说:无规矩不成方圆,凡是都有规矩,贴标签也一样

    好像上面的这个比喻也不是很恰当,因为变量不是一个固定的值,它随时都可能会变的,有时候不需要你去放东西就能自己变,所以黑盒子感觉也严谨,那重新给一个定义:

    变量就是一个用来表示一个变数的东西,即它是一个变化的数据。比如说time时间,今天是11月5日,明天就是11月6日,它就是存储这个时间这个数据的一个东西,恩,就这样,不纠结了。

     

    首先你这个标签名字要按照格式来变量名必须以字母,下划线,美元符($)开头,而且是严格区分大小写的(即name 和Name是2个变量),不能以数字开头,后面的就可以用任何字符(当然这里要强调的是,理论上是可以用任何字符,但是不推荐用特殊字符,因为要保证变量名的语义化,要有意义,你给一个n$%^32#这样的名字,鬼都不认识);那这里有涉及到了变量名的命名规范问题,这个在上篇已经讲解,如果有不清楚的,可以看这里

    其实就是申明变量了,通过var 关键字来申明一个变量,比如我们要申明一个表示名字的变量:

    var name;
    var name = "lingyun";
    

    也可以不用var关键字来申明变量,不通过var申明的变量就隐式变量,又叫全局变量:

    name;
    name = 'lingyun';
    

    咦,你这上面一会要用var关键字定义,一会又可以不用var关键字就可以定,这不是矛盾吗?还有你定义的关键字有的是有值的,有的又是没有值的,这是几个意思啊?

    呵呵,这就牵扯出了2个很重要的知识点:全局变量与局部变量的关系,null与undefined之间的区别;好吧,把妖怪引出来了,不打打怪,怎么对的起观众呢,下面就对这2个知识点详细讲解一下:

    我去,一不小心点了发布了,还没写完呢,本来想点草稿箱的,不能取消,汗,今天暂时就写这么多吧!

    未完待续。。。

  • 相关阅读:
    疑难杂症--数据库触发器导致批处理中变量无效
    Transaction And Lock--锁相关基础
    INDEX--关于索引的琐碎
    INDEX--索引相关信息查看
    INDEX--索引页上存放那些数据
    Transaction And Lock--解决死锁/锁的几种有效方式
    Transaction And Lock--由Lookup导致的死锁情况
    Transaction And Lock--由外键导致的死锁
    oozie中时间EL表达式
    SpringBoot-hello world
  • 原文地址:https://www.cnblogs.com/liugang-vip/p/4930823.html
Copyright © 2011-2022 走看看