数字—>字符串
- toString()
- toString(n) //n进制
- toFixed(x)
- toExponetia(x)
- toPrecision(x)
字符串—>数字
- paresInt() //只解析整数
- paresFloat()
- paresInt(“3 bind mice”) //=>3
- paresFloat(“3.14 meters”) //=>3.14
P52 对象转换为原始值
toString():将对象转换为字符串,如
- [1,2,3].toString() //=>” 1,2,3”
- (function(x){f(x);}).toString() //=>” function(x){\nf(x);\n}”
- /\d+/g.toString() //=>” /\\d+/g”
- new Date(2010,0,1).toString() //=>”Fri Jan 01 2010 00:00:00 GMF 0800(PST)”
valueOf():将对象转换为数字,如
- new Date(2010,0,1).valueOf() //=>1262332800000
具体见P49 表3-2
P49 JavaScript中对象有:
*自定义对象:{}
*自定义数组:[]
*自定义函数:function(){}
*内置函数:Number()、String()、Boolean()、Object()
*内置对象 (见P45) :new Date()、new Number()、new RegExp()、new String()、new Object() 、new Array()
*正则表达式(见P45):同new RegExp()
P95 函数定义有两种写法:
(1)
- var f =
- function(x){
- return x+1;
- }
(2)
- function f(x){
- return x+1;
- }
P74 = 赋值运算符
== 相等运算符(允许任意类型的操作数)
=== 恒等运算符
!= 不相等运算符(允许任意类型的操作数)
!= 不恒等运算符
P75 JavaScript对象的比较是引用的比较,而不是值得比较,对象只有和其本身相等,但和其他任何对象都不相等。
严格相等“===”运算符:
如果两个值类型不相同,则它们不相等;
如果两个值都是null或undifined,则不相等;
如果其中一个值是NaN,或者两个值都是NaN,则不相等;
NaN和其他任何值都是不相等的,包括它本身。所以通过x!==x来判定x是否为NaN。只有x为NaN的时候,这个表达式的值才为true。
如果两个值为数字且数值相等,则它们相等;
如果两个值为字符串,且所含的对应位上的16位数完全相等,则它们相等;
如果两个引用值指向同一个对象、数组或函数,则它们是相等的。
相等运算符“==”
如果两个值类型不相同,则不一定不相等;
如果一个值是null,另一个是undefined,则它们相等;
如果一个值是数字,另一个是字符串,先将字符串转换成数字,然后用转换后的值比较;
如果其中一个值是true,则将其转换为1再进行比较;
如果其中一个值是false,则将其转换为0再进行比较;
如果一个值是对象,另一个值是数字、字符串,则使用
其他不同类型之间的比较不相等。
P76 只有数字和字符串才能真正执行比较操作,那些不是数字和字符串的操作数都将进行(隐式)类型转化,规则如下:
如果操作数为对象,则按
在对象转换为原始值后,如果两个操作数都是字符串,那么按照字母表的顺序进行比较;如果至少有一个原始值不是字符串,那么两个原始值都将转换为数字进行比较。
P77 大写字母小于小写字母,如
Zoo < aardvark
P77 加号运算符偏好字符串(如果有一个操作数是字符串的话,则进行字符串操作);
比较运算符更偏爱数字(如果有一个操作数为数字,则另一个操作数转换为数字再作比较)。
P77 “<=”和“>=”比较运算符在判断相等的时候,并不依赖于相等运算符和严格相等运算符的比较规则。相反,小于等于运算符是简单的“不大于”,大于等于运算符也只是“不小于”。
P78 当其中一个操作数是(或转换后是)NaN的时候,所有4个比较均返回false。
P
P78 instanceof 运算符,左操作数是一个对象,右操作数是一个标识对象的类,如果左操作数是右侧类的实例,则返回true,否则返回false。
P78 所有对象都是object的实例。
P87 typeof返回值为表示操作数类型的一个字符串
|
x |
typeof x |
原始值 |
数字或NaN |
“number” |
字符串 |
“string” |
|
true或false |
“boolean” |
|
对象 |
函数 |
“function” |
对象 |
“object” |
|
宿主对象 |
由编译器各自实现的字符串 |
|
其他 |
undefined |
“undefined” |
null |
“object” |
P110 throw语句(自定义抛出异常)
if(x<0){
throw new Error(“x不能是负数”);
}
P111 处理异常
try{
两种异常(一种是throw语句,另一种是方法间接抛出(隐式异常))
}catch(e){
可以用throw重新显示抛出异常
}finally{
}
P111 尽管catch和finally都是可选的,但try从句需要至少二者之一与之组成完整的语句。
P112 当由于return、continue或break语句使得解释器跳出try语句时,解释器在执行新的目标代码之前先执行finally块中的逻辑。
P112 如果没有catch语句只有finally,那么会隐式地向上抛出异常(不过如果finally中使用了return\continue\break或throw语句,那么尽管已经抛出了异常且这个抛出的异常还没有处理,这个方法依然会正常返回)