JS数据类型小结
2018-08-16 本文已影响0人
李不远
数值number
JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。
十进制:没有前导0的数值。
1
1.1
.1
二进制:有前缀0b或0B的数值。
0b11 //3
八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值
011
十六进制:有前缀0x或0X的数值。
0xFF //255
科学计数法
123e3 //123000
123e-3 //0.123
-3.1E+12
.1e-23
正零和负零
JavaScript 内部实际上存在2个0:一个是+0,一个是-0,区别就是64位浮点数表示法的符号位不同。它们是等价的。
NaN
NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。NaN不等于任何值,包括它本身。
Infinity
表示无穷
字符串string
书写
'hello'
"world"
'' //空字符串
' ' //空格
转义
\:在需要转移的字符前加此符号
\0 //null(\u0000)
\b //后退键(\u0008)
\f //换页符(\u000C)
\n //换行符(\u000A)
\r //回车键(\u000D)
\t //制表符(\u0009)
\v //垂直制表符(\u000B)
\' //单引号(\u0027)
\" //双引号(\u0022)
\\ //反斜杠(\u005C)
多行字符串
var s = '123 \
456'
var s = '123'+
'456' //推荐使用这种方法
var s = `123
456` //ES6[中间包含回车]
布尔值boolean
逻辑的基本单位true和false
可以转换成false的值
false
'' //空字符串
0和NaN
null
undefined
运算符Symbol
加法运算符
1+1 //2
true+true //2
1+true //2
'a'+'bc' //'abc'
1+'a' //'1a' 只有有一个字符串,执行时都会变成字符串拼接
算数运算符
-
加法运算符:
x + y -
减法运算符:
x - y -
乘法运算符:
x * y -
除法运算符:
x / y -
指数运算符:
x ** y -
余数运算符:
x % y -
自增运算符:
++x或者x++ -
自减运算符:
--x或者x-- -
数值运算符:
+x -
负数值运算符:
-x
赋值运算符
var x = 1
var x = y
x += y // 等同于 x = x + y
x -= y // 等同于 x = x - y
x *= y // 等同于 x = x * y
x /= y // 等同于 x = x / y
x %= y // 等同于 x = x % y
x **= y // 等同于 x = x ** y
比较运算符
-
<小于运算符 -
>大于运算符 -
<=小于或等于运算符 -
>=大于或等于运算符 -
==相等运算符 -
===严格相等运算符 -
!=不相等运算符 -
!==严格不相等运算符
布尔运算符
-
取反运算符:
! -
且运算符:
&& -
或运算符:
|| -
三元运算符:
?:条件?true:false
与if…else具有同样表达效果。区别在于
if...else是语句,没有返回值;三元条件表达式是表达式,具有返回值
位运算符
-
二进制或运算符(or):符号为
|,表示若两个二进制位都为0,则结果为0,否则为1。 -
二进制与运算符(and):符号为
&,表示若两个二进制位都为1,则结果为1,否则为0。 -
二进制否运算符(not):符号为
~,表示对一个二进制位取反。 -
异或运算符(xor):符号为
^,表示若两个二进制位不相同,则结果为1,否则为0。 -
左移运算符(left shift):符号为
<< -
右移运算符(right shift):符号为
>> -
带符号位的右移运算符(zero filled right shift):符号为
>>>
其他
-
void运算符的作用是执行一个表达式,然后不返回任何值,或者说返回undefined。 -
逗号运算符用于对两个表达式求值,并返回后一个表达式的值。
'a', 'b' // "b" var x = 0; var y = (x++, 10); x // 1 y // 10
null
表示一个空指针对象
现在有对象,但是不想赋值
undefined
在使用
var声明变量但未对其加以初始化时,这个变量的值就是undefined
变量没有值
对象object
对象其实就是一组数据和功能的集合
var person = {
name:'jean',
years:1991,
living:true
} //1.前面的key可以是空字符串'' 2.如果不加引号,必须服从标识符的书写规则
读取
可以使用括号运算符或者点运算符
person['name']
person.name //符合标识符的情况下
删除
delete person['name']
delete person.name
查看属性
Object.keys
var x = {
key1:1,
key2:2
};
Object.keys(x); //['key1','key2']
typeof
测试返回值
typeof 1 //返回'number'
typeof 'a' //返回'string'
typeof undefined //返回'undefined'
typeof null //返回'object' bug之一
typeof function f(){} //返回'function' bug之二
in 运算符
用于检查对象是否包含某个属性(注意,检查的是键名,不是键值),如果包含就返回true,否则返回false。
for in循环
for...in循环用来遍历一个对象的全部属性。
var obj = {a: 1, b: 2, c: 3};
for (var i in obj) {
console.log(obj[i]);
} //1,2,3