1.js变量分为引用类型和值类型,引用类型包括:function,array,object。他们的区别,通过以下代码来解释:
1 //值类型型变量
2 var a=10;
3 var b=a;
4 b=20;
5 console.log(a);//10;
6
7 //引用型变量
8 var a={
9 age:10;
10 }
11 var b=a;
12 b.age=20;
13 console.log(a.age);//20
值类型在赋值给另一个变量时,两个变量是互不干扰,因为他们的内存是独立的。而引用类型是用一个指针指向一个内存空间,在赋值时,实际上是给新变量一个指针也指向这个内存空间所以,两个变量之间是相互影响的。
2.js变量类型
1 typeof 1; //number
2 typeof true; //boolean
3 typeof ‘hello‘; //string
4 typeof undefined; //undefined
5 typeof null; //object
6 typeof {}; //object
7 typeof []; //object
8 typeof console.log //function
js的六种数据类型:number , boolean ,string ,undefined, object,function。
typeof只能区分出值类型变量,不能区分出引用类型变量,引用类型变量只能区分出funciton,不能区分object和array。
3.===与==的区别,分别是在什么场景下使用。
==在赋值时,会进行类型强制转换,而===不会。
1 console.log(10==‘10‘) //true
==的使用场景:
1 if(obj.a==null){
2 //这里相当于obj.a===null||obj.a===undefined,简写形式
3 //这是jquery源码中的推荐写法
4 }
其他情况下,一律使用===
4.类型强制转换出现的几个地方
一,字符串拼接
二、使用==
三,if()条件判断中
四,逻辑运算符中
1 var a=10+‘10‘;
2 console.log(a); //‘1010‘;
3
4 console.log(10==‘10‘)//true (10转化成字符串‘10‘)
5 console.log(0==‘‘);//true (0和空字符串都会转换成false)
6 console.log(null=undefined);//true (null和undefined都会转换成false)
7
8 var a=10;
9 if(a){
10 //.... 这里会进入if语句,因为会把10强转为true
11 }
12 var a=‘‘;
13 if(a){
14 //... 这里不会进入if语句,因为会把‘‘强转为false;
15 }
16
17 console.log(10&&0);//0 (10会被强转为true,而&&符号的规则是前面为true,则结果为后面的值,相反,前面为false时,结果为前面的值);
18 console.log(‘‘||‘abc‘);//abc (‘‘会被强转为false,而||符号的规则是前面为ture时,结果为前面,前面结果为false时,结果为后面,与&&正相反)
19 console.log(!window.abc)//false (window.abc值为undefined,经过!转换后就变成了true)
所以,判断一个值是为true还是false时,可以:
1 //判断一个值为true还是false
2 var a=10;
3 console.log(!!a);
5.js中的内置函数
Object
Array
Boolean
String
Number
Function
Date
RegExp
Error
6.如何理解json
json是一种数据格式,也可以看做是js的对象。
json的两个方法:
1 JSON.stringify({a:10,b:20});//将js对象转换成json数据
2 JSON.parse(‘{"a":10,"b":20}‘);//将json数据转化成js对象