1,,使用defer 属性可以让脚本在文档完全呈现之后再执行。延迟脚本总是按照指定它们的顺序执行。
使用 async 属性可以表示当前脚本不必等待其他脚本,也不必阻塞文档呈现。不能保证异步脚 本按照它们在页面中出现的顺序执行
2,typeof检测数据类型:
var message=2;
alert(typeof message) //number;
检测结果有:
"undefined"——如果这个值未定义;
"boolean"——如果这个值是布尔值;
"string"——如果这个值是字符串;
"number"——如果这个值是数值;
"object"——如果这个值是对象或 null;
"function"——如果这个值是函数。
3,基本数据类型:Undefined、Null、Boolean、Number ,String,Object
4,Undefined 类型只有一个值,即特殊的 undefined。
对未初始化和未声明的变量执行 typeof 操作符都返回undefined 值;
Null 类型是第二个只有一个值的数据类型,这个特殊的值是 null,。从逻辑角度来看,null 值表 示一个空对象指针,而这也正是使用 typeof 操作符检测 null 值时会返回"object"的原因
如果定义的变量准备在将来用于保存对象,那么好将该变量初始化为 null 而不是其他值,
undefined 值是派生自 null 值的,因此 它们的相等性测试要返回 true:
alert(null == undefined); //true
5,。要将一个值转换为其对应的 Boolean 值,可以调用转型函数 Boolean(),如下例所示:
var message = "Hello world!"; var messageAsBoolean = Boolean(message);
数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 ""(空字符串)
Number 任何非零数字值(包括无穷大) 0 和NaN
Object 任何对象 null
Undefined n/a undefined
n/a(或 N/A),是 not applicable的缩写,意思是“不适用”。
6, isNaN()这个函数接受一个参数,该参数可以 是任何类型,而函数会帮我们确定这个参数是否“不是数值“。
7,把非数值转换为数值:Number()、parseInt()和 parseFloat()。转型函数 Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值
区别:number()中变量若是带有字母就不能够转换,但是parseInt()会忽略字符串前面的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符或者负号,parseInt() 就会返回 NaN。如 果第一个字符是数字字符,parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了 一个非数字字符,包括小数点。而parseFloat()只能解析十进制,但是它比parseInt()好的是,它可以解析浮点数
eg:
number("0001") //1
number(true);//1
number("yes");.//NaN
parseInt("070", 8 );// 56 (意思将070以八进制看待.)。
parseInt("math011.52") ;//11
parseInt("070");//70
parseFloat("11.52") ;//11.52
8, Boolean(x) /转换成布尔
Number(x) //转换成数值
x. toString(2) 或者 x.string() 或者 x+" " //转换成字符
9,操作符
++和--操作符不仅适用于整数,还可以用于字符串、布尔值、浮 点数值和对象:
1,一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减 1 的操作
2,一个不包含有效数字字符的字符串时,将变量的值设置为 NaN
3,对于布尔值 false 时,先将其转换为 0再执行加减 1的操作
4,对于对象,先调用对象的 valueOf()方法,以取得一个可供操作的值。然后对该值应用前述规则。
如果结果是 NaN,则在调用 toString()方法后再应用前述规 则。
var o = {
valueOf: function() {
return -1;
}};
o--; // 值变成数值-2
10,valueOf():
1,valueOf() 方法可返回 Boolean 对象的原始值
var boo = new Boolean(false) document.write(boo.valueOf()
) //false
2,valueOf() 方法返回 Array 对象的原始值。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var v=fruits.valueOf(); // Banana,Orange,Apple,Mango
3,valueOf()方法返回object对象自定义的valueOf()函数值
var o = { valueOf: function() { return -1; } };
o--; // 值变成数值-2
4,valueOf()函数的作用是返回该object自身。与toString()一样,定义类时可以实现新的valueOf()方法,从而返回需要的结果
总结:valueOf偏向于运算,toString偏向于显示。
在数值运算里,会优先调用valueOf(),如a + b;
在字符串运算里,会优先调用toString(),如alert(c)。
11,label语句:
在嵌套循环中熟练应用 break, continue 与 Label 可以精确的返回到你想要的程序的位置。
Label 语句,按书本上说的语法是:
Label: statement
如: begin: for (var i = 0; i < 10 ; i++ ){
alert(i);
}
(未添加 Label):
var num = 0;
for (var i = 0 ; i < 10 ; i++){
for (var j = 0 ; j < 10 ; j++){
if( i == 5 && j == 5 ){
break;
}
num++;
}
}
alert(num); // 循环在 i 为5,j 为5的时候跳出 j循环,但会继续执行 i 循环,输出 95
对比使用了 Label 之后的程序:(添加 Label 后)
var num = 0;
outPoint:
for (var i = 0 ; i < 10 ; i++){
for (var j = 0 ; j < 10 ; j++){
if( i == 5 && j == 5 ){
break outPoint;
}
num++;
}
}
alert(num); // 循环在 i 为5,j 为5的时候跳出双循环,返回到outPoint层继续执行,输出 55
12,with语句:
var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
如果使用 with 语句,可以把上面的代码改写成如下所示:
with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = href; }