一、JS中的数据类型有7种
1.数字 number
2.字符串 string
3.布尔 bool
4.符号 symbol
5.空 undefined
6.空 null
7.对象 object
1.数字 number
写法
整数写法:1
小数写法:0.1
科学计数法:1.23e4
八进制写法(用得少):0123或00123或0o123
十六进制写法:0x3F或0X3F
二进制写法:0b11或0B11
特殊值
正0和负0:都等于0,要严谨
无穷大:Infinity、+Infinity、-Infinity
无法表示的数字:NaN(Not a Number),但它是一个数字:isNaN()可以判断一个数是否为NaN,是返回false,不是返回true
2.字符串 string 每个字符两个字节(阉割版的utf-8)
写法
单引号:'你好'
双引号:'你好'
反引号:`你好`
注意:引号不属于字符串的一部分,就像书名号不属于书名的一部分一样
这里我们来看下转义,也就是用另一种方法表达你想要写的东西
\ '表示'
\ "表示"
\n 表示换行
\r 表示回车
\t 表示tab制表符
\\ 表示 \
\uFFFF 表示对应的Unicode字符
\xFF 表示前256个Unicode字符
错误写法
'it's ok'
JS引擎会认为'it'就结束了,后面的看不懂
正确写法
'it\'s' ok' // 这就是转义
"it's ok"
`it's ok`
多行字符串(如果想在字符串里回车,用反引号很容易做到)
let s = `这里是
可以的
用反引号很容易做到`
字符串的长度
String.length
'123'.length // 3
'\n\r\t'.length // 3
''.length // 0
' '.length // 1
通过下标读取字符
String[index]
let s = 'hello',
s[0] // 'h'
注意index从0开始
s[0] 是第一个字符
注意index到length
let s = 'hello'
s[5] // undefined, 居然不报错
s[4] // '0'
base64转码(一般用来隐藏招聘启事里的简历)
windows.btoa
正常字符串转为Base64编码的字符串
windows.atob
Base64编码的字符串 转为原来的字符串
3.布尔 bool
只有两个值 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{...}
五个falsy值
falsy就是相当于false但又不是false的值
分别是:undefined、null、0、NaN、''
4.符号 symbol
不怎么常用的数据类型
5.空 undefined & 6.空 null
区别
-没有本质区别
-细节一:如果一个变量声明了,但是没有赋值,那么默认值就是undefined,而不是null
-细节二:如果一个函数,没有写return,那么默认return undefined,而不是null
-细节三:前端程序员习惯上,把非对象的空值写成undefined,把对象的空值写成null,但这仅仅是习惯上的
--------------------------------------------------------------------------------------------
判断数据的类型 typeof
var num = 10; console.log(typeof num); // number
var str = 'william'; console.log(typeof str); // string
var william = true; console.log(typeof william); // boolean
var a = undefined; console.log(typeof a); // undefined
var b = null; console.log(typeof b); // object
--------------------------------------------------------------------------------------------
7.对象 object
见JS对象博客
https://www.jianshu.com/p/aff130d82bb0
二、类型转换
number=>string
String(n)
n+'' (更简单)
string=>number
Number(s)
parseInt(s) // 取整数
parseFloat(s) // 可以是小数
s-0
+s
x=>bool // 把任何一个东西变为布尔
Boolean(x)
!!x (更简单)
x=>string
String(x)
x.toString()
如:(1).toString
三、变量声明
三种声明方式
var a = 1
let a = 1
const a = 1
a = 1
区别
var是过时的,不好用的方式
let是新的,更合理的方式
const是声明书必须赋值,且不能再改的方式
最后这种方式是错的,不准这样声明
var声明
直接跳过,写代码不用
let声明
规则
遵循块作用域,即使用范围不能超出{}
不能重复声明
可以赋值,也可以不赋值
必须先声明再使用,否则报错
全局声明的let变量,不会变成windows属性
for循环配合let有奇效
const声明
规则
跟let几乎一样
只有一条不一样:声明时就要赋值,赋值后不能改
变量声明
指定值:var a = 1
同时也指定了类型:var a = 1
但是值和类型都可以随意变化:a = 2 / a = '字符串'
name和'name'的区别
name是变量,值可以变,可以是'name',也可以是'hello'
'name'是字符串常量,常量就是不变量,'name'只能是'name',不能是其他值
网友评论