基础篇: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:申明一个变 ...
随机推荐
- Java中的一个类型转换问题
一.Object转Integer Java中hibernate或者ResultSetHandler查询sql语句, 返回的object类型其实是Long类型, 而不是Integer类型, 因此此时直接 ...
- IOS 模拟器多开集成测试和那些坑
#### 前言公司一直没有IOS自动化,搞得很尴尬,个人感觉搞自动测试的,不搞IOS自动化,就像金X,少了重要一点啊.也向领导申请过不止一次,总只都各种原因没有分配机器,不了了之.某天线上IOS出bu ...
- JAVA的 IO NIO AIO笔记
IO linux内核将所有外部设备都看做一个文件来操作,对一个文件的读写会调用内核系统命令,放回一个file descriptor(文件描述符), 对一个socket的读写也会有相应 ...
- 利用 awk 统计nginx 中某一个用户的访问次数
线上总是会遇到攻击,所以就需要分析 access.log 看看那些用户的访问次数不正常,针对这些不正常的用户,要做处理,以 access.log为例说明下怎么统计. 通过 access.log 日志来 ...
- c++实现简单的客户端和服务端
server.cpp #include<WinScok.h> #include<windows.h> #include<stdio.h> int main() { ...
- C语言setjmp用法解析
https://www.cnblogs.com/hbiner/p/3261437.html
- MySQL优化--INSERT ON DUPLICATE UPDATE死锁
INSERT ON DUPLICATE UPDATE与死锁 在MySQL中提供两种插入更新的方式:REPLACE INTO和INSERT ON DUPLICATE UPDATE,简化了“存在则更新,不 ...
- Key-Value 数据库简介
1.Aerospike 官方网站:https://www.aerospike.com/ Aerospike是一个以分布式为核心基础,可基于行随机存取内存中索引.数据或SSD存储中数据的数据库. Aer ...
- 解决微信小程序登录与发布的一些问题
解决微信小程序的问题 图片在电脑上显示但在手机上却无法显示的问题 要使用的是本地图片,不想把图片上传到网络再通过https的方式解决,解决方法如下: 1.image src中的图片地址对英文字母大小写 ...
- ueditor编辑器显示style标签样式
在使用ueditor编辑器中,想保存style标签的样式需要对js配置文件进行修改.官方为了安全考虑,默认会将style标签转为DIV标签,导致样式不能显示出对应的效果. 基于1.4.3版本修改如下 ...