JS数据类型分类
- 七种(四基两空一对象)
数字number
字符串string
布尔 boolean
符号 symbol
空 undefined
空 null
对象 object
注意
函数 日期 数组 都属于object
- Boolean
Boolean 只有两个值 true和false 注意大小写
下列运算符会得到布尔值
否定运算:!加一个值 取他的反值
相等运算 1==2 1!=2
比较运算 1>2 - number
整数写法:1 小数写法:0.1 科学计数法:1.23e4(1.23乘以10的4次方)
八进制写法:0123或00123或0o123
十六进制写法:0x3F或者0X3F
二进制写法:0b11 或者0B11
特殊值:
正0和负0 都等于0,要严谨
无穷大:
infinity +infinity -infinity
无法表示的数字
NAN(not a number) 表示一个不能表示的数字
NAN!=NAN - 字符串
字符串string 每个字符两个字节(阉割版的UTF-8)
写法:
单引号 ‘你好’
双引号:“你好”
反引号:你好
注意:
引号不属于字符串的一部分,就像书名号不属于书名的一部分一样
注意
- 引号嵌套
错误写法:
‘it‘s’ok js会认为it结束了 后面的看不懂
正确写法:
‘it\‘s ok’ 这就是转义 加斜杠
或者双引号里嵌套单引号 或者反引号里嵌套单引号 - 转义
就是用另一种写法表示你想要表示的东西
' 表示'
''表示''
\n表示换行
\r表示回车
\t表示制表符
\表示
\uFFF表示对应的Unicode字符
\xFF表示前256个Unicode字符 - 多行字符串
多行字符串
如果你想要在字符串里回车 只能用反引号 单引号和双引号里不能回车
字符串的长度:
string.length 空就是空 空格就是空格 两者不同
- 布尔与五个falsy值
if配bool
if语句常常需要判断真假
五个falsy值
falsy就是相当于false但又不是false的值
分别是undefined null 0 和NAN ‘’空的字符串
空字符串和空格字符串不是一个东西 一定保持严谨
- undefined和null
区别:
没有本质区别 但会有个别情况
细节一:
如果一个变量声明了但没赋值,那么默认值就是undefined 而不是null
细节二:
如果一个函数没有写return 那么默认return undefined 而不是null
细节三:
前端程序员习惯上,把非对象的空值写为undefined,把对象的空值写为null
但这只是习惯而已
'1'和1
都是一为什么要区分 '1'和1?
- 功能不同
数字是数字,字符串是字符串,要严谨
数字能加减乘除,字符串不行
字符串能表示电话号码,但数字不行(数字表示电话号码会省略开头0) - 存储形式不同
js中,数字使用64位浮点数的形式来储存
js中,字符串是用类似utf-8形式存储的(usc-2) - var let 与const
变量声明
var a=1 let a=1 const a=1 a=1
区别:
var 是过时的 不好用的方式
let是新的合理的方式
const是声明必须赋值,且不能再改的方式
最后这种是错误的声明方式 - let 声明
规则:
遵循块作用域 即使用范围不能超过{}
不能重复声明
可以赋值,也可以不赋值
必须先声明再使用,否则报错
全局声明的let变量,不会变成window的属性
for循环配合let有奇效 - const声明
规则:
几乎跟let一样
只有一条不一样:声明就要赋值 赋值后不能改 - 变量声明
指定值 同时也指定了类型 但是值和类型都可以随便变化 - 类型转换
- number=> string(n)
n+’’ - string=>number
Number(s)
parseint(s)/parseFloat(s)
s-0 - x=>bool
Boolean(x)
!!x - 任何东西转string
x=>string
tostring(x)
但是1.tostring会报错 1..tostring不会 (1).tostring也不会