JavaScript中的类型

1.数字

2.字符串(char是长为1的字符串)

3.布尔值

4.null

5.undefined

6.对象(包括函数)

算术运算中的注意点

1.1/0 = Infinity(除0不报错)

2.0/0 = NaN

3.NaN不与任何值相等,包括自身

4.Infinity/Infinity = NaN

5.负数开平方 = NaN

6.+0 == -0 为真

7.判断 NaN 和 Infinity 的好办法是 isNaN() 和 isFinite()

字符集

1.JavaScript采用UTF-16编码的Unicode字符集

2.不能表示为16位的Unicode字符用两个16位值组成的序列表示,称作“代理项对”

3.JavaScript定义的各种字符串操作方法均作用于16位值,而非字符,且不会对代理项做单独处理

转义字符

1.\xXX:由两位十六进制数XX制定的Latin-1字符

2.\uXXXX:由4位十六进制数XXXX指定的Unicode字符

关于null 和 undefined

null表示”没有对象”,即该处不应该有值。典型用法是:

1.作为函数的参数,表示该函数的参数不是对象

2.作为对象原型链的终点

undefined表示”缺少值”,就是此处应该有一个值,但是还没有定义。典型用法是:

1.变量被声明了,但没有赋值时,就等于undefined

2.调用函数时,应该提供的参数没有提供,该参数等于undefined

3.对象没有赋值的属性,该属性的值为undefined

4.函数没有返回值时,默认返回undefined

1
2
3
4
5
6
7
8
9
10
11
var i;
i // undefined
function f(x){console.log(x)}
f() // undefined
var o = new Object();
o.p // undefined
var x = f();
x // undefined

JavaScript类型转换

1.类型转换表

字符串 数字 布尔值 对象
undefined “undefined” NaN false throws TypeError
null “null” 0 false throws TypeError
true/false “true”/“false” 1/0 \ new Boolean(true/false)
“”(空串) \ 0 false new String(“”)
“1.2”(非空数字) \ 1.2 true new String(“1.2”)
“one”(非空非数字) \ NaN true new String(“one”)
0/-0 “0” \ false new Number(0/-0)
NaN “NaN” \ false new Number(NaN)
Infinity/-Infinity “Infinity”/“-Infinity” \ true new Number(Infinity/-Infinity)
{}(任意对象) 见下文 见下文 true \
1,2,3 “1,2,3” 0 true \
6 “6” 6 true \
[‘s’] 使用join()方法 NaN true \
function(){}(任意函数) 见下文 NaN true \

2.对象至字符串的转换

step1:试图使用该对象的toString()方法得到原始值,再化该原始值为字符串

step2:若该对象没有toString()方法或toString()方法不返回原始值,则试图使用对象的valueOf()方法得到原始值并转为字符串

step3:若该对象无法从toString()和valueOf()方法得到原始值,则抛出类型错误异常

3.对象至数字的转换

step1:若对象具有valueOf()方法,则通过它得到原始值,再将其转为数字

step2:若对象没有valueOf()方法但有toString()方法,则通过后者返回一个原始值,再将其转为数字

step3:否则,抛出一个类型错误异常

4.字符串到数字的转换

Number():转化为整数或浮点数直接量,只适用于十进制

全局函数parseInt(string)、parseInt(string, n):只能解析整数,自动识别”0x”或”0X”前缀,跳过前导空格,尽可能多解析字符,并忽略后面不可解析的内容

全局函数parseFloat():可解析整数和浮点数,跳过前导空格,尽可能多解析字符,并忽略后面不可解析的内容

5.数字到字符串的转换

toString(n):n进制的字符串,缺省则转化为十进制

toFixed(n):小数点后n位的数字

toExponential(n):指数计数法,小数点前只有1位,小数点后n位

toPrecision(n):有效数字n位