变量类型
● 值类型 vs 引用类型
//基本类型 直接开辟一个新空间,然后赋值给你
var a = 100
var b = a
a = 200
console.log(b) // 100
//引用类型 并不是拷贝一份值然后赋值给你 是给你一把同一个房间的钥匙
var c = {age:100}
var d = c // 把C的引用地址给了B
d.age = 200 //拿到了C的引用地址 就相当于拿到了C房间的钥匙,可以随便修改房间的东西
console.log(c.age) //200
//这样设计的原因是节省空间
//引用类型 : 对象、数组、函数
● typeof 运算符
//typeof只能区分基本(值)类型
console.log(typeof undefined) //undefined
console.log(typeof 'acb') //string
console.log(typeof 123) //number
console.log(typeof true) //boolean
console.log(typeof NaN) //number
//除了 function 以外, 其他引用类型分不出来
console.log(typeof console.log) //function
console.log(typeof {}) //object
console.log(typeof []) //object
console.log(typeof null) //object
变量计算 - 强制类型转换
● 字符串拼接
var a = 100 + 10
var b = 100 + '10'
console.log(a); //110
console.log(b); //10010 字符串拼接
● = = 运算符
console.log(100 == '100') // true
console.log(0 == '') // true == 会把 0 和空字符串转为false 这里相当于 false == false
console.log(null == undefined) // true 和上面一样 null 和 undefined 都会被转为false
● if 语句
var a = true
if (a) {
console.log('a = true')
}
var b = 100
if (b) { // if 会强制把b转为一个布尔值 b会变成true
console.log('b = true') //会输出
}
var c = '' //空字符串会被转为false
if(c){
console.log('c = true') //不会输出
}
var d = 0 // 0 会被转为false
if(d){
console.log('d = true') //不会输出
}
//在if(...) 中 0、NaN、''、false、null、undefined、 会被转为false
● 逻辑运算
console.log(10 && 0) //0 10会被转为true 并且(&&)语句 前一个是true 直接抛出后面
console.log('' || 'abc') //abc 空字符串转为false 或者语句(||) 前一个false ,抛出后面的
console.log(!window.abc) //true window没有abc属性,所以是undefined ,undefined取非 ,所以就变成true了
var a = 100
console.log(!!a) //true 加两个非 强制转为布尔值
var b = ''
console.log(!!b) //false
var c = 0
console.log(!!c) //false
何时使用 === 和 ==
// 问题: 何时使用=== 和 ==
if(obj.a == null){
//这里相当于 obj.a === null || obj.a === undefined ,简写形式
//这是jquery源码中推荐的写法
}
或者
function obj (a,b){
if(a == null){
}
}
//除了这个以外,其他全用 === 来写
// === 不会强制进行类型转换
JS中的内置函数
// js中有哪些内置函数 —————— 数据封装类对象
Object
Array
Boolean
Number
String
Function
Date
RegExp
Error
如何理解JSON
//问题: 如何理解JSON
// JSON 只不过是一个 JS 对象而已
// JSON也是一种数据格式
console.log(JSON.stringify({a:10,b:20})) //把对象变为字符串
console.log(JSON.parse('{"a":10,"b":20}')) //把字符串变为对象