目录
一、题目
1、Js中使用typeof能得到的那些类型
2、何时使用===何时使用==
其他地方都用三等 (代码洁癖 )只在以下俩种使用==
- 判断对象的属性是否存在
var obj = {}
if (obj.a == null) {
// 这里相当于 obj.a === null || obj.a === undefined 的简写形式
// 这是jquery源码中推荐的写法
}
- 判断函数的参数是否存在
function fn(a, b) {
if (b == null) {
// 这里相当于 b === null || b === undefined 的简写形式
}
}
3、Js中有哪些内置函数 ——数据封装类对象
这些内置函数的具体讲解 参考 http://blog.sina.com.cn/s/blog_c112a2980102xl0d.html
Object,Array,Boolean,Number,String,Function,Date,RegExp,Error
有什么作用,后边原型链那一块讲
4、Js变量按照存储方式区分为那种类型,并描述其特点
- 值类型的特点:它每个变量都能存储各自的值,不会相互影响
- 引用类型的特点:不同变量之间的值,会相互影响
5、如何理解json
是一个JS对象,也是一种数据格式
JSON.stringify({a:10,b:20});//"{"a":10,"b":20}" 把对象序列化成成一个JSON的字符串
JSON.parse('{"a":10,"b":20}');//{a:10,b:20} 把JSON字符串反序列化成一个对象
二、知识点
2.1 变量类型
值类型 vs 引用类型
引用类型 对象,数组,函数 内存共用空间
var a=20;
var b=a;
a=21;
console.log(b); //20
var a={age:20};
var b=a;
b.age=21;
console.log(a.age); //21
特点:从内存中来说,值类型是把每一个值都存到变量内存的位置,比如a存了100,把b赋值给a,b的位置又存了100这个数字,a的位置把100改成200,b的位置等于100,还是100,所以它不会相互影响。
引用类型他不一样,引用类型是把a赋值成一个对象,这个对象存在另一个地方,a内存的位置是通过一个指针指向这个对象的地方,把b赋值成a的时候,其实是定义了一个b,b的指针又指向了那个对象的位置,所以这个age=20这个对象只有一份,a和b同时指向了这个对象而已,所以说当执行第三行b.age=21的时候,那个age的值已经改成了21,所以a也是指向这个对象,所以说a.age也是21。
引用类型为什么要这样做,而不是直接拷贝也存储一份?引用类型可以无限制扩展属性,比如现在它有个age属性,我们也可以加name属性啊,grade属性啊,等等等等很多属性,属性加多了之后,会出现内存占用比较多的问题。在值类型中a=100,把b赋值成a,相当于把100又重新拷贝了一份存下,没有关系,因为100不会占用很多内存。如果这个地方把a赋值成一个对象,但是它又特别大,b再赋值成a,b也拷贝复制一份,他就会占很大的空间,这是不合理的,所以说为了让内存共用空间,才会出现引用类型这种方式。
Typeof 只能区分出值类型四种,引用类型都是object和function 总共六种
typeof undefined //undefined
typeof 'abc' //string
typeof 123 //number
typeof true //bollean
typeof {} //object
typeof [] //object
typeof null /object
typeof console.log //function
2.2 变量计算
强制类型转换
- 字符串拼接
var a=100+10 ;//110
var b=100+"10" //10010
- ==运算符
100=='100'; //true
0==''; //true 都转换为false
null ==undefined; //true 都转换为false
- If语句
var a=true
if(a){
}
var b=100
if(b){
}
var c=''
if(c){
}
- 逻辑运算
console.log(10 && 0) //0 true && false
console.log('' || 'abc' ) //'abc
console.log(!window.abc) //true window.abc是undefined
//判断一个变量会内当做 true 还是false
var a=100
console.log(!!a)