第3章 类型、值和变量
- JavaScript有两个特殊的的原始值,null和undefined
- JavaScript除了数字,字符串、布尔值、null和undefined之外的就是对象
数字
-JavaScript不区分整数值和浮点数。JavaScript中的所有数字均用浮点数表示。
整数型直接量
- 十进制整数
- 十六进制值,以“0x”或“OX”为前缀,其后跟随十六进制数串
- ECMAScript标准不支持八进制直接量
0xff //15*16+16=255
浮点数直接量
-即在实数后跟字母e或者E
3.14
2345.789
6.02e23 //6.02*10^23
1.473822E-32 //1.473822*10^(-32)
JavaScript中的算术运算
- JavaScript中的算术运算在溢出(overflow),下溢(underflow)或被0整除时不会报错。
- 溢出(overflow)返回无穷大(Infinite),下溢(underflow)返回负无穷大(-Infinite)
- 0除以0没有意义,返回NaN(not-a-number)
- isFinite()函数,在参数不是NaN、Infinite、-Infinite是返回true
- NaN:它和任何值都不相等,包括自身。(和Oracle的null相似)。应当使用想x!=x来判断,当且仅当x为NaN时,表达式才为True。(只有为NaN时才会出现自己和自己比不相等)
- isNaN()函数,如果参数是NaN或者一个非数字,则返回true
二进制浮点数和四舍五入错误
二进制浮点数表示法不能精确地表示0.1这样的数字。
var x=.3-.2; //0.09999999999999998
var y=.2-.1; //0.1
x==y //==>false,两值不相等
日期和时间
var now=new Date(); //当前时间
var then=new Date(2017,6,20); //2017-07-20,月以0开始,表示为1月
var later=new Date(2017,0,20,17,10,30); //2017-1-20 5:10:30pm
文本
-JavaScript采用UTF-16编码的Unicode字符集,JavaScript字符串是有一串无符号的16位值组成的序列
-那些不能表示为16位的Unicode字符则遵循UTF-16编码的编码规则,用两个16位值组成一个序列,这表示一个长度为2的字符串(2个16位值)有可能表示一个Unicode字符
var p="π"; //π由16位内码表示0x03c0
var e="��"; //��由17位内码表示0x1d452,console.log('\ud835\udc52');
p.length; //1
e.length; //2
//在ECMAScript 6中,有一个新的Unicode转义符,能让你指定任意的码位(不用再管是否是16位)
console.log('\u{1d452}');
Chapter 24. Unicode and JavaScript
ECMASCRIPT 6中字符串的新特性
New string features in ECMAScript 6
字符串直接量
1.如果想要字符串显示两行,直接加\n
var str1="1234\ntttt";console.log(str1);
1234
tttt
2.ECMAScript 3中,字符串直接必须写在一行中,在ECMAScript 5中,字符串直接量可以拆分成数行,但每行必须以反斜线(\)结束。
转义字符
\xXX 由2位16进制数XX指定的Lation-1字符
\uXXXX 由4位16进制数XXXX指定的Unicode字符