JS中的数据类型
7种
数字 number
字符串 string
布尔 bool
符号 symbol
空 undefined
空 null
对象 object
下面不是数据类型
数组,函数,日期,属于object(对象)
布尔(boolean)
真true 或 假false
下列运算会得到bool值
否定运算 !value
相等运算 1==2,1!=2,3===4,3!==4
比较运算 1>2,1>=2,3<4,3<=4
在一个值前面加! 取它的相反
if 配 bool
if语句常常需要判断真假
if(value){}else{}
JS的5个falsy值,相当于是假的,但又不是false的值
undefined,null,0,NaN,""
整个JS里只有6个假值
undefined,null,0,NaN,"",false
数字number
整数 1
小数 0.1
科学计数法 1.23e4
八进制写法 0123或00123或0o123
十六进制写法 0x3F或0X3F
二进制写法 0b11或0B11
特殊值
0,正0,负0
都等于0,但有区别
Infinity(无穷大) +Infinity(正无穷大)-Infinity(负无穷大)
NaN(Not a Number)无法表示的数字,不知道的数字,也是数字
字符串string
写法
单引号, '你好'
双引号, "你好"
反引号, `你好`
如果单引号包含了单引号怎么办?
错误写法
'it's ok' JS引擎会认为 'it' 就结束了
正确写法
'it\'s ok'
"it's ok"
`it's ok`
转义,用另一种写法表示你想要的东西
\'表示'
\"表示"
\n 表示换行
\r 表示回车
\t 表示tab制表符
\\表示 \
\uFFFF 表示对应的Unicode字符
\xFF 表示 前256个Unicode字符
多行字符串(如果想在字符串中回车)
使用反引号
let s=`内容
内容
内容`
字符串的长度(string.length)
'123'.length 3
'\n\r\t'.length 3
''.length 0
' ' 1
通过下标读取字符
string[index] index从0开始
let s='hello'
s[0]
'h' s[0]是第一个字符
index到length (index比length少1,因为从0开始)
let s='hello'
s[5] undefined
s[4] 'o'
base64转码
window.btoa 正常字符串转为base64编码的字符串
window.atob base64编码的字符串转为正常的字符串
window.btoa('123')
window.atob('MTIZ')
undefined 和 null
两种空类型,没有本质上的区别
如果一个变量声明了,但没有赋值,那么它的值就是undefined,而不是null
如果一个函数没有写return,那么JS会默认写return undefined,而不是null
前端程序员习惯上,把非对象的空值写为undefined,把对象的空值写为null,仅仅是习惯上
JS的变量声明
三种方式
var a=1
let a=1
const a=1
a=1 错误的,不是变量声明
区别
var是之前的,不好用的方式
let是新的,更合理的方式
const声明时,必须赋值,而且不能更改
a=1 是错误的
let声明
遵循块作用域,即使用范围不能超过{}
不能重复声明
可以赋值,也可以不赋值
必须先声明在使用,否则报错
全局声明的let 变量,不会变成window属性
for循环时有奇效
const声明
遵循块作用域,即使用范围不能超过{}
不能重复声明
声明时必须赋值,赋值后不能更改
必须先声明在使用,否则报错
全局声明的const 变量,不会变成window属性
变量声明
var a=1 指定值
var a=1 同时也指定了类型(数字)
a=2,a="字符串" 但是值和类型可以随意变换
name 和 'name' 的区别
name是变量,存放在(内存的不知道啥区),可以使任何东西,值可以变
'name'是字符串,常量,就是不变的量,'name'只能是'name'
类型转换
numbe=>string
string(n)
n+''
前端用第二种
string=>number
Number(s)
parseIns(s)/parseFloat(s)
s-0
前端用第三种
x=>bool
Boolean(x)
!!x
前端用第二种
x=>string
string(x)
x.tostring()
详细资料点击:JavaScript