浏览 4723 次
锁定老帖子 主题:javascript基础
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-28
最后修改:2010-01-05
以下是我在复习的过程中,感觉很重要的知识点,具体如下: 引用 ECMAScript的解释程序遇到未声明过的标识符的时候,用该变量名创建一个全局变量,并将其初始化为指定的值。
typeof运算符 引用 对变量或值调用typeof运算符将返回下列值之一:
"undefined",如果变量是Undefined类型; "boolean",如果变量是Bollean类型; "number",如果变量是Number类型; "string",如果变量是String类型; "object",如果变量是一种引用类型或Null类型; 你也许会问,为什么type运算符对与Null值也返回object,这实际上是JavaScript最初实现的中的一个错误,然后被ECMAScript沿用了,现在null被认为是对象的一个占位符,从而解释了这个矛盾,但从技术上讲,它仍然是原始类型。 Undefined类型只有一个值,那就是undefined,当声明的变量未初始化时,该变量的默认值是undefined; Null类型也只有一个值,即null,是一个字面量,值undefined实际上是从值null派生出来的,因此ECMAScript把他们定义为相等的。 alert(null==undefined); //output:true 尽管这两个值是相等的,但他们的含义不同;undefined是声明了变量但是未对其初始化时赋予该变量的值,null则用于表示尚未存在的对象,如果函数或方法返回的是对象,那么找不到该对象时,则返回null; Number类型有三个特殊的值,Number.MAX_VALUE和Number.MIN_VALUE,他们定义了Number类型变量的边界。另外一个特殊值就是NaN,表示非数(not a number),NaN是个奇怪的特殊值,一般说来,这种情况发生在类型(String,Boolean)转换失败时。NaN的另一个奇特之处在于:它与自身不相等,这意味着下面的代码将返回false: alert(NaN==NaN); //output:false 由于这种原因,我们不推荐使用NaN值本身,函数isNaN()就可以做的很好: alert(isNaN("blue")); //output:true alert(isNaN(123)); //output:false 类型转换 (1)、转换成字符串 ECMAScript的Boolean值,数字和字符串的原始值的有趣之处在于他们都是伪对象,这意味着他们实际上具有属性和方法,例如,字符串的长度,如下: var color = "blue"; alert(color.length); //output:4 引用 总而言之,三种主要的原始类型(Boolean,String,Number)都有toString()方法,ECMAScript定义所有对象都有toString()方法,无论它是伪对象,还是真的对象。
Boolean类型的对象的toString()方法只是输出"true"和"false"; Number类型的对象的toString方法比较特殊,有两种模式:默认模式(toString())和基模式(toString(2)、toString(8)、toString(18));默认模式无论数字是什么模式,都默认输出10进制数字,而采用基模式会输出对应的进制表示: var m = 10; var n = 10.0; alert(m.toString()); //output:10 alert(n.toString()); //output:10 var iNum = 10; alert(iNum.toString(2)); //output:1010 alert(iNum.toString(8)); //output:12 alert(iNum.toString(16)); //output:a 对数字调用toString(10)和toString()方法,效果一样。 (2)、转换成数字 ECMAScript提供两种把非数字的原始值转换成数字的方法,即parseInt()和parseFloat();前者把值转换成整数,后者把值转换成浮点数;只有对String类型的数据调用这两个方法,它们才会被正确执行,对其他类型都返回NaN。 引用 对于这两个方法,在判断字符串是数字值的过程中,paraeInt()和parseFloat()都会仔细分析该字符串,paraeInt()方法会首先查看位置0处的字符,判断它是否是个有效数字,如果不是,该方法会直接返回NaN,不再继续执行其他操作。但如果该字符是个数字值,则会继续查看位置1处的字符是否是个数字值,以此类推,直到最后,这一过程会持续到发现非有效数字的字符为止,不过字符串“22.5”会被转换为22,因为对于整数来说,小数点是无效字符,举例如下: var m = "1234blue"; alert(parseInt(m)); //output:1234 var n = "22.5"; alert(parseInt(n)); //output:22 parseInt()方法也有基模式,可以把2进制,8进制,16进制的字符串转换成整数,基是parseInt()方法的第二个参数指定的,举例如下: alert(parseInt("10",2)); //output:2 alert(parseInt("10",8)); //output:8 alert(parseInt("10",16)); //output:10 parseFloat()方法的用法与parseInt()方法基本上相同,特殊的是parseFloat()方法里面的字符串数值必须是10进制表示(该方法会忽略其他进制前边的0)。 (3)、强制类型转换 使用强制类型转换可以访问特定的值,即使它是另一种类型,ECMAScript可以使用一下3中强制类型转换: Boolean(value)——把给定值转换成boolean类型 Number(value)——把给定值转换成number类型 String(value)——把给定值转换成string类型 用这三个函数之一进行转换,将创建一个新值,来存放由原始值转换后的新值。 当要转换的值是至少有一个字符的字符串、非0数字和对象时,Boolean()函数将返回true;如果该值是空字符串、数字0,null、undefined,它将返回false; alert(Boolean("kongxin")); //output:true alert(Boolean("123")); //output:true alert(Boolean("new Object()")); //output:true alert(Boolean("")); //output:false alert(Boolean(0)); //output:false alert(Boolean(null)); //output:false alert(Boolean(undefined)); //output:false Number()强制转换时和parseInt()、parseFloat()大致相同,只是它转换的是整个值,而不是部分值,举例如下: alert(Number(false)); //output:0 alert(Number(true)); //output:1 alert(Number(undefined)); //output:NaN alert(Number(null)); //output:0 alert(Number("5.5")); //output:5.5 alert(Number("5.5.6")); //output:NaN alert(Number(undefined)); //output:NaN alert(Number(new Object())); //output:NaN 最后一种强制类型转换是String(),它可以把任何值转换成字符串;强制转换成字符串和调用toString()方法唯一不同的是:对null值和undefined值强制类型转换,可以生成字符串,而不会错误: alert(String(null)); //null alert(String(undefined)); //undefined alert(null.toString()); //没有输出 alert(undefined.toString()); //没有输出 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-30
呵呵,楼主跟我一样啊,我这几天也在看这本书!牛B牛B得紧啊
|
|
返回顶楼 | |
发表时间:2010-01-05
不知道跟犀牛书比起来怎么样,如果有必要这本也看看。
|
|
返回顶楼 | |