关于JavaScript的基本数据类型?
- undefined类型
- Null类型
- Sting类型
- Number类型
- Boolean类型
我们来一个个剖析
1.Undefined类型
只有一个值,就是他本身 Undefined ,undefined英文翻译(未定义的) ,在使用关键字 var 声明一个变量的时候,如果没有赋值的话,那么这个变量的值就是 undefined
例如:
var anan
console.log(anan) // undefined
它是等价于下面代码的
var anan = undefined
console.log(anan == undefined) //true
就相当于定义了一个变量,如果没有赋予实际意义的值,就相当于赋了个undefined值,但是我们一般不会人为去加一个undefined值给一个变量,除非真有需要.
注意一点
一个变量声明没有赋值,则会默认赋值undefined,但是一个变量没有被声明,自然也不会赋值undefined
例如:
var anan
// var jiahui
console.log(anan); //undefined
console.log(jiahui); //jiahui is not defined
奇怪的是,如果用typeof去检测这两个变量,则会有不同的结果,例如:
var anan
// var jiahui
console.log(typeof anna); //undefined
console.log(typeof (jiahui)); //undefined
可以看到两者都输出了undefined,即使没有声明的变量,因为这两种变量从技术角度看有本质的区别,但是无论对那种变量 也不可能执行真正的操作.所以都是返回undefined
2.Null类型
Null类型也是一个比较特殊的值,它也只有一个值就是null 从逻辑角度上讲,null值代表一个空对象指针,这就是我们用typeof null
的时候,返回的是一个object
的原因
如果我们console.log(null == undefined); //true
它会输出一个true,这是为什么呢?
实际上undefined的值是由null衍生而来的,所以才有上面的true,但是他们的用法却不一样,比如我们声明一个变量,但没有必要为它显式设置undefined值,但是我们如果准备用一个变量来保存对象,我们就很有必要将它保存null值例如
var a = null
这样就很明确的知道,这本变量a是用来保存对象的,也有利于区分null和undefined
3.String类型
String类型是由0或多个Unicode字符组成的字符序列,单引号或者双引号都可以用来包裹字符串
var str1 = "sanqian"
var str2 = 'sanqian'
//這兩種都是有效的
讲到字符串就很有必要了解一下字符的字面量,实际就是转移序列,通俗的讲,字符串中遇到这些符号,并不是将它当做字符输出,而是有哦一些特殊的含义,或许做字符串拼接的时候有用喔.
字面量 | 含义 |
---|---|
\n | 换行 |
\t | 制表 |
\b | 空格 |
\r | 回车 |
\\ | \ |
\" | 双引号("") |
\’ | 单引号(’) |
以上为部分字面量
任何字符串都有一个lenght属性,例如
var str = '1234567'
console.log(str.length); //7
字符串的特点:一旦声明不可该改变
var a = 'anan'
var a = a + 'jiahui'
console.log(a);
这操作其实是首先创建一个能够容纳10个字符的的新字符串,赋值为ananjiahui,然后在将anan和jiahui,也就是原来的字符串销毁掉.
4.Number类型
Number类型也就是数值类型,平时最常见的就是10进制类型,其实还有二进制/八进制/十六进制等,也属于数值类型.
如果输入的是10进制就正常解析输出
var a = 10; //a的值就是10
如果是八进制,那么 八进制 字面值第一位必须是0,然后是八进制数字序列(0-7),如果后面的数字序列有超出八进制数序列的话,那么前导的0将不生效,包括本来第一位的0,而是将这个数当做10进制来解析,例如
var num1 = 000234
var num2 = 0123
var num3 = 06687
console.log(num1);//156
console.log(num2);//83
console.log(num3);//6678
十六进制也是类似,但是十六进制 的前面必须有0x或者0X,后面跟十六进制数字序列(0-9,A-F/a-f),
var num1 = 0x1234
var num2 = 0xf
var num3 = 0x3254
console.log(num1);
console.log(num2);
console.log(num3);
在进行算术运算时,所有的八进制和十六进制表示的数值,都会被转化成十进制数值
5.Boolean类型
Boolean类型是我们在js中使用十分频繁的类型,Boolean类型只有两个字面值,true 和false但是这两个字面值和数字1,0不是一回事,因此true不一定等于1,false不一定等于0.
console.log(false === 0);//false
console.log(true === 1);//false
console.log(false == 0);//true
console.log(true == 1);//true
虽然Boolean的字面值只有两个,但是在js中,所有类型的值都有与Boolean类型等价的值,也就是说,用Boolean去转换其他类型 ,都会转换成true/false.
数据类型 | 转换后为true | 转换后为false |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | 空字符串 |
Number | 任何非零的数值(包括正/负无穷大) | 数值0 |
boject | 任何对象,比如:{} | null(null只是一个逻辑上的空对象的指针) |
undefined | n/a | undefined |
总的来说,只有0,’’,null,undefined,NaN这几个转换后是false(还有的话后面补充)
下面通过控制台show一下吧
console.log(Boolean(''));//fasle
console.log(Boolean('123'));//true
console.log(Boolean(123));//true
console.log(Boolean(0));//false
console.log(Boolean({}));//true
console.log(Boolean({name:'安安'}));//true
console.log(Boolean(null));//false
console.log(Boolean(undefined));//false
console.log(Boolean(NaN));//fasle
关于这几种数据类型就讲到这里,下期写关于这里部分数据类型的转换.
只是小白,如有错误请指正,谢谢
前端的路很辛苦,希望与你一起前行
最后送大家一句话:
既然上了岸,就别想海里的事情了.