3.3 变量:编程
ECMAScript 的变量是松散类型的,它能够用来保存任何类型的数据,每一个变量仅仅是一个用于保存值的占位符而已。安全
var message = 'hi';编程语言
这句代码的意思是,将字符串‘hi’赋值给变量 message ,而不是将 message 变量标记为字符串类型函数
3.4 数据类型:测试
因为保存浮点数值须要的内存空间是保存整数值的两倍,所以 ECMAScript 会不失时机地将浮点数值转换为整数值es5
NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个原本要返回数值的操做数未返回数值的状况(这样就不会抛出错误了)spa
例如,在其余编程语言中,任何数值除以0都会致使错误,从而中止代码执行。3d
但在 ECMAScript 中,任何数值除以0会返回 NaN ,所以不会影响其余代码的执行。对象
NaN 自己有两个非同寻常的特色。首先,任何涉及 NaN 的操做(例如 NaN / 10)都会返回 NaN,这个特色在多步计算中有可能致使问题。其次,NaN 与任何值都不相等,包括 NaN 自己。blog
isNaN() 在接收到一个值以后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串“10”或Boolean值。而任何不能被转换为数值的值都会致使这个函数返回true。
尽管有点儿难以想象,但 isNaN() 确实也适用于对象。在基于对象调用 isNaN() 函数时,会首先调用对象的 valueOf() 方法,而后肯定该方法返回的值是否能够转换为数值。若是不能,则基于这个返回值再调用 toString() 方法,再测试返回值。而这个过程也是 ECMAScript 中内置函数和操做符的通常执行流程,更详细的内容请参见3.5节
把非数值转换为数值有3个函数,这三个函数对于一样的输入会有返回不一样的结果
因为 Number() 函数在转换字符串时比较复杂并且不合理
所以在处理字符串转数值的时候更经常使用的是 parseInt() 函数和 parseFloat() 函数
parseInt() 函数
一、该函数能够接收两个参数,第一个参数能够是数字或字符串,第二个参数是基数,决定以哪一种进制去解析第一个参数
二、前缀是0的数字字面量是八进制数,前缀是0x的数字字面量是十六进制数,在使用 parseInt 函数去解析八进制的数字字面量的字符串时,es3和es5存在分歧
三、因此若是是解析八进制字面量字符串时,如‘070’,与其这样写 parseInt('070') 不如这样写 parseInt('070', 8)更安全保险,若是指定了第二个参数,第一个参数的表示进制的前缀能够省略
四、不指定基数意味着让 parseInt() 决定如何解析输入的字符串,所以为了不错误的解析,建议不管在什么状况下都明确指定基数。多数状况下,咱们要解析的都是十进制参数,所以始终将10做为第二个参数是很是必要的。
parseFloat函数
一、parseFloat只接收一个参数,由于它只解析十进制值,该参数能够是数字也能够是字符串
二、若是字符串包含的是一个能够解析为整数的数(没有小数点,或者小数点后都是0),parseFloat() 会返回整数