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)一次性创建多个对象:工厂模式。把创建对象的代码封装在一个函数中: 创建并实例化一个对象: 再创建并实例化一个对象: 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 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. 冒泡排序: |
|