基本吹牛逼类型
基础概念
1.ECMAscript 是 javascript 的标准 javascript 是 ECMAscript 的实现
js基础知识
js的数据类型
1.js一共有 8 种数据类型 es5 6 种 后面又添加了 2 种
1.Undefined String Symbol Object Null Number Boolean BigInt
2.Number
1.Number.MAX_VALUE,Number.MIN_VALUE
2.检查数据类型
1.typeOf 会返回 string number function boolean
1.number
1.NaN not a number typeOf(NaN) 返回 Number
2.Infinity -Infinity 分别表示正无穷 和 负无穷 typeOf(Infinity) 返回 Number
1.typeOf [] {} null 都是 object
2.typeOf undefined 返回 undefined
3.type Symbol("a") 返回 symbol
4.type BitInt(5) 返回 bigint
3.typeOf 总共返回 8 钟类型标识
3.数据类型转换
1.转换为 string
1.a.toString
1.对于 null 和 undefined 不会调用toString 而是内部 直接 转为 "null" "undefined"
2.String(a)
3.转为字符串 123 + "a" 先把123转为字符串 + ”a“ -> "123a"
2.转 number
1.Number("12") 12 纯数字 直接转化为数字
2.Number("") Number(" ") 空字符串 含空格也一样 转换为 0
3.Number("123px") 稍有不行 转为 NaN
console.log(Number(undefined)) //NaN
console.log(Number(NaN)) //NaN
console.log(Number({})) //NaN
console.log(Number(function(){})) //NaN
console.log("---------------------------")
console.log(Number(true)) //1
console.log(Number(false))//0
console.log(Number("123"))//123
console.log(Number(" "))//0
console.log(Number([]))//0
console.log(Number(null))//0
console.log(+"123")//123
console.log(0+"123")//"0123"
1.一元运算符 + 可以转为为数字 也是调用 Number
2.0 + ”123“ -> "0123"
4.parseInt("123px") 123
0.对于 非 string 的类型转换为 先转换为 string 再进行 解析
1.parseInt(true) -> parseInt("true") -> NaN
5.parseFloat
6.数据的表示种类
1.十进制 12
2.十六进制 0xaf
3.八进制 07
4.二进制 0b011
5.转换的时候可以指定进制 parseInt(a,8) 把 a 转为为 8 进制
7."123" * 1 -> 123 过程 Number("123") -> 123
1.+ - * / % 任何操作符操作 除了 + 遇到 字符串 转换为字符串 其他的任何运算符号 都转换为 数字运行
2.转换过程 Number() true + true = 2
3."123" - 1 = 122
3.boolean
1.以下 6 种 false 类型
1.fasle
2.0
3.空字符串”“ ” “ 有空格都不行 空格都是true
4.null
5.undefined
6.NaN
4.运算符
1.++ 和 -- /// let a = 1; a++ + ++a + a /// 结果是1 + 3 + 3 =7
1.let d = 1;d = d++;console.log(d) // 1 怎么理解呢 相当于 e = d++; d = e; e 很明显是 1 又赋值给了 d
2.a++ ++a 都会使a数值立即改变 不同的是 a++ 返回旧数值 ++a 返回新数值
2.逻辑运算符
1.!取反 !!转逻辑
2.if([] == "") 结果是 true 先转换为数值 再比较
3.比较运算符
1.a >= b <= > < 这些
1.如果 a b 类型相同 直接比较
2.如果类型不同 都是先将 a 和 b 通过 Number 转为数值型 进行比较
2. == 的比较
1.注意 == 的比较 转换比较复杂 两边类型相同 直接比较
2.如果两边类型不同比较麻烦
1.null和undefined是相等的 要比较相等性之前,不能将null和undefined转换成其他任何值
2.如果有一个操作数是NaN,则相等操作符返回false 而不相等操作符则返回true 数都是NaN,相等操作符也返回false
3.如果两个操作数都是对象,则比较他们是不是同一个对象。指向同一个对象,则相等放回true,否则返回false
1.所以 {} == {} 返回 false
4.如果由一个操作数是布尔值 则在比较相等性之前先将其转换为数值---false转换为0,而true转换为1
5.如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值
6.如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较