发表于: 2017-01-19 02:24:16

1 1326


今天完成的事:开始刷js高级程序设计

明天计划的事:继续刷

遇到的问题:今天刷了一下JS当中的数据类型,有如下收获:


数据类型
typeof操作符
用来鉴别给定变量的数据类型
特殊情况:当调用typeof null时,为"object"。safari5及之前的版本,Chrome7及之前的版本对正则表达式调用typeof操作符时会返回“function”,而其他浏览器再这种情况下会返回“object”。

undefined类型
在使用var声明变量,但是未加以初始化时,这个变量的值就是undefined
var message;  //该变量声明后默认取得了undefined值
var age   //这个变量没有声明
alert(message); //“undefined”
alert(age); //产生错误

var message;  //该变量声明后默认取得了undefined值
var age   //这个变量没有声明
alert(typeof  message); //"undefined"
alert(typeof   age); //"undefined"

Null类型
从逻辑角度来说,null表示一个空对象指针,所以当使用typeof的时候会返回一个“object”
实际上undefined是派生于null的
所以alert(null == undefined); // true

boolean类型
只有两个字面值:true和false;
要注意区分大小写,True和Fales都不是boolean值,只是标识符
var message = "Hello World";
var messageBoolean = Boolean(message);
在这个例子中,字符串message被转换成了一个Boolean值,至于被返回的是true还是false,取决于转换值的数据类型及其实际值。

数据类型                          转换为true                  转换为false
Boolean                             true                             fasle
String                               任何非空字符串             ""空字符串
Number                           任何非零数字值             0和NaN
Object                              任何对象                         null
Undefined                         n/a(不适用)                   undefined

Number值
拥有不同的数值字面量格式
如十进制,八进制(第一位数必须是零,在严格模式下无效),十六进制(前两位必须是0x)
在进行算数时,所有以八进制和十六进制表示的数值最后都会转换为十进制数值。
1.浮点数值
该数值中必须包含小数点,并且小数点之后必须至少包含一个数字
对于那些极大或极小的数值,可以用e表示法(即科学计数法)
var floatNum = 3.125e7;//等于31250000
var floatNum = 3e-3;//等于0.003
浮点数的精确度是17位小数,但是计算精度远远比不上整数。
2.数值范围
如果在计算中得到的结果超出了js的数值范围,负值就为-Infinity(负无穷),正值为Infinity(正无穷)
3.NaN
即非数值,一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)
特点:1.任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点可能在多步计算中会导致问题。
          2.NaN与任何值都不相等,包括NaN本身。
所以针对以上情况有了isNaN()函数,该函数接收一个值后,尝试转换这个值变为数值,如果不能转换,这个函数返回true
     alert(isNaN(true));  // false (可以转换为数值1)
isNaN()函数也可以适用于对象。首先调用对象的valueOf()方法,确定该方法返回的值是否可以转换为数值。如果不能,则基于这个返回值再调用tostring()方法,再测试返回值。
4.数值转换
三个函数可以把非数值转换为数值:
1.Number()函数
如果是Boolean值,true和false将分别被转换为1和0.
如果是数字值,知识简单的传入和返回
如果是null值,返回0
如果是undefined,返回NaN
如果是字符串,遵循以下守则:
  1.如果字符串中只包含数字,则将其转换为十进制数值
  2.如果字符串中包含有效的浮点格式,则将其转换为对应的浮点数值
  3.如果字符串中包含十六进制,则将其转换为相同大小的十进制整数值
  4.如果字符串为空,转换为0
  5.如果字符串包含除上述格式以外的字符,将其转换为NaN。
如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果为NaN,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符串值。
2.parseInt()函数
在转换字符串时,更多的是看其是否符合数值模式。如果第一个字符不是数字字符或者负号,parseInt()就会返回NaN;
也就是说用parseInt()转换空字符会返回NaN。
如果第一个字符为数字字符,parseInt()会继续解析第二个字符,直到解析全部后续字符或者遇到一个非数字字符。
例如:”1234blue“,转换为1234,”22.5“转换为22,因为小数点不是有效的数字字符
可以为函数指定基数:
var num1 = parsetInt("AF",16); //175(十六进制解析)
var num2 = parsetInt("10",2);//2 (二进制解析)
以此类推
3.parseFloat()函数
与parseInt()函数相似,但是字符当中第一个字符串是有效的,并且它始终会忽略前导的零。
且十六进制字符串始终会转换成0,该函数只解析十进制。


收获:以上。


返回列表 返回列表
评论

    分享到