1、介绍js的基本数据类型
Undefined、Null、Boolean、Number、String
(1) Undefined和Undifined区别
null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。
- undefined:
- (1)变量被声明了,但没有赋值时,就等于undefined。
- (2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
- (3)对象没有赋值的属性,该属性的值为undefined。
- (4)函数没有返回值时,默认返回undefined。
- null:
- (1) 作为函数的参数,表示该函数的参数不是对象。
- (2) 作为对象原型链的终点。
(2)数据类型之间的转换
typeof查看,返回六个字符串
number string boolean object undefined function
(3)强制转字符串
String(变量) 可以转任何数据类型
变量.toString(); 除了null undefined,其它均可
(4)强制转数字
Nunber(); 可以转任何数据类型,只有能转成功或不能转成功之分。
转成功就是数字,转不成功就是NaN
parseInt() 转整数
parseFloat() 转小数
如果转不成功,则返回NaN
(5)隐式类型转换
+ - * / % ++ --
(6)NaN
1、NaN同谁都不相等,包括它自己
2、任何涉及NaN的操作返回的都是NaN
3、typeof查看返回的是number
(7)isNaN
不喜欢数值(包括字符串的数字),但喜欢数值类型的NaN
喜欢的是非数字
2复杂数据类类
复杂、引用数据类型(object)
数据封装类对象:Object、Array、Boolean、Number 和 String
其他对象:Function、Arguments、Math、Date、RegExp、Error
3 全等判定:
相等,值是否相等,会发生类型转换
全等,值和类型都要相等才相等,不会发生类型转换
console.log(1 == '1'); // true console.log(true == 1); // true console.log(null == undefined); // true,除此之外,它们不能和其它的值进行比较 // === 全等,值和类型都要相等才相等,不会发生类型转换 console.log(1 === '1'); // false console.log(true === 1); // false console.log(null === undefined); // false console.log(null !== undefined); // true console.log(null != undefined); // false
3、this对象的理解
this总是指向函数的直接调用者(而非间接调用者);
如果有new关键字,this指向new出来的那个对象;
在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window。
1 闭包:函数里面套函数,被嵌套函数就叫闭包。
闭包特点:
function init() { var name = "Mozilla"; // name 是一个被 init 创建的局部变量 function displayName() { // displayName() 是内部函数,一个闭包 alert(name); // 使用了父函数中声明的变量 } displayName(); } init();