1、NaN
NaN不等于它本身
任何数除以0返回NaN
NaN/10返回NaN
alert(isNaN(NaN));返回true,因为NaN本身不是一个数值,isNaN(),里面是一个参数,任何不能被转换为数值的值都会返回true。
var obj = {age:19};
isNaN(obj);
// 等同于
if (typeof obj.valueOf() === 'object') {
alert(isNaN(obj.toString()));
} else {
alert(isNaN(obj.valueOf()));
}
//var obj = {};
//当你把obj丢进isNaN(obj)时
// 做了两件事
// 1. 首先调用obj的valueOf()方法, 假设返回了一个 valueOfResult
// 判断valueOfResult是否可以转换为数值, 如果不能,
// 再 valueOfResult.toString() 看是否能转化为数值。
2、数值转换
有三个函数可以把非数值转换为数值:Number()、parseInt()、parseFloat()
Number()转换空字符串返回0
3、parseInt()如果第一个字符不是数字字符或者负号,返回NaN
parseInt()转换空字符串会返回NaN,
4、string类型
字符串可以有双引号跟单引号表示,在ECMAScript没有区别
字符字面量

任何字符串的长度都可以通过访问其length属性取得
5、数值,布尔值,对象和字符串值都有toString方法。但是null喝undefined值没有这个方法
6、在不知道要转换的值是null或者undefined的情况下,可以使用转型函数String()。能够将任何类型的值转换为字符串

7、object
var o = new Object();
8、如果不给构造函数传递参数,可以省略圆括号;但是不推荐这个方法
var o = new Object;
9、hasOwnProperty()。检查给定的属性在当前的对象实例中(不是在实例的原型中)是否存在。属性名必须以字符串形式指定,如o.hasPwnProperty("name");
10、isPrototypeOf(object),检查传入的对象是否是另一个对象的原型
11、valueOf()返回对象的字符串。数值或布尔值表示
12、do{}while()
var i = 0;
do{
i += 2;
} while(i < 10);
alert(i); //10
13、while语句属于前测试循环语句,在循环体内的代码被执行之前,就会对出口条件求值
var i = 0;
while(i < 10) {
i += 2;
}
alert(i);//10
14、for语句是前测试循环语句

var count = 0;
for(var i = 10;i > count;--i) {
alert(i);//9
}
alert(i);//10
--i是放在执行语句后面

15、for-in用来美剧对象的属性
16、break和continue
break语句会立即退出循环,强制继续执行循环后面的语句
continue语句立即退出循环,退出循环后会从循环的顶部继续执行
var num = 0;
for(var i=1; i<10; i++) {
if(i % 5 == 0) {
break;
}
num++;
}
alert(num);//4
var num = 0;
for(var i=1; i<10; i++) {
if(i % 5 == 0) {
continue;
}
num++;
}
alert(num);//8
17、width语句
with语句的目的是为了建华多次编写同一个对象的工作

