前段时间在廖雪峰的网站学习了JS,现在对JS的学习过程做一个再归纳总结

  • 如果有朋友看到了这篇博客,有什么其他牛逼的前端大神或者学习网站的也请快快推荐给我!!感激不尽!

    JS数据类型

  1. Number类型 在JS中无论是整数还是浮点数,统一用Number表示。有两种特殊的形式如下,
    1.1 NaN(Not a Number),无法表示计算结果时可以用NaN来表示
    1.2 Infinity 表示无限大,数值超过了Number所能表示的最大值时,用Infinity来表示
  2. String字符串类型
  3. Boolean布尔值 ||或运算 &&与运算 !是非运算:!ture;//结果为false ===比较运算符,结果不同返回false
    JS当中有两个比较运算符==和===,尽量使用===进行比较。使用==进行比较时,会自动转换两边的数据类型在进行比较,容易产生错误,而===只 有当两边数据类型相同时才会进行比较。ps:在NaN的比较中,NaN与其他值包括他自己都不相等,只有用isNaN(NaN);//true来判断
    在比较浮点数的时候,只能通过计算他们之差的绝对值,判断是否小于某一个阈值。
  4. Nullundefined
    4.1 Null表示一个空的值,他与0和“ ”不同,0表示数值为0,“ ”表示空的字符串,Null表示‘空’
    4.2 undefined表示值未定义,仅仅在判断函数参数是否传递的情况下有用。
    对于Null和undefined在后面的学习中会做进一步的一个补充。
  5. Array数组
    JS数组可以包括任意数据类型,var array = [1,‘123’,null,true]; 也可以用Array函数去定义数组:new Array[1,2,3];
  6. 对象
    JavaScript的对象是一组由键-值组成的无序集合,对象中的键全都是String类型,值可以是任意数据类型,通过对象.键来获取键的值
  7. 变量
    使用‘=’对变量进行赋值,且因为JS为动态语言,所以一个变量可以反复赋值,且可以是不同的数据类型,但要注意只能用var声明一次
  8. strict模式
    为了防止因为变量声明而产生的问题,可以在JS代码开头写入'use strict';开启strict模式。

字符串及其相关方法

  1. toUpperCase() 把字符串全部都变为大写

    var s = 'hello';
    s.toUpperCase();//返回HELLO

  2. toLowerCase() 把字符串变为小写
  3. indexOf() 会搜索指定字符串出现的位置,返回第一个字符的下标,若干没有找到则返回-1

    var s = 'hello, world';
    s.indexOf('world');//返回7

  4. 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]+'同学!');