JS变量与计算
1、变量分类
JS变量最基本的分类就是【值类型】和【引⽤类型】
值类型:在内存中存放在“栈”中的数据,数据量⽐较⼩的,例如:undefined、string、number、boolean
引⽤类型:在内存中存放在“堆”中的数据,数据量⽐较⼤的占内存的,基于节省内存的机制,栈中仅保留堆地址,例如:object、array、function、null等
【typeof】可以区分类型有`number` `string` `boolean` `undefined`(值类型) `function` `object`(引⽤类型)
【typeof】可以准确区分值类型,引⽤类型仅可以区分对象和函数
值类型:
typeof undefined // undefined
typeof 'abc' // string
typeof 123 // number
typeof true// boolean
引⽤类型:
typeof {}  // object
typeof [] // object
typeof null // object    【因为 null 也是引⽤类型。null 就相当于引⽤类型中的 undefined】
typeof console.log // function
//值类型⽰例
var a = 100
var b = a
a = 200
console.log(b)
//引⽤类型⽰例
var a = {age:20}
var b = a
b.age = 21
console.log(a.age)
2、变量计算
JS 在值类型的运算过程中,特别需要注意和利⽤【强制类型转换】,使⽤场景:
- 字符串拼接 “+”
- `==`
- 逻辑运算(`if` `!` `||` `&&`)
1)字符串拼接
var a = 100 + 10  // 110
var b = 100 + '10' // '10010'
2) `==`
100 == '100'  // true
0 == ''  // true
null == undefined  // true
`==`会先试图类型转换,然后再⽐较,⽽`===`不会类型转换
1 == '1' // true
1 === '1' // false
0 == false // true
0 === false // false
null == undefined // true
null === undefined // false
  jQuery 源码中的写法,只推荐在⼀个地⽅⽤`==`,其他地⽅都必须⽤`===`。这个⽤`==`的地⽅就是:
if (obj.a == null) {  // 这⾥相当于 obj.a === null || obj.a === undefined ,简写形式
}
3)逻辑运算符(`if` `!` `||` `&&`)
//所有经过`if`判断的变量,都会进⾏逻辑运算的强制类型转换,转换为`true`或者`false`
var a = true
if (a) {
// ....
}
var b = 100
if (b) {
// ....      b强制转换成boolen值:true
}
var c = ''
if (c) {
// ....    c强制转换成boolen值:false
}
console.log(10 && 0)  // 0
console.log('' || 'abc')  // 'abc'
console.log(!window.abc)  // true
// 判断⼀个变量会被当做 true 还是 false
var a = 100
console.log(!!a)
⽇常开发中,以下变量会被转换为`false`
- 0
- NaN
- '' "
- null
- undefined
- false 本⾝
3、 JS中有哪些内置函数 —— 数据封装类对象 
 `Object` 、`Array` 、`Boolean` 、`Number` 、`String` 、`Function`
 `Date` 、`RegExp` 、`Error`
4、在 JS 中,所有的引⽤类型都可以⾃由设置属性
var obj = {}
obj.a = 100
js的基本数据类型
var arr = []
arr.a = 100
function fn() {}
fn.a = 100
5、如何理解JSON
JSON.stringify({a:10, b:20})      //将对象解析成字符串
JOSN.parse('{"a":10,"b":20}')   //将字符串数据转换为 JavaScript 对象
  从 JS ⾓度回答,`console.log(JSON)`得到`JSON`只是⼀个对象,有`parse`和`stringify`两个⽅法;  json 也是⼀种数据格式,这⼀点和 xml ⼀样。