变量类型
值类型 vs 引用类型
- 值类型
var a = 100
var b = a
a = 200
console.log(b) //100
- 引用类型
var a = {age:20} //age是a的属性,而a是一个对象,内存中指针指向这个对象
var b = a //a,b都指向同一个对象
b.age = 21
console.log(a.age) // 21
引用意为,变量其实是指针。
引用类型都一样,不光是对象可以有属性,函数和数组也可以有属性。
引用类型:对象,数组,函数。
typeof运算符详解
typeof undefined //undefined
typeof 'abc' //string
typeof 123 //number
typeof true //boolean
//typeof只能区分出值类型,以上的是值类型
typeof {} //object对象
typeof [] //object 引用 数组
typeof null //object对象 引用类型
typeof console.log //function
//typeof以上是引用类型,不能区分出引用类型,但只能区分出函数,因为函数是很特别的引用类型。
typeof可以详细区分值类型,引用类型只能区分出函数。
变量计算 - 强制类型转换
- 字符串拼接
var a = 100 + 10 // 110
var b = 100 + '10' // '10010' 此处发生了类型转换,100从数字转为了字符串
- ==运算符
100 == '100' //true
0 == '' //true ''为空字符串
null == undefined //true
慎用==符号,这里换为===就不会出现这种问题。
- if语句
var a = true
if(a){
//进
}
var b = 100
if(b){
//进
}
var c = '' //''是false
if(c){
//不进
}
- 逻辑运算
console.log(10 && 0) // 0
console.log('' || 'abc') // 'abc'
console.log(!window.abc) //true window.abc是undefined
//简单判断一个变量会被当做true还是false
var a = 100
console.log(!!a) //true
var b = ''
console.log(!!b) //false
//只有以下几个表达式,在if判断句里当fasle使用
if(0){}
if(NaN){}
if(''){}
if(null){}
if(undefined){}
if(false){}
理解JSON
问题:如何理解JSON
回答:JSON是一个JS对象。它是一种数据格式,也是一种API,但它不是函数。
JSON.stringify({a:10, b:20}) //作用把对象转为字符串
JSON.parse('{"a":10,"b":20}') //作用把字符串转为对象