JavaScript数据类型

看了一下JS语法,感觉语言之间都是相通的,有了编程基础感觉还是很好理解的。

JS的数据类型主要有几种: (其实大多数语言都差不多,只不过也有不同之处)。

1、数值;
2、字符串;
3、布尔值;
4、对象;
5、Undefined;
6、数组

1、数值

和其他语言不同的是,JS不区分整数和浮点数,一律按Number表示。

123; // 整数1230.456; // 浮点数0.4561.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5
-99; // 负数NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity

NaN :
在其他语言中,任何数值除以非数值都会抛出错误,但JS会直接返回NaN。NaN的特点:
1、它与任何值都不相等,alert(NaN==NaN)也会返回False。
2、任何涉及NaN的操作都会返回NaN。

针对于NaN类型,有一个特殊函数,isNaN().,这个函数很特殊,它会设置将接收到的值转换为数值。如果转换不了,就直接返回True。

isNaN(10);false
isNaN('10');  false
isNaN(true);false
isNaN('hello')  true

数值转换:

1、Number(),该函数的转换规则如下:
1)如果是null值,转为0;
2)如果是undefined会返回NaN;
3)如果字符串是纯数字,会转换为数字;但如果前面有0会省略。 var c = '011';//11
4)如果字符串中含有有效的十六进制格式,会转换为十进制;var c = '0xd'; //13

Number其实不怎么常用,主要用另外两种,parseInt和parseFloat,这两个函数专门用来将字符串转换为数值。

2、parseInt()
转换规则:
1)如果字符串是空,会返回NaN,这和Number不一样;var c = '' //NaN;
2)如果字符串第一个字符不是数字或者负号,就直接返回NaN,如果第一个是字符,那么久继续解析第二个字符,直到遇到非数字字符。这也和Number有很大区别。 var d = '024d';//24

3)八进制,16进制的转换和Number一致。
但要注意的是现在(ECMASCript 5 JS)不能直接转换了,要加上基数; parseInt('070',8);//56,如果不加就转换为70了。

3、parseFloat() 该函数与parseInt相似,但该函数只解析十进制,十六进制的会转换为0。它也不同指定基数的事了。

2、字符串

字符串的最大特点是一经创建,值就不能改变,要改变某个变量存储的字符串,首先会销毁原来的字符串,然后再用另一个字符串填充变量。

   var  a= 'ssf'
   var a= a +'fsf'

转换为字符串:几乎都用toString方法。布尔值,数值,字符串对象都有该方法,但undefined,null没有。

var e = true;
document.write(e.toString())    //"true"

还有一个转换函数String,它的规则是:
1、如果值有toString()方法就直接调用该方法;
2、如果是null,就返回‘null';
3、如果是undefined,就返回undefined

3、布尔值;

其实上面已经提到了,true,false

4、对象;
类似于Python中的字典,不过它的访问形式不仅可以像python一样访问,也可以直接用object.key访问。而且访问不存在的属性不报错,而是返回undefined:

var dic = {'dd':3,'dg':'dd'}
document.write(dic.dd)

5、Undefined;
如果定义一个变量,但是并没有赋值,会默认其值为undefind;

 document.write(undefined==undefined)  //true

6、数组
和其他语言的数据类型是一样的,不需要特别说明,只不过数组可以用Array声明。
new Array(1,2),不过最好还是直接使用[]。

--------EOF---------
微信分享/微信扫码阅读