函数:
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结束)
- 数组的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