首先讲讲关于js文件放置的问题,如果把<script>放在head标签处,浏览器会先加载完该处的所有不使用defer属性的js文件再呈现页面的内容(浏览器在遇到body标签时才呈现内容),如果需要加载很多js文件的话,在呈现页面时会出现明显的延迟,延迟期间浏览器窗口将是一片空白。为了解决这一问题可以在最后才引入js文件,body标签结束之前。
JavaScript的核心实现了ECAMScript定义的标准,ECAMScript定义了5种简单的数据类型:Undefined、Null、Boolean、String、Number,还有一种复杂数据类型Object。可用typeof操作符判断数据类型。
1、Undefined类型:
Undefined只有一个值,undefined,当使用var声明变量但未对其进行初始化时默认会给该变量初始化,这个值就是undefined。
2、Null是第二种只有一个特殊值得数据类型null。
3、Boolean类型:关于boolean类型需要注意以下这些类型转换成boolean类型时是true还是false。
数据类型 转换为true的值 转化为false的值
Boolean true false
String 非空字符串 ""(空字符串)
Number 任何非零数值 0和NaN(Not a Number)
Object 任何非空对象 Null
Undefined undefined
4、数值类型:
4.1 关于浮点数值的计算,因为是基于IEEE754,所以可能会存在误差。所以不能把两个浮点数相加等于某值用作if的条件表达式。
1 if(a + b == 0.3){
2 alert("hehe");
3 }
如果a、b分别等于0.1和0.2,则这个alert语句不会执行,因为这个a+b = 0.3000000000001......
4.2 isNaN():(Not a Number)只要是数字或者能够转换成数字都会返回false。
4.3 数值的转化,有三个方法Number()、parseInt()、parseFloat().
Number()较复杂不常用,在处理整数时常用的是parseInt()。parseInt方法在将字符串转换成数字时,会忽略掉字符串前的空格,直到找到第一个非空字符串,如果不是数字或者负号,则会返回NaN,如果第一个是数字字符,则会继续解析第二个字符,直到解析完所有数字字符或者碰到非数字字符停止。parseInt提供了一个类似java的重载方法(javascript没有重载),第二个参数传入需要转化的进制,就可以将数值转换成相应进制的值。
1 var num1 = parseInt("1234blue"); //1234
2 var num2 = parseInt("1234blue123"); //1234
3 var num3 = parseInt("a1234blue123"); //NaN
4 var num4 = parseInt(""); //NaN
5 var num5 = parseInt(22.5); //22
6 var num = parseInt("AF", 16);
parseFloat只解析十进制,没有提供解析成8进制等的类似java重载方法。
5、String类型
toString():转换成String类型的方法,数值、布尔值、对象、字符串都有toString方法,null和undefined没有
String(): 如果有toString方法则调用toString方法,没有,null 输出“null” undefined 输出“undefined”。
6、Object类型