数据类型
数字与字符串
区别:
- 功能:
- 数字可以运算,但是字符串不可
- JS中储存形式
- 数字:64位浮点数形式储存
- 字符串:UTF8形式储存,用数字编号所有符号
UTF-8 是 Unicode 一种存储规则,也叫字符编码规则。
JS中数据类型 (四基两空一对象)
Tips:不是数据类型:数组,函数,日期(这三个都是对象)
布尔(bool)
只有两个值(大小写无所谓)
- true
- false
falsy值
这不是false的值但是相当于false
- NaN(Not a Number,意思是不知道什么的数字)
- ''(空字符串,没有空格)
- null
- undefined
- 0
除此之外还有一个false,其他都是true值
eg.
- if(1){} =>if(true){}
- if(0){} =>if(false){}
- if(''){} =>if(false){}
- if('0'){} =>if(true){}
可得到bool值
- 否定运算
if(!1) - 相等运算
if(1=2) - 比较运算
if(1>2)
数字(number)
JS 的 number 全都是以小数(浮点数)的形式存储的,没有单独的整数
特殊值
-
0/+0/-0
值相同
区别:1/0,1/+0都是正无穷
1/-0为负无穷。 -
NaN
无法表达的数字
NaN不等于NaN,因为他们只是代表无法表示的数字,但是他们不一定相同。
eg. 以前无法理解负数的时候,-1就是NaN,同时-2也是。所以不一定相同 -
infinity/-infinity
正负无穷
范围
- 最大的二进制数字:指数最大且有效数字最大
- 最小二进制数字: 指数往负方向最大,且有效数字为1
- 若有效数字多于许可范围,则多出来的有效数字变成0
- 十进制最多是15位有效数字,若有16位有效数字开头<90也可存
字符串(string)
写法
''//单引号
""//双引号
``//反引号
坑
it`s ok
是不对的,因为第一个'和it's中的'会组合成字符串,也就是得到'it'和 s ok的指令
正确写法:
''it/'s ok' // /'是转义,只有一个字符串的长度
`it's ok`// 用`来作为字符串的引用
转义的写法
\' //'
\\ // /
\n //换行
\r //回车
\t //Tab制表符
\uFF //对应的Unicode字符
转义的长度中/是不占字符长度的
eg.\n\t\r
长度为3
Tips:
- 字符串中要打回车,用反引号可以直接打,其他要转义
- 字符串属性
- 长度
- 下标
eg.
let s ='abcd'
s[0] ='a'
s[4]=false// 由于是从0开始,所以'd'是s[3]
符号(symbol)
不讲
空(null)
空(undefined)
两个空本质无差别
区别:
- 若一个变量声明无赋值为undefined(默认),一个函数没写return为null
- 习惯:对象中的空为null,非对象中的空为undefined
对象(object)
对象声明
- var(过时了不用了)
- let
- 遵循块作用域,使用范围不超过{}
- 不可重复声明
- 可赋值也可不赋值
- 先声明后使用
- 全局声明let变量不会变成window属性,但是var会
eg.
{
let a = 1
}
console.log(a)
报错,a 没有定义,因为 let a 的作用域在 { } 内部
{
console.log(a)
let a = 1
}
报错,因为不能在声明 let a 之前使用 a
- const
- 遵循块作用域,使用范围不超过{}
- 不可重复声明
- 一定要赋值,有且仅有一次赋值
- 先声明后使用
- 全局声明let变量不会变成window属性,但是var会
Tips:
变量声明时候指定值的同时也要指定对象
eg.
let a=1// 值为1,类型为number
数据类型转换
- 数字=>字符串
let n=1
//4种方法
String(n)
n + ''
'' + n
n.tostring
Tips!!
- 1.tostring是不对的,因为1. 后面计算器会默认要加小数,所以要1..tostring/(1).tostring
- 字符串=>数字
let s ='123'
//2种方法
s-0
ParseInt(s)//让其变成整数
- 任何变成bool
let x
//2种方法
boolear(x)
!!x
js学习资料
JS秘密花园,JS中奇怪的点
网友评论