入门 - 变量类型 ¶
作者:KK
发表日期:2016.2.2
变量是有不同类型的,我这里先只说常见的类型,有以下:
字符串类型(string),比如
var name = '小明';
这时候name变量就是一个字符串类型变量,因为它的值是就是一个字符串,用单引号包住其实字符串也可以用双引号包住,比如
var name = "小明";
数字类型(number),比如
var age = 18;
这时候age变量就是一个数字类型变量,因为它的值是一个数字,不是一个引号引住的字符串但是
var age = '18';
或者var age = "18";
这就是字符串,只是这个字符的内容是18,但它并不是一个数字布尔类型(boolean),布尔类型,只有两种值,分别是
true
(表示真)和false
(表示假),比如var ok = true;
或var ok = false;
这时候ok变量就是一个布尔类型
先介绍这三种类型吧,你可以设想成字符串类型是用来做文字显示的,数字类型用来做加减乘除等数学计算的,布尔类型是用来判断是 或 不是 的
字符串类型(string) ¶
我们在计算机设备上到处能看到各种标签/提示文字,英文单词这些,对于程序来说,这些都叫做"字符串",由一个个字符串起来的东西,也就是我们通俗所说的"文字"
字符串要用单引号或者双引号包住,比如
var name1 = '字符串1';
var name2 = "字符串2";
我比较推荐使用单引号,而我接触的更多程序员都是用单引号的
至少我觉得输入双引号挺麻烦的,因为要按住shift键再按引号键啊
字符串拼接
字符串是可以拼接在一起的,比如
var name = '小明'; var do = '出去吃饭'; var statement = name + do; alert(statement);
就会看到"小明出去吃饭"这个句子
因为上面由name和do两个变量用
+
号拼接起来了,并将拼接的结果传给了statement这个新声明的变量转义字符
很多编程语言都有转义字符这个知识点并且几乎相同,JS里的字符转义是这样的:
var name = 'n\no'; alert(name);
弹窗会显示n在上面,o在下面,而不是看到
n\no
,因为\n
是一个转义字符,这个字符在JS的字符串里是一个换行符号,所以n后面被换了一行,o就去了第2行所以记住了,要把你的文字分2行显示,就要插入一个
\n
哦!引号的转义
转义字符的特征就是前面有个
\
号,比如\t
这是一个tab符(平时我们按缩进的那个,制表符),那么'小\t明'
这个JS字符串就会在"小"字后面做了缩进,让"明"字在缩进之后才显示,于是它们的距离就是比较远的转义字符的知识也是经常用得到的,所以这个要了解,比如你要在字符串中显示单引号,可以用双引号包住
"I'm"
但是如果里面既有单引号又有双引号呢,如果你写成
"I'm say:"how are you""
这时候代码解析器会以为
"I'm say:"
是一个字符串,然后就会出错了,因为后面的how are you""
它根本不知道怎么运行这些命令,所以就会出错所以引号也可以用转义来解决,
"I'm say:\"how are you\""
,这样就可以完整地显示I'm say:"how are you"
这个句子了\号的转义
如果字符串里面有
\
号那也是要转义的,写法就是在\号后面再加一个\号,写成\\
这样因为如果你只打一个\号的话就会把\号后面的字符转义掉,比如
'aa\bb'
结果就是aabb
,因为\b
会变成字母b,所以你必须写成'aa\\bb'
,使2个\号变成1个\号这里临时换一下话题,为什么上面
\b
会变成字母b,但前面\n
会变成换行呢?因为转符号()后面跟字母n在代码解释器来看是有特殊意思的,所以代码解析器按照规定将\n解析成换行,而\号后面跟字母b是没有意义的,所以它原样地解析出这个字母,得到了字母b至于具体有哪些字母跟在\号后面是有特殊意思的,你只要知道
\n
,\r
,\t
,\\
,\'
和\"
就行,其实不是字母跟在\号后面,而是字符,包括了符号哦 在JS里一般你只要记住\n
,\t
,\\
,\'
和\"
这5个转义字符就行了,未来接触到其它字符串里带有\号的话直接搜索"JS字符转义"会有好多文章解说全部字符转义的,但你可能几乎都用不上
数字类型(number) ¶
数字类型不需要像字符串一样用引号引住,只要直接写数字就可以,比如
var age = 18;
alert(age);
var type = typeof(age);
alert(type);
但是字符串中包含纯数字时注意和数字也不是同一类型
var age = 18;
var type = typeof(age);
alert(type); //number类型,数字
var age2 = '18';
var type2 = typeof(age2);
alert(type2); //string类型,字符串
布尔类型(boolean) ¶
布尔类型只有两种值,分别是true
和false
,比如var a = true;
那么这个变量就是布尔类型的变量
布尔类型的作用也是很大的,它表示"真"和"假",通俗地说就是"是"和"不是"的意思
获取变量的类型名称 ¶
我们怎么知道变量是么类型呢?这就需要使用typeof
这个命令了!看下面的代码:
var name = '小明';
var type = typeof(name);
alert(type);
会弹出string
(就是字符串类型的英文名称)
上面的代码声明了个字符串name,值是"小明",然后将这个name变量传给typeof命令
typeof命令对这个变量的类型进行了确认,然后将确认的结果传给了type变量
最后通过alert命令将type这个结果弹窗提示,你就会看到string
这个提示,说明type的值是string
而看顶上我说的常见类型,字符串类型的英文表达就是string这个单词,所以说明typeof测试到name的类型是字符串(string)
修改变量的类型 ¶
JS是一种编程语言,而且又是一种脚本
编程语言,它有一个弱类型
的特征,什么是弱类型呢,就是变量的类型不用声明,也可以随意改变.
至于什么是变量的类型不用声明,我就不解释了,这里说说随意改变,例子:
var name = '小明';
name = 111;
var type = typeof(name);
alert(type);
name = '小东';
type = typeof(name);
alert(type);
name = '111';
type = typeof(name);
alert(type);
第1次会提示number,因为虽然开头name的值是字符串"小明",但紧接着在第2行就赋值为数字111了
后来又赋值为字符串"小东",于是第2次弹窗会提示string
而第3次弹窗却提示string,为什么呢?----原因就是第3次赋值时虽然也是赋111,但注意这个111被单引号引住了,所以它是一个字符串,只是字符里面是3个1,然而它不是数学上的111
反正你赋值的时候那个值是字符串,那么变量就成了字符串类型,而赋的是数字,那么就会是数字类型
一般情况下我们不要随意去修改变量的类型,如果它开头就是字符串,那么最好一直让它赋予字符串值
最后还要告诉你两个常见的变量类型 ¶
无类型(null) ¶
虽然布尔类型只有true和false两个值,但是"无类型"这种更夸张,它只有一个值,它就是
null
,它表示"无"的意思以后你想让一个变量的值变成无的话,就
var xx = null;
就行了
未定义类型(undefined) ¶
这个类型和无类型一样,也是只有一个值,就是
undefined
一个内存变量声明后不设置值,那么它就是未定义内存值的,比如
var a; //只是定义,没有值 alert(a); //会提示 undefined ,表示你没有定义这个变量的值(不是没有定义变量,而是没有定义值)
但要注意一个事情,undefined是一个类型,但以下代码则不同
变量a是一个字符串,字符串的内容叫undefined而已
但变量b没有初始化值,它才是真正的undefined
var a = 'undefined',b; alert(a); //提示undefined alert(b); //也是提示undefined //通过typeof得到变量类型名称看看 var atype = typeof(a), btype = typeof(b); alert(atype); //提示string,说明它是一个字符串 alert(btype); //提示undefined,说明它是一个undefined类型