1 数据类型
JavaScript 有六种数据类型。主要的类型有number、string、object 以及 Boolean 类型,其他两种类型为 null 和 undefined。
1.1 number类型
(1)支持十进制和十六进制。八进制部分支持,最好不要用。
(2)取值范围(-253~253)
(3)正0和负0 0 === -0(true)
(4)零可以为被除数
1/0 正无穷大
1/-0 负无穷大
(5)使用数字时,尽量不要使用小数,存在精度问题
示例:
var x = 0.3-0.2; --> 0.09999999999999998
var y = 0.2-0.1; --> 0.1
x != y
(3)Math对象的常用方法。
把数四舍五入为最接近的整数。
| |
对数进行下舍入。 Math.floor(0.60) 0 Math.floor(5.1) 5 Math.floor(-5.1) -6 Math.floor(-5.9) -6 | |
对数进行上舍入。 | |
返回数的绝对值。 | |
返回 x 和 y 中的最高值。 | |
返回 x 和 y 中的最低值。 | |
返回 0 ~ 1 之间的随机数。 | |
返回数的平方根。 |
1.2 string类型
(1)需要注意的是,JavaScript 的字符串是不可变的(immutable),String 类定义的方法都不能改变字符串的内容。像 String.toUpperCase() 这样的方法,返回的是全新的字符串,而不是修改原始字符串。
(2)转义字符”\”.
(3)length属性
var ss ="abcde"; ss.length = 5
(4)常用方法:
返回在指定位置的字符。 ss.charAt(2) -->c | |
substr(start,length) |
start 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。 length 可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。 var str="Hello world!" str.substr(3) --> lo world! str.substr(3,7) --> lo worl |
substring(start,stop) | Start 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。 stop可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。 如果省略该参数,那么返回的子串会一直到字符串的结尾。 【注意】与 slice() 和 substr() 方法不同的是,substring() 不接受负的参数。 |
slice(start,end) | 提取字符串的片断,并在新的字符串中返回被提取的部分。 start要抽取的片断的起始下标。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。 end紧接着要抽取的片段的结尾的下标。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。 var str="Hello happy world!" str.slice(6) --> happy world! str.slice(6,11) --> happy str.slice(-3) --> ld! str.slice(-10,-2) --> ppy worl 【注意】String 对象的方法 slice()、substring() 和 substr() (不建议使用)都可返回字符串的指定部分。slice() 比 substring() 要灵活一些,因为它允许使用负数作为参数。slice() 与 substr() 有所不同,因为它用两个字符的位置来指定子串,而 substr() 则用字符位置和长度来指定子串。 |
返回某个指定的字符串值在字符串中首次出现的位置。 var str="Hello world!" str.indexOf("World") --> -1 str.indexOf("world") --> 6 | |
替换与正则表达式匹配的子串。 var str="Visit Microsoft!"
Visit W3School | |
|
|
1.3 boolean类型
(1) 此类型有两个取值,true和false
(2) 任意的JavaScript的值都可以转换成布尔值
如:undefined、null、0、-0、NaN、””(空字符串),都被转换成false。
1.4 object类型
1.5 null
它表示一个特殊值,常用来描述“空值”。typeof(null)返回object,说明null认为是一个特殊的对象值。
包含 null 的变量包含“无值”或“无对象”。换句话说,该变量没有保存有效的数、字符串、boolean、数组或对象。可以通过给一个变量赋 null 值来清除变量的内容。
1.6 undefined
表示变量的一种取值,表明变量没有初始化,如果要查询对象属性或者数组元素的值时返回undefined,说明这个属性或元素不存在。typeof(undefined)返回undefined。
【注意】:null和undefined是不同的,但是他们都表示“值的空缺”,二者常常可以互换。二者都不包含任何的属性和方法。
2 类型转换
2.1 相等性转换
null ==undefined;
"0" ==0;
0 == false;
"0" ==false;
都返回true。
2.2 转换成字符串
使用toString()或者与””(空字符串)相加
示例:var num = 5.8;
num.toString() --> “5.8”
num+”” -->”5.8”
2.3 转换成数字
2.3.1 parseInt()
在判断字符串是否是数字值前,parseInt() 和 parseFloat() 都会仔细分析该字符串。
parseInt() 方法首先查看位置 0 处的字符,判断它是否是个有效数字;如果不是,该方法将返回 NaN,不再继续执行其他操作。但如果该字符是有效数字,该方法将查看位置 1 处的字符,进行同样的测试。这一过程将持续到发现非有效数字的字符为止,此时 parseInt() 将把该字符之前的字符串转换成数字。
例如:
parseInt(“12345red”) --> 12345
parseInt(“123.33”) --> 123 (舍去小数部分)
parseInt() 方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。
示例:
parseInt("10"); //返回 10
parseInt("19",10); //返回 19 (10+9)
parseInt("11",2); //返回 3 (2+1)
parseInt("17",8); //返回 15 (8+7)
parseInt("1f",16); //返回 31 (16+15)
parseInt("010"); //未定:返回 10 或 8
2.3.2 parseFloat()
parseFloat() 方法与 parseInt() 方法的处理方式相似,从位置 0 开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字符之前的字符串转换成整数。
不过,对于这个方法来说,第一个出现的小数点是有效字符。如果有两个小数点,第二个小数点将被看作无效的。parseFloat() 会把这个小数点之前的字符转换成数字。
示例:parseFloat(“11.22.33”) --> 11.22
使用parseFloat() 方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,而不是用八进制或十六进制。该方法会忽略前导 0,所以八进制数 0102 将被解析为 102。对于十六进制数 0xA,该方法将返回 NaN,因为在浮点数中,x 不是有效字符。
2.4 显示类型转换
Number(3) --> 3
String(false) --> “false”
Boolean(“dw”) --> true
3 包装对象
3.1 Boolean 对象
3.2 Number 对象
3.3 String 对象
4 数组
4.1 创建
Var a = []; 等价于 var a = new Array()
Var a = [2,3,true,”a”,]; 可以类型不同,也结尾可以有逗号
Var a = new Array(10);
4.2 数组的读写
a[0]=1;
4.3 数组元素的添加、删除
push() pop() shift() unshift() delete a[2]
向数组的末尾添加一个或更多元素,并返回新的长度。 | |
删除并返回数组的最后一个元素[LQ1] | |
向数组的开头添加一个或更多元素,并返回新的长度。 | |
删除并返回数组的第一个元素[LQ2] | |
delete | 删除 例:delete a[2] |
4.4 数组的遍历
for() for/in forEach()
var data = [1,2,3,4,5,6,7,8,9];
var sum = 0;
(1) for循环
for(vari=0; i<data.length; i++)
{
sum += data[i];
}
(2) for/in
for(var iin data)
{
sum2 += data[i];
}
(3) forEach
data.forEach(function(value){
sum += value;
});
4.5 数组其他常用方法
(1) 映射数组
var data2 = data.map(function(x){return x*x});
-->[1,4, 9, 16, 25, 36, 49, 64, 81]
(2) 过滤数组
var smallvalues = data.filter(function(x){return x<5});
-->[1, 2, 3, 4]
(3) 数组是否包含某个元素
indexOf()第一次出现的位置
lastIndexOf()最后一次出现的位置
示例:
var a = ["s","dwss","ff",”s”];
a.indexOf("ff") -- > 2
a.indexOf("f") -- > -1(不存在时返回-1)
a.lastIndexOf("ff") -- > 3
(4) 指定的分隔符进行分隔数组 join()
var arr = [“aa”,”bb”,”cc”];
arr.join(“_”); --> aa_bb_cc
(5) 排序 sort()
Var arr = [“George”,”John”,”Thomas”,”James”,”Adrew”,”Martin”];
Arr.sort(); --> Adrew,George,James,John,Martin,Thomas
(6) 连接数组 concat()
Var a = [“a1”,”a2”];
Var b = [“b”];
Var c = [“c”];
a.concat(b)--> a1,a2,b
a.concat(b,c)--> a1,a2,b,c
5 Date
5.1 创建、设置
vartoday = new Date(); -->当前时间
var d1 = new Date();
d1.setFullYear(2013,2,6); -->2013年3月6日
5.2 获取时间
var year = today.getFullYear(); //年
var month = today.getMonth() + 1; //月(0~11)
var day=today.getDate(); //日
var xingqi = today.getDay(); //星期几
var h=today.getHours() //时
var m=today.getMinutes() //分
var s=today.getSeconds() //秒
5.3 比较日期大小
两个日期相减,返回的是两个日期间的毫秒数。
示例:
var d1 = new Date();
d1.setFullYear(2013,2,6);
var d2= new Date();
d2.etFullYear(2013,2,5);
d1 – d2 = 86400000 (60*60*24*1000)
5.4 实现日期加几天addDate ()
var x=new Date();
x.setFullYear(2013,2,6);
function addDate(dd,dadd){
//vara = new Date(dd)
a= dd.valueOf()
a= a + dadd * 24 * 60 * 60 * 1000
a= new Date(a)
returna;
}
alert(addDate(x, 2)) –> Fri Mar 08 2013 10:31:53 GMT+0800