知识点总结

73 阅读6分钟

函数:

1. 创建函数的两种方式:

  声明方式:function 函数名(形参){操作;};

  直接量方法:var 函数名=function(形参){操作;};

 

2. 声明提前:在程序执行之前,会把声明函数整体(重)和var定义变量(轻) 提前到当前作用域的最前面;多出现在笔试题中。****


3. 作用域:全局作用域和函数作用域:

使用规则:优先使用局部作用域,再使用全局作用域;

局部可以使用全局的,全局不能使用局部的(解决方法:使用return返回值)。

 

4. 重载:相同的函数名,根据传入的实参个数的不同,自动选择对应的函数去执行;

   目的:减轻我们程序员的压力,记住一个方法就可以执行很多的操作

解决:在【函数内部】自带一个arguments的对象,不需要我们去创建的

作用:哪怕没有写任何形参,它也可以接受住所有的实参,

固定套路:

1、通过下标去获取传入的某一个实参:arguments[i] - i下标是从0开始的!

2、通过length去获取到到底传入了几个实参:arguments.length;

 

查找元素和操作元素

1. 查找元素:

    (1)通过HTML的特点查找

通过ID名查找:(不用;因为ID具有唯一性;ID名重复时,只会找第一个)

语法:document.getElementById(“ID名”)

 

通过标签名查找:找到的是页面所有的该标签组成的数组。

语法:document.getElementsByTagName(“标签名”)

 

通过class查找:找到的是页面所有的该class名组成的数组。

语法:document.getElementsByClassName(“class名”)

 

(2)通过关系查找元素:前提:先找到一个元素;(不影响其它元素)

      上一个兄弟:elem.previousElementSibling

      下一个兄弟:elem.nextElementSibling

      父元素:elem.parentNode

      子元素:elem.children 

      第一个子元素:elem.firstElementChild

      最后一个子元素:elem.lastElementChild

     

 

2. 操作元素:前提:先找到元素

   通过内容操作元素:

      获取:elem.innerHTML  (可以识别标签)

      设置:elem.innerHTML=”新值”

 

      获取:elem.innerText (不能识别标签,只认纯文本)

      设置:elem.innerText=”新值”

 

获取:input.value (只有input可以使用)

      设置:input.value=”新值”

 

   通过属性操作元素:

      获取:elem.getAttribute(“属性”)  可以操作自定义属性

      设置:elem=getAttribute(“属性”,”属性值”)

 

      获取:elem.属性名  (不能操作自定义属性,class要写为classname)

      设置:elem.属性名=”属性值”

 

   通过样式(内联样式)操作元素:(属性间有-,把-去掉后面首字母大写)

      获取:elem.style.css属性

      设置:elem.style.css属性=”属性值”

    

       

数组:数组和数组的API

1. 数组

  (1) 创建数组:2种

        直接量方式: var arr=[];

        构造函数方式: var arr= new Array()

   (2) 获取数组中值:数组名[下标]  (下标从0开始到arr.length-1结束)  

  1. 数组的API

 

  拼接数组:arr.join(“自定义连接符”)   (可识别标签)

  重点:<开始标签>+arr.join(“<结束标签></开始标签>”)+<结束标签>

   

  添加元素:arr.concat(值....)    (支持数组,它会把数组打乱,在加入

  截取子数组:arr.slice(开始下标,结束下标) 含头不含尾

   

注意:以上都不会修改原数组,会形成新数组。

 

  删除替换添加:arr.splice(开始下标,个数,新值)

  注意:添加元素时,会把它添加到开始下标之前。

 

  数组排序:arr.sort() 默认会把数组元素按照字符串的ASCII码大小排序

  升序排序:arr.sort(function(a,b){return a-b})//a代表后一个元素 b代表前一个元素

  降序排序:arr.sort(function(a,b){return b-a})//a代表后一个元素 b代表前一个元素注意: 升序和降序只能对数字进行排序

 

  栈和队列

     栈:是数组,但是只能从一边进出;

     开头进:arr.unshift()

     开头出:arr.shift(()//只能删除一个元素

 

     结尾进:arr.push()

     结尾出:arr.pop()//只能删除一个元素

 

队列:是数组,但是从一边进,从另外一边出;

开头进:arr.unshift()

结尾出;arr.pop()//只能删除一个元素

 

开头出:arr.shift(()//只能删除一个元素

结尾进:arr.push()

 

  反转数组:arr.reverse()

  

 

  ES5新增数组API:

      判断:every(相当为逻辑运算符&&)和some(相当为逻辑运算符||)

      语法:arr.every/some(function(a,b,c){ return 判断条件;

})   

       // a代表数组的值;b代表数组的小标;c代表数组

 

      遍历:forEash()【直接修改原数组】和map()【得到新数组】

 

      语法:arr.forEach(function(a,b,c){

操作;

})

      // a代表数组的值;b代表数组的小标;c代表数组

 

      语法:new.arr=arr.map(function(a,b,c){

操作;

})

// a代表数组的值;b代表数组的小标;c代表数组

 

      过滤和汇总:filter()和reduce

      过滤:选出自己需要的部分。(会形成新书数组)

      语法:var subarr=arr.filter(function(a,b,c){

return 判断条件;

})

       // a代表数组的值;b代表数组的小标;c代表数组

      

      汇总:把自己想要的数据汇总。结果需要用数组接住

      语法:var result=arr.reduce(function(sum,a,b,c){

return sum+a;

})

       //sum代表汇总的结果 a代表数组的值;b代表数组的小标;c代表数组

 

 

二维数组:在数组元素中还有数组。

创建:arr=[ [值1],[值2]];

访问:arr[行下标][列下标];

面试题:列下标越界:返回undefined

行下表越界:报错

 

字符串:字符和字符串的API

 字符串:多个字符组成的只读字符数组;(数组的基本属性:它也可以用:如:字符串长度:str.length;获取某个字符:str[下标])

 

字符串API

 转义字符:\

 作用:将与程序冲突的字符转为原文;\n换行;\t 大空格;\u输出unicode编码的字符

 

英文大小写转换:

   转大写:str.toUpperCase()

   转小写:str.toLowerCase()

 

获取指定位置的字符:str.charAt(下标)

 

获取指定位置字符的ASCII码:str.charCodeAt(下标)

 

将ASCII码转为字符:String.fromCharCode(ASCII码)

 

检索字符:搜索是否有自己想要的信息。

语法:str.indexOf("关键字",开始下标); 找到的返回值为第一个关键字符的下标;没找到的返回值为-1。

 

拼接字符:str.concat(新字符串,...)

 

截取子字符串:

str.slice(开始下标,结束下标);含头不含尾;

str.substring(开始下标,结束下标);含头不含尾;不支持负数;

str.substr(开始下标,个数)

 

替换字符:后期与正则搭配使用;

语法:str.replace(固定关键字,新内容)

 

分割字符串:

作用:将字符串切割为数组

语法:str.split("自定义切割符")

注意:如果自定义切割符为””;会把每个字符切散

 

 

去掉空白字符:只能去掉开头和结尾的空白;

语法:tr.trim()/str.trimStart()/str.trimEnd()

 

引用/对象类型:11个

*String Number Boolean -> 包装类型

*Array *Function Date(日期) Math(数学) *RegExp(正则:验证)

Error(错误)

*Object(面向对象)

Global(全局对象) - 只不过在浏览器端被window对象给代替了,自然保存着全局变量和全局函数,只不过window可以省略不写,有一天我们回去学习node.js这个后端语言,而在node.js中全局对象就叫做global