JS变量最基本的分类就是值类型和引用类型,两者有何区别呢,可以通过例子看出来
值类型
var a = 100;
var b = a;
a = 200;
console.log(b); // 100
因为 b 是 a 的副本,相当于直接在栈内存中拷贝一个a的值 赋值给 b, a 和 b 两者之间是没有关联的。
引用类型
var a = {age:20};
var b = a;
a.age = 21;
console.log(a.age); //21
console.log(b.age); //21
因为引用类型是放在堆内存中,a 和 b 同时指向 这个地址。修改a的同时,b也会修改
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
何时使用===
何时使用==
根据 jQuery 源码中的写法,只推荐在一个地方用`==`,其他地方都必须用`===`。这个用`==`的地方就是:
if (obj.a == null) {
// 这里相当于 obj.a === null || obj.a === undefined ,简写形式
}
1 == '1' // true
1 === '1' // false
0 == false // true
0 === false // false
null == undefined // true
null === undefined // false
JS中有哪些内置函数 —— 数据封装类对象
Object
Array
Boolean
Number
String
Function
Date
RegExp
Error
如何理解JSON
JSON是一个 JS 对象,有两个API,也可以理解成 一种数据格式
JSON.stringify({a:10, b:20}) //把对象变成字符串
JOSN.parse('{"a":10,"b":20}') //把字符串变成对象
&& 与 || 或 !非
false && null || 0 返回 false 遇假返回假 全部为假 返回第一个假
false || null || 1 返回1 遇真返回真 全部为假 返回最后一个假
!true 取反
!!100; 强制转换成布尔值
转换成false
0
''
NaN
undefined
null
false