变量类型和计算
[目录]
一、JS中使用typeof能得到哪些类型?
```
typeof undefined //undefined
typeof 'abc' //string
typeof 123 //number
typeof true //boolean
typeof {} //object
typeof [] //object
typeof null //object
typeof console.log //function
//补充:typeof只能区分值类型的详细类型,不能区分引用类型的详细类型,但可以区分出引用类型中的函数
```
二、何时使用 === ;何时使用 ==
"="是严格运算符,""是相等运算符
-
“===”严格运算符
- 如果两个值的类型不同。直接返回false
- 同一类型的原始类型值(数值、字符串、布尔值)比较时,值相同就返回true,值不同就返回false
- 两个符合类型(对象、数组、函数)的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象(它们所指的地址是否相同)
-
“==”相等运算符
- 相等运算符在比较相同类型的数据时,与严格相等运算符完全一样
- 在比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较
- 原始类型的数据会转换成数值类型再进行比较,如:字符串和布尔值都会转换拿成数值类型
- 对象(广义上的对象,包括数值和函数)与原始类型的值比较时,对象转化成原始类型的值,再进行比较
- undefined和null与其他类型的值比较时,结果都为false,它们相互比较时结果都为true
- 相等运算符的隐式转换,会带来一些违反直觉的结果,例如:
'' == '0' //false 0 == '' //true 0 == '0' //true false == 'false' //false false == '0' //true false == undefined //false false == null //false null == undefined //true '\t\r\n' == 0 //true //补充:虽然一般推荐使用 === ,但是在jQuery源码中推荐的写法有“obj.a == null”,同时除了“0、NaN、''、null、undefined、false”这几个表现为false,其他的大部分都表现为true
三、JS中有哪些内置函数
Date:日期函数、Math:数学函数、Number、Boolean、String:字符函数、Array:数组函数、RegExp、Function、Object、齐局、事件、其他单击参考JavaScript内置函数
四、JS变量按照存储方式区分为哪些类型,并描述其特点
```
// 值类型:undefined string number Boolean
var a = 100;
var b = a;
var a = 200;
console.log(a)//200
console.log(b)//100
// 引用类型:对象 数组 函数
var a = {age:20}
var b = a //a、b指向同一个地址
b.age = 21
console.log(a.age) //21
```
五、如何理解JSON
JSON只不过是一个JS对象而已,JSON (JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。
```
//字符型转字符串型
JSON.stringify({a:0,b:20})
//字符串转字符型
JSON.parse('{"a":10,"b":20}')
```