前段时间在廖雪峰的网站学习了JS,现在对JS的学习过程做一个再归纳总结
- 如果有朋友看到了这篇博客,有什么其他牛逼的前端大神或者学习网站的也请快快推荐给我!!感激不尽!
JS数据类型
- Number类型 在JS中无论是整数还是浮点数,统一用Number表示。有两种特殊的形式如下,
1.1 NaN(Not a Number),无法表示计算结果时可以用NaN来表示
1.2 Infinity 表示无限大,数值超过了Number所能表示的最大值时,用Infinity来表示 - String字符串类型
- Boolean布尔值 ||或运算 &&与运算 !是非运算:!ture;//结果为false ===比较运算符,结果不同返回false
JS当中有两个比较运算符==和===,尽量使用===进行比较。使用==进行比较时,会自动转换两边的数据类型在进行比较,容易产生错误,而===只 有当两边数据类型相同时才会进行比较。ps:在NaN的比较中,NaN与其他值包括他自己都不相等,只有用isNaN(NaN);//true来判断
在比较浮点数的时候,只能通过计算他们之差的绝对值,判断是否小于某一个阈值。 - Null和undefined
4.1 Null表示一个空的值,他与0和“ ”不同,0表示数值为0,“ ”表示空的字符串,Null表示‘空’
4.2 undefined表示值未定义,仅仅在判断函数参数是否传递的情况下有用。
对于Null和undefined在后面的学习中会做进一步的一个补充。 - Array数组
JS数组可以包括任意数据类型,var array = [1,‘123’,null,true]; 也可以用Array函数去定义数组:new Array[1,2,3]; - 对象
JavaScript的对象是一组由键-值组成的无序集合,对象中的键全都是String类型,值可以是任意数据类型,通过对象.键来获取键的值 - 变量
使用‘=’对变量进行赋值,且因为JS为动态语言,所以一个变量可以反复赋值,且可以是不同的数据类型,但要注意只能用var声明一次 - strict模式
为了防止因为变量声明而产生的问题,可以在JS代码开头写入'use strict';开启strict模式。
字符串及其相关方法
- toUpperCase() 把字符串全部都变为大写
var s = 'hello';
s.toUpperCase();//返回HELLO - toLowerCase() 把字符串变为小写
- indexOf() 会搜索指定字符串出现的位置,返回第一个字符的下标,若干没有找到则返回-1
var s = 'hello, world';
s.indexOf('world');//返回7 - substring() 返回指定索引区间的子串
var s = 'hello world';
s.substring(0,5);//从0开始不包括5,返回hello
s.substring(7);//从7开始,一直到最后,返回world
数组及其使用方法
*Array长度属性length,如果直接对length属性进行复制,则会改变数组的大小。若增大数组则多出来的为undefined,若是缩短数组则长度以外的元素丢失。
var arr = [1, 2, 3];
arr.length; // 3
arr.length = 6;
arr; // arr变为[1, 2, 3, undefined, undefined, undefined]
arr.length = 2;
arr; // arr变为[1, 2]
- 通过索引赋值时,如果索引超过了范围,同样会改变数组。
var arr = [1, 2, 3];
arr[5] = 'x';
arr; // arr变为[1, 2, 3, undefined, undefined, 'x']
不过在开发过程中还是需要尽量避免直接改变数组大小,以免因为数组大小不明确而产生下表越界的情况
数组使用方法
1.indexOf()返回查找元素的下标,若没有找到相关元素则返回-1
var arr = [10, 20, '30', 'xyz'];
arr.indexOf(10); // 元素10的索引为0
arr.indexOf(30); // 元素30没有找到,返回-1
arr.indexOf('30'); // 元素'30'的索引为2
2.slice() 对应string当中的substring,截取Array的部分元素返回一个新的Array。如不给slice()传递参数则会复制整一个数组(截取所有的元素)
var arr = [1,2,3,4];
arr.slice(0,3);//[1,2,3]不包括下标3
arr.slice(2);//从下标2开始到结尾,[3,4]
3.push()向Array末尾添加若干元素
var array[1,2,3];
array.push('A','B');//['1','2','3','A','B'];
4.pop()把Array最后一个元素删掉
arr.pop()
arr;//['1','2','3','A']
5.unshift 向Array的头部添加元素
6.shift() 将Array头部的第一个元素删掉
var arr = [1, 2];
arr.unshift('A', 'B'); // 返回Array新的长度: 4
arr; // ['A', 'B', 1, 2]
arr.shift(); // 'A'
arr; // ['B', 1, 2]
arr.shift(); arr.shift(); arr.shift(); // 连续shift 3次
arr; // []
arr.shift(); // 空数组继续shift不会报错,而是返回undefined
arr; // []
7.sort() 排序
var arr = ['c','a','b'];
arr.sort();
arr;//['a','b','c']
8.reverse() 将Array元素反转
var arr = ['one', 'two', 'three'];
arr.reverse();
arr; // ['three', 'two', 'one']
9.splice() 从指定的索引开始删除若干元素然后再添加新的元素
var arr[1,2,3,4,5];
arr.splice(2,2,'A','B');//从第二个位置开始删除3个元素,并插入A,B
arr;//[1,2,'A','B',5];
arr.splice(2,0,1,2);//在第二个位置上删除0个元素,并且插入1,2
arr;//[1,2,1,2,'A','B',5]
10.concat()将array和另一个array相连返回个新的array
var add = [1,2];
var add1 = add.concat([3,4]);
add1;//[1,2,3,4]
//concat方法接收任意个元素和array并且把array拆开
add.concat(5,[6,7]);//[1,2,5,6,7]
11.join()把array每个字符都用特定的字符串连接起来并返回,如果array中元素不是字符串则自动转换成字符串相连
var arr = ['a','b',1,2,3];
arr.join('+');//a+b+1+2+3
12.多维数组索引
var arr = [[1,2,3],[400,500,600],'+'];
//若需要取500值,则
x = arr[1][1];//x = 500
小练习:请排序后显示欢迎xxx,xxx,xxx和xxx同学!
var arr = ['小明','小军','小红','小刚'];
cnosole.log('欢迎'+arr.sort().splice(0,3).join(',')+'和'+arr[3]+'同学!');