1.数值
1.1整数和浮点数
所有数字都是用64位浮点数保存,不严格区分整型和浮点型。64位中第1位数字表示该数字的正负,第2位到第12位为指数,第13位到第64位为有效数字。因此JavaScript 能够表示的数值范围为21024到2-1023。数字超过了21024次方后返回Infinity
,小于或等于2-1075返回0
。
1.2数值表示
数值有多种表示方法
123e3 //123000
123e-3 //0.123
0b11 // 3,0b开头表示二进制
011 // 9,0开头表示八进制
0x11// 17,0x开头表示十六进制
1.3正负0
JS数字保留了一个二进制位作为正负位,所以0
也有正负。
- 除于
+0
和-0
会分别得到+Infinity
和-Infinity
1.4 NaN`
NaN
表示非数字,字符串与数字计算的结果就会是NaN
,非实数也表示为NaN
。0/0
的结果为NaN
,但是非0数除于0的时候,结果为+Infinity
和-Infinity
。NaN
的布尔值为false
。NaN
的任何运算结果都为NaN
。
1+'x' // NaN
Math.sqrt(-1) // NaN
0/0 // NaN
8/0 // Infinity
NaN === NaN // false
Boolen(NaN) // false
1.5 Infinity
数字超过了21024次方后返回Infinity
,Infinity
区分正负+Infinity
和-Infinity
。Infinity
>任何数>-Infinity
,但是和NaN
比较时候结果都为false
。
Math.pow(2,1024) // Infinity
-1/0 // -Infinity
1.6 关于Infinity
和NaN
的四则运算
NaN
的任何计算结果都为NaN
NaN + 10 // NaN
NaN - 10 // NaN
NaN * 10 // NaN
NaN / 10 // NaN
Infinity
与常数的计算和大部分常数计算一样
5 * Infinity //Infinity
5 + Infinity //Infinity
5 - Infinity // -Infinity
5 / Infinity // 0
Infinity /5 // Infinity
Infinity * Infinity // Infinity
Infinity + Infinity // Infinity
Infinity
部分计算得到NaN
Infinity * 0 // NaN
Infinity - Infinity //NaN
Infinity / Infinity //NaN
2.字符串
2.1.多行字符串
JS提供了多种方法来输入多行字符串
1.反斜杠结束,反斜杠后不可有任何字符串
var a = 'a \
b\
c'
console.log(a) // 'abc'
2.多字符串拼接
var a = 'a' +
'b'+
'c'
console.log(a) // 'abc'
3.反引号,难用的很
var a=`a
b
c`
console.log(a) // 'a\nb\nc'会带入\n
4.骚操作
(function (){ /*
a
b
c
*/}).toString().split('\n').slice(1,-1).join('')
// abc
2.2转义符
反斜杠 \
的特殊含义
\0 : null
\b : 后退
\f : 换页
\n : 换行
\r : 回车
\t : 制表
\v : 垂直制表
' : 单引号'
" : 双引号"
\ : 反斜杠\
反斜杠表示Unicode
\HHH 用3个八进制表示Unicode
'\251' // ©
'\172' // z
\xHH 用2个十六进制表示Unicode
'\xA9' // ©
'\x7A' // z
\uXXXX 用4个十六j进制表示Unicode
'\u009A' // ©
'\u007A' // z
2.3长度
length返回字符串长度
var a = 'balabala'
a.length //8
2.4切片
和Python不同的是,JS字符串无法直接多切、逆切,只能正向单切
var a = 'balabala'
a[0] = 'b'
a[1] = 'a'
a[-1] = undefined
a[1:2] //直接报错
a[0,3] //a 迷一样的操作
3.undefined和null
JS的数据类型比python多了undefined
和null
,二者都是“没有”,但语义和用在计算的时候体现出不同。
-
null
表示空值,undefined
表示未定义 - 在数字计算中,
null
转为0,undefined
则转为NaN
4.布尔
4.1 true false
在JS中,其他类型的除了undefined
\null
\false
\0
\NaN
\空字符串
,其他都为true
。
4.2 或且非
&&
用来表示且
,||
用来表示或
,!
用来表示非
。
1 && 1 // true
1 && 0 // false
0 && 0 // false
1 || 1 // true
0 || 1 // true
0 || 1 // false
!0 // true
!1 // false
4.3 三元运算
用?
和:
分隔的三个表达式,第一个表达式判断,第二个为true
的值,第三个为false
的值。
var a = 1 ? '我是对的' : '我是错的' // a = ’我是对的'
var b = 0 ? '我是对的' : '我是错的' // b = ’我是错对'
a ? b : c 等同于 if(a){b}else{c}