JavaScript 基础

 1. 数据类型:

  js中的原始数据类型:number、string、boolean、undefined、null、object

  原始数据类型又分为:

    基本类型(简单类型),值类型:number、string、boolean

    复杂类型(引用类型):object

    空类型:undefined、null

  注意:值类型之间传递,传递的是值,值在栈上;引用类型之间的传递,传递的是地址(引用),对象在堆,地址在栈。

2. 获取变量的数据类型:typeof  typeof 变量名 / typeof(变量名)

3. isNaN():验证这个变量或值是不是 不是一个数字。NaN:Not a Number(不是一个数字)

注意:不要用NaN 验证 isNaN;不要用小数验证小数;js中所有数字都是number类型的。

4. 类型装换

    4.1 其他类型转换成数字类型:parseInt();    parseFloat();   Number();

    4.2 其他类型转换字符串类型:toString();    String();

    4.3 其他类型转换成布尔类型:boolean();  //空字符串、null、undefined转换之后都是false(即没有意义的,转换之后都是false)

5. 循环:

  while循环:先判断,再执行,循环体可能一次都不会被执行

  do-while循环:先执行一次循环体,后判断。至少执行一次循环体

  for循环:先执行一次表达式1,然后判断表达式2

6. 数组:

  (1)创建数组:

            1)通过构造函数创建数组

       var arr = new Array();  

       var arr = new Array(10);  //长度为10的数组,但是数据类型都为 undefined

       var arr = new Array(1,2,3,4,5);

     2)通过字面量的方式创建数组

       var arr = [];

       var arr = [1, 2, 3, 4];

  (2)小案例:

      1)去掉数组中重复的0:

     

       2)反转数组:

     

6. arguments:对象,伪数组,当不知道传入的参数的具体个数时,可以使用。

7. 函数:匿名函数(函数表达式)、命名函数(函数声明)、函数的自调用(没有名字,声明的同时,直接调用)。

  注意:函数声明,函数名相同,则前面的同名函数将会被覆盖;函数表达式,变量名相同,不会被覆盖。

  作为参数使用的函数,叫回调函数。(注意:函数名代表代码,若有括号,则是结果。)

  函数可以作为参数使用,也可以作为返回值使用。

8. 作用域链:你使用的变量应该在当前作用域范围内查找,找不到,则往上一级查找,以此类推,直到0级作用域也找不到,则会报错,说明没有定义。

  

9. 预解析:把变量的声明和函数的声明提前到了该作用域的嘴上面,但是值没有。

10. 创建对象的三种方式:

  (1)调用系统构造函数来创建对象:

  var obj = new Object();

  obj.name = 'smile';    //添加属性

  obj.play = function() { console.log("I like to play football");}   //添加方法

  (2)自定义构造函数来创建对象:

    先自定义一个构造函数:

    

    再创建对象——实例化对象,并初始化:

    

    注意:函数和构造函数的区别:函数名首字母是小写的,是用来调用的;构造函数的函数名首字母是大写的,是用来创建对象的。

    自定义构造函数创建对象做了四件事:

    1)在内存中开辟(申请一块空闲的空间)空间,存储创建的新的对象。

    2)把this设置为当前的对象
    3)设置对象的属性和方法的值
    4)把this这个对象返回

   (3)字面量的方式创建对象:

     

  (4)一次性创建多个对象:工厂模式。把创建对象的代码封装在一个函数中:

  

  创建并实例化一个对象:

  

  再创建并实例化一个对象:

  

11. 设置和获取属性的方法:

  1)点语法:obj.age = 22;   obj.play()

  2)方括号:obj["age"] = 22;    obj["play"]();

12. JSON 格式的数据:

  JSON格式的数据一般都是成对的,是键值对;JSON也是一个对象,一般json格式的数据无论是键还是值都是用双引号括起来的。

  

13. 遍历对象:

  不能用 for 循环,因为对象是无序的,可以通过key-in循环来遍历(key 是变量名,可更改,json是对象名,也可以是其他对象)

  

