基本数据类型
一.数值类型:number 判断类型:typeof判断后的类型以字符串形式展现出来 如typeof 1 结果:number
1 .特殊:Infinity(无穷大) NaN 和非数值类型进行运算,除了加法,得不出正确的结果.
科学计数法:如1.2e4=1.2*10^4
2.JS语言特性:运算有可能不太准确
(1)小数:没有办法精确表示,累计运算误差会叠加
解决方式:1)先成运算成整数,再除
2)自己分装一个算法函数
(2)数值再大就不行了=》超出了一定范围就会表示成Infinity(-Infinity)
最大安全数:Number.MAX_VALUE 1.7976931348623157+308 (+号表示正数 1.79的308位)
最大安全整数:Number.MAX_SAFE_INTEGER 9007199254740991(17位数)
最小安全数:Number.MIN_VALUE
3.进制转换。不要在数字前面添加奇怪的符号 (满进制数进一位,后面变为0)
公式:(1)在n进制中,将一个数:abcd转成为10进制 an^3 + bn^2 + c*n + d
(2)将十进制转二进制(在控制台中):(需要转的数字).toString(需要转的进制) 如:51转二进 制:(51).toSting(2)=“110011”
(1).十进制:0 1 2 3 4 5 6 7 8 9 满10进1
(2) 二进制:0 1 满2进1 比如十进制的2:用2进制表示10
控制台中: 二进制转十进制:0b开头 如0b10=3
(3) 八进制:0 1 2 3 4 5 6 7
控制台中: 八进制转10进制:0开头 如017=15
(4) 十六进制:0 1 2 3 4 5 6 7 8 9 a b c d e f 十六个表示符
控制台中: 十六进制转十进制:0x开头
二.字符串:string
1.左右两边加上相同的引号的都是字符串:
2. 没有特殊含义的文本,用它来表示文本
3.可以用单引号‘’ 可以用双引号“” 还有个反引号``(这个可以兼容换行)
4.字符串中有一个特殊的符号:转义符 \:(反斜杠)能将后面的符号 转换成没有特殊含义的符号 , 如" 会把引号转成没有特殊含义的引号 如:“\”“=》”"“ 如打印" \ “=>”\ \ " 如果要输出3个反斜杠,则需要六个反斜杠
如:let box = “” 需要转变为“<\ /script>”才可以
像这样有些特殊的字符串需要转义一下,否则会出现歧义
/:(斜杆)
5.\n可以执行换行 如“婷\n猪”=>"婷
猪“
6.字符串拼接:
(1) 普通字符串
如:let name = “婷猪”
let world = “嗯啊”
let str = name + "说:\ “” + world + " \ “”
console.log(str)
结果:婷猪说:“嗯啊”
(2)模板字符串拼接:使用反引号拼接,可以让拼接变得更可读,在模板字符串中使用${ }在{ } 中可以插入变量. 替换+号
如:let name = “婷猪”
let world = “嗯啊”
let str = ${name}说:"${word}"
结果:婷猪说:“嗯啊”
7.空字符串也是字符串
三,布尔类型(boolean):判断某些内容的结果是真是假 true 或 false
1.自己定义什么为真,什么为假
我们所写的代码(表达式 )都会有返回值。为什么要有返回值,浏览器靠什么判断你的代码执行完了,即代码是否返回完了。
四,underfined(未定义)
含义:表示访问了一个不从在的内容,或者是没有给定初始值的内容(属性)
typeof undefined =>undefined
五,null(空:不存在 )
含义:规定这个东西不存在。使用null。指向了一个不存在的空间
一般用于清空内容:使变量=null.是个主动值
typeof null => object
六,object(一个不存在的对象):对象类型
1. 任何值都有自己的数据类型
2.用对象的形式来进行整合:{ } 可以在对象中添加属性 (信息)
3.信息的构成:属性名(name): 推荐大家写字符串,默认情况不写引号,推荐不写,在JS中只有这个地方字符串可以不写引号
属性值(value): 某个数据类型
如:小胖猪的个人信息:
let person = {
"name":"小胖猪"
}
或:
let person = {
name:"小胖猪"
}
结论:默认情况不写引号,推荐不写
在JS中只有这个地方字符串可以不写引号
从person对象中访问name属性:
person.name
-
对象的基本操作:
对象的创建:用{ } 可以直接创建。
person【s】:里s是变量。
person.s :s是字符串
如:创建一个变量(person),将一个空对象赋值给person let person = {}
对象属性的:
(1)增加:(添加一个不存在的属性)
方法1:对象. 操作数 添加的值 //这里属性直接是字符串,不是变量
给person添加一条属性。值是小胖猪 这个时候name就不是一个变量了,而是person的属性 如:person.name = "小胖猪" 则:就添加了一条name的属性
方法2:在创建时添加
如:let person = { age: 18, type:"student", } 每条信息之间用逗号隔开。age这里是字符串
方法3:对象[属性]=值 //这里属性直接是变量,不是字符串
给person添加一条name属性。值是小胖猪 person["name"]="小胖猪" 则:name:"小胖猪"
判断那条属性所对应的值: 1.如:let s = "sex" person[s] = "male" 则:sex:"male" 2.如: let s = "sex" person.s = "male" 则:s:"male" 3.如:let n = "name" let person={ ["n"]:"小胖猪" } 则:n:"小胖猪" 4.如: let n1 = "na" let n2 = "me" ler person = { [n1+n2]:"小胖猪" //[`${n1}${n2}`]:"小胖猪" } 则:name:"小胖猪" 5.let a let person = { [a]:"小胖猪" } 则:underfined
(2)删除(delete):delete 对象访问属性的写法 1. a.b 2.a[“b”]
如;delete a.b 或delete a["b"]
(3)修改:等于增加(两步 操作),如果有这条属性就修改这条属性,如果没有就增加
如果想修改属性的属性名: 1.将原来的属性值存下来, 2.删除原来的属性名 如:person.oldname = person.name delete person.name 则:person就把person.name改为person.oldname
通过嵌套的删除: let obg = { a:{ b:"文本" } } delete obg.a.b 则:a对象里的b属性被删除
(4)查询:等价于添加的左半部分
如;let person = {
na:"小胖猪"
}
则:person.na
即可查询到"小胖猪"
5.每条信息之间用逗号隔开,最后一行后面也需要添加
6.对象里面是可以嵌套的。
如:let obg = {
a:{
b:"文本"
}
}
七:报错:uncaught typeError:cannot red property ‘c’ of undefined
含义:没有办法从undefined中读取c属性。
解决办法:如:person.a.b.dd.c.v (嵌套的)
因为c这块报错了,所以找到c前面的dd,知道是它出了问题。这时检查dd就ok了.