我爱编程

JS 里的数据类型

2018-06-09  本文已影响0人  leiuno

JS 里的数据类型

JavaScript 的数据类型,共有六种。

1、数值(number)
2、字符串(string)
3、布尔值(boolean)
4、undefined
5、null
6、对象(object)

原始类型:number string boolean
复合类型:object
特殊值:undefined null

JS三种方法判断一个值到底是什么类型

1、typeof运算符
数值、字符串、布尔值分别返回number、string、boolean。
注意以下几个案例的typeof的返回值

typeof undefined  //undefined
typeof null  //object
typeof fn  //function

2、instanceof运算符

3、Object.prototype.toString方法

1、整数与浮点数
JS内部,所有的数字都是以64位浮点数形式存储,JS底层语言中没有整数的概念,所有的数字都是小数,即64位浮点数,
因浮点数,不是精确的值,运算时要特别小心

0.1 + 0,2 === 0.3 //false

2、数值的表示法
下面两种情况,JS自动转换为科学计数发
(1)小数点前的数字多于21位

12324234343453454565486450978054789567
1.2324234343453454e+37

(2)小数点后的零多于5个。

.0000000009
9e-10

3、数值的进制

十进制:没有前导0的数值。
八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。
十六进制:有前缀0x或0X的数值。
二进制:有前缀0b或0B的数值。

默认情况下,JavaScript 内部会自动将八进制、十六进制、二进制转为十进制。

4、特殊数值
(1)JS 内部实际上存在2个0:一个是+0,一个是-0,区别就是64位浮点数表示法的符号位不同。它们是等价的。
只有作为分子时不等价

1/0    //Infinity
1/-0   //-Infinity

(2)NaN,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。

NaN不等于任何值,包括它本身。
NaN与任何数(包括它自己)的运算,得到的都是NaN。
NaN在布尔运算时被当作false。
判断是否是NaN的方法,isNaN(),isNaN只对数值有效,如果传入其他值,会被转为数值

5、正无穷Infinity和负无穷-Infinity

Math.pow(2, 1024)   // Infinity
0/0   //Nan
1/0   //Infinity

Infinity大于一切数值(除了NaN),-Infinity小于一切数值(除了NaN)
Infinity与NaN比较,总是返回false。

1、string 用单引号或双引号表示
2、空字符串和空格字符串

''.length  //0
' '.length  //1

3、转义符:反斜杠 \

4、多行字符串的写法

//第一种
var x1 = '123\
         234'
//第二种     (推荐)    
var x2 = '123' +
         234'

ES6多行字符串

var x3 = `123
344`

两元逻辑运算符: && (And),|| (Or)
前置逻辑运算符: ! (Not)
相等运算符:===,!==,==,!=
比较运算符:>,>=,<,<=

3、布尔值转换规则,下面六个值转为false,其他均为true

undefined
null
false
0
NaN
""或''(空字符串)

undefined == null   // true

null 只有一个值null
undefined 只有一个值undefined
变量没有赋值,是undefined
有一个对象,还不想赋值,推荐给一个空值null
非对象,还不想赋值,推荐给一个undefined

1、对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合
2、键名:对象的所有key都是字符串,加不加引号都可以,非字符串的key会自动转为字符串,但不加引号,key必须符合标识符
3、获取属性值
(1) object[‘key’],方括号运算符,键名必须放在引号里面,否则会被当作变量处理。
(2) object.key,此时key是字符串key

4、查看所有属性
Object.keys方法,属性以数组的方式列出

5、删除对象的属性

delete object['key']  //删除后无key,无value
object.key  //undefined
'key' in object  //false

//这种情况,只是把undefined的值赋给key,key还是在的
object['key'] = undefined

6、in运算符
检查对象是否包含某个属性,如果包含就返回true,否则返回false。

var obj = { p: 1 };
'p' in obj // true

in运算符它不能识别哪些属性是对象自身的,哪些属性是继承的。继承的属性也返回true

7、for…in 循环
for...in循环用来遍历一个对象的全部属性。

它遍历的是对象所有可遍历(enumerable)的属性,会跳过不可遍历的属性。
它不仅遍历对象自身的属性,还遍历继承的属性。

上一篇 下一篇

猜你喜欢

热点阅读