基础篇: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个知识点详细讲解一下:
我去,一不小心点了发布了,还没写完呢,本来想点草稿箱的,不能取消,汗,今天暂时就写这么多吧!
未完待续。。。
基础篇:8.如何定义变量?js变量有什么特点?的更多相关文章
- 模板语言变量,js变量,js自执行函数之前嵌套调用
		
1.模板语言变量 前端html页面中展示 {{ nodeIp }} 2.js变量引用模板语言变量 把模板语言变量传递给js,js去执行页面操作(变量的转换,只适用于字符串) var IP = &quo ...
 - 【转】WF4.0 (基础篇)
		
转自:http://www.cnblogs.com/foundation/category/215023.html 作者:WXWinter —— 兰竹菊梅★春夏秋冬☆ —— wxwinter@16 ...
 - js基础篇——变量
		
a.变量类型 变量类型 构造函数 举例 类型检测typeof 字符串 function String() var t = "chua"; var m = new String(&q ...
 - 前端(十一)—— JavaScript基础:JS存在的位置、JS变量定义、调试方式、JS数据类型、运算符
		
JS存在的位置.JS变量定义.调试方式.JS数据类型.运算符 一.JS语言介绍 1.概念 浏览器脚本语言 可以编写运行在浏览器上的代码程序 属于解释性.弱语言类型编程语言 2.组成 ES语法:ECMA ...
 - 小猪猪逆袭成博士之C++基础篇(一)数据精度、强制类型转换、变量命名规则
		
小猪猪逆袭成博士之C++基础篇(一) 关键词: 数据精度.强制类型转换.变量命名规则 综述: 1.大多数编程语言通过两种方式来进一步补充其特征:一是赋予程序员自定义数据类型的权利(C++中的类):二是 ...
 - shell重温---基础篇(shell变量&字符串以及git GUI运行shell脚本方式)
		
既然是基础篇那肯定是需要对shell的各种需要注意的基本点进行说明了.接下来就是show time... shell呢,是一个用C语言编写的应用程序,是用户使用linux的桥梁.所以呢,他既是一 ...
 - Python学习笔记——基础篇【第一周】——变量与赋值、用户交互、条件判断、循环控制、数据类型、文本操作
		
目录 Python第一周笔记 1.学习Python目的 2.Python简史介绍 3.Python3特性 4.Hello World程序 5.变量与赋值 6.用户交互 7.条件判断与缩进 8.循环控制 ...
 - C# 基础控制台程序的创建,输出,输入,定义变量,变量赋值,值覆盖,值拼接,值打印
		
基础学习内容有 Console.WriteLine("要输出的内容");//往外输出内容的 Console.ReadLine(); //等待用户输入,按回车键结束,防止程序闪退 控 ...
 - [js]变量与数据类型篇
		
一.变量 在JavaScript中就用一个变量名表示变量,变量名是大小写英文.数字.$和_的组合,不能用数字开头.变量名也不能是JavaScript的关键字: 1.变量的声明 (1)var:申明一个变 ...
 
随机推荐
- win7 ssh linux虚拟机(ubuntu12.04)
			
环境: 1. 管理vmware Workstation8.0 2. Ubuntu 12.04.iso安装文件 3.Ssh登录软件putty 步骤 1.安装,安装linux系统时,在“硬件”里设置“网络 ...
 - Jmeter学习过程中遇到的那些坑
			
开个新帖,持续记录学习jmeter过程中遇到的坑... (1)出师不利 由于公司的产品都是客户端模式,所以所有的接口测试都从获取access-token开始.妹的...上来就是一个坑... 一开始的配 ...
 - sflow介绍与安装过程
			
介绍: sFlow技术是一种以设备端口为基本单元的数据流随机采样的流量监控技术,不仅可以提供完整的第二层到第四层甚至全网范围内的实时流量信息,而且可以适应超大网络流量(如大于10Gbit/s)环境下的 ...
 - bash基础特性1
			
shell俗称壳(用来区别于内核),是指“提供使用者使用界面”的软件,就是一个命令行解释器. BASH是SHELL的一种,是大多数LINUX发行版默认的SHELL,除BASH SHELL外还有C SH ...
 - css伪元素      ::after    ::before
			
我遇到的问题: div盒子标签设置了伪元素 ::after ::before 并给这俩content内容设置了空属性,添加了背景图,发现这两个伪元素没有宽度和高度. 解决方法 给设置伪元素的盒子的 ...
 - Kali学习笔记29:默认安装漏洞
			
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 默认安装漏洞: 早期Windows默认自动开启很多服务 ...
 - 使用PageHepler分页
			
首先需要引入依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>p ...
 - 项目总结一:情感分类项目(emojify)
			
一.Emojifier-V1 模型 1. 模型 (1)前向传播过程: (2)损失函数:计算the cross-entropy cost (3)反向传播过程:计算dW,db dz = a - Y_oh[ ...
 - yii学习笔记--url解析
			
在通过yiic命令生成了一个app之后,我们通过浏览器访问会看到这样的一个页面. 点击home时,url为:http://localhost/blog/index.php?r=site/index ...
 - ionic3 npm install cordova error syscall rename
			
突然出现cordova 不是内部或外部命令,也不是可运行的程序或批处理文件. 可是之前cordova安装后一直用的好好的啊,后来尝试重新安装cordova 出现这个错误.也尝试重新安装了最新版本的no ...