14. 实例对象和静态对象:

  实例对象:通过构造函数创建出来,实例化的对象。

  静态对象:不需要创建,直接就是一个对象,方法(静态方法),直接通过这个对象的名字调用。

  实例方法必须通过实例对象调用;静态方法必须通过大写的对象调用。

15. Math对象

  Math.PI-----常数π;Math.E-----常数的底数;Math.abs(值)-----绝对值;Math.ceil(值)-----向上取整;Math.floor(值)-----向下取整;Math.pow(值1,值2)-----值1的值2次幂;Math.sqrt(值)-----值的平方根(开平方的结果);Math.random()------产生伪随机数(0-1之间的);Math.max(10, 2, 3, 4, 17, 19);从一组数据中找 最大值;Math.min(10, 2, 3, 4, 17, 19);从一组数据中找 最小值;parseInt(Math.random()*5)+1; 产生1-5之间的随机整数。

16. Date 对象

  不是静态的,需要先实例化。var dt = new Date();

  

  

17. 字符串对象----String 对象

  string----->字符串类型-----基本类型

  String----->字符串类型-----引用类型

  字符串特性:不可变性。可以将字符串看成是一个字符数组,可以通过for循环进行遍历。

  字符串常用的属性和方法:

  .length //字符串的长度

  .charAt(index) //返回值是指定索引位置的字符,超出.length-1的索引,会返回空字符

  .fromCharCode(num1,...,numN) //把数字转换成ASCLL码

  .concat()  //该方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回 

  .indexOf(searchValue[, fromIndex]) //返回调用String对象中第一次出现的指定值的索引,开始在f.romindex进行搜索,如果未找到该值,则返回-1
  .lastIndexOf() //从后往前找
  .replace("原来的字符串","新的字符串") //用新的字符串替换原来的字符串
  .slice(start, end) //返回提取后的字符串
  .split("字符串",切割后留下的个数) //切割字符串
  .substr() //返回一个字符串从指定位置开始到指定字符数的字符
  .substring(开始的索引,结束的索引),返回截取后的字符串,不包含结束索引的字符
  .toLocaleLowerCase(); //转换成小写
  .toLowerCase(); //转换成小写
  .toLocaleUpperCase(); //转换成大写
  .toUpperCase(); //转换成大写
  .trim() //切掉字符串两端的空格

18. Array对象

  判断变量是不是数组:instanceof 、isArray()

  

  (1)拼接一个或多个数组;concat()

  (2)测试数组的所有元素是否都通过了指定函数的测试;fevery()

  

  (3).将符合条件的数组值组合成一个新的数组输出返回;filter()

  

  (4)追加元素;

    push()  追加一个元素到数组的末尾,返回值为插入后数组的长度。

    unshift()   追加一个元素到数组的开始,返回值为插入后数组的长度。

  (5)删除元素:

    pop()  删除数组的最后一个元素,返回值为删除的这个元素

    shift()  删除数组的第一个元素,返回值为删除的这个元素

  (6)遍历数组:for循环 或者 forEach()

    

  (7)找元素的索引:indexOf(),有则返回索引,没有则返回1。

  (8)将数组中所有元素放到一个字符串中。join(分隔符) 

   

  (9)map():数组中的每一个元素都要执行这个函数,把执行后的结果放在一个新的数组中。

  

  (10)排序。sort() 但是不稳定,应该加上固定写法,使其稳定。

  

  (11)截取:slice(开始索引,结束索引)  注意:截取后的新数组不包含结束索引。

  (12)删除、插入、替换元素; splice(开始的索引,要删除的个数,替换的元素)。

  

19. 基本包装类型:

  普通变量不能直接调用属性或者方法;对象可以直接调用属性和方法。

  基本包装类型:本身是基本类型,但是在执行代码的过程中,如果这种类型的变量调用了属性或者方法,那么这种类型就不再是基本类型了,而是基本包装类型,这个变量也不是普通的变量了,而是基本包装类型对象

  string boolean number  既是基本类型,也可能是基本包装类型

  

20. 冒泡排序:

  

posted @ 2019-07-13 22:43  槿-_-  阅读(383)  评论(0编辑  收藏  举报