标题自动数据类型转换:
typeof输入当前的类型
2、任何数据除了和字符串做相加运算外,与NaN做 算数运算的结果始终都是NaN,包括NaN本 身和NaN做运算结果也为NaN。字符串如果是纯数字字符串转成数字,否则转换成NaN
代码规范:
1、注意层级缩进tab =四个空格
2、; , 后面都跟一个空格 运算符 = + 前后都应该空空格。
3、每一条语句后面都必须添加;分号
parseInt 取整
parseFloat 取浮点数 将数据类型转换成number类型
Infinity无穷大
逻辑运算符
&&且 ||或 !
进制转换:
十进制转二进制 :除2取余的倒数
52——110100
122+1*24+12^5 => 52
十进制转八进制/十六进制
【方式】先将十进制数转成二进制,再将二进制数转为对应的八进制或十六进制
二进制转八进制
【方式】从右到左,每三位一组,不足三位的使用0补齐,将每一组数转成十进制。
转八 110 100=> 64
转十 4*80+6*81=52
二进制转十六进制
【方式】从右到左,每四位一组,不足四位的使用0补齐,将每一组数转成十进制。
转十六 0011 0100 => 34
转十 4*160+3*161=52
三大流程控制:
1.顺序结构
2.选择结构 if(判断条件){ 执行语句1 }else{ 执行语句2 }switch(表达式){ case 常亮1: 语句1; break; case 常亮2: 语句2; break; case 常亮3:
语句3; break; default: 如果上述语句都不成立,执行这里; break; } while循环 do…while循环
for循环
- while循环先判断表达式,然后去执行循环语句
- do…while先执行一次语句,在判断表达式
break
1.在swith语句中使流程跳出switch
2.在循环语句中跳出当前的循环 continue 只能在循环语句中使用,使本次循环结束,即跳过循环体中下面尚未执行的语句,接着进行下次时候执行的判断
无参函数的声明:
【格式】 function 函数名(){ 函数体 }
函数的调用:
函数名()
有参函数的封装:
function 函数名(形参。。){ 函数体 }
arguments
[注]在每一个函数内,都有个内置的数组, 是个变量,叫做arguments。arguments可以存储当前函数传入的所有参数,而且,是通过传参的顺序,进行排列的。
return 返回函数调用结果
全局作用域
局部作用域
如果全局作用域和局部作用域变量重名,采取就近原则
递归:
/* 计算1加到n的和,n=100*/
function sum(n){
if(n==1){
return;
}
return sum(n-1)+n;
}
alert(sum(100));
递归会使运行内存据增
可以通过document.getElementById找到符合条件的标签节点。
window.onload = function(){
//写在这里的代码在页面加载完成后执行
}
常用常量来创建数组
var arr = 【1, true, "hello"】
alert(arr);
数组遍历(和for循环的结合过程)
for(var i in arr){
document.write(arr[i] + "<br />")
}
Math.random() 可以随机0~1之间的任意的数
push() 【格式】数组.push(元素。。。) 功能:给数组末尾添加元素 参数:我们要添加的元素,参数个数随意 pop()
【格式】数组.pop(); 功能:移除数组末尾的最后一个元素shift() 【格式】数组.shift(); 功能:从数组的头部取下一个元素 unshift() 【格式】数组.unshift();
功能:从数组的头部插入一个元素 concat() 【格式】数组1.concat(数组2);
功能:将俩个数组合并成一个新数组,原数组不会改变 slice() 【格式】数组.slice(start,end);
功能:基于当前数组获取制定区域元素并创建一个新的数组。原数组不改变。 splice() 可以完成删除、插入、替换操作 参数1 截取开始的下标
参数2 截取的长度 参数3 在截取的开始下标位置,要插入的元素,插入的元素的个数随意 join() 【格式】数组.join(拼接符)
功能:使用拼接符将数组中元素拼接成字符串 reverse() 逆向排序 【格式】数组.reverse(); sort()
【格式】数组.sort(); 功能:将数组中的元素升序排序 【注】sort默认是按照字符串进行排序
【要求】一般需要自己去编写排序算法,系统提供的使用较少 数组 复合数据类型/引用数据类型
【注】所有的复合数据类型都不直接储存在我们的函数中,存储在堆段
【注】函数运行的内存空间是预先分配好的,一旦被分配好了内存空间,就不能在被改变了。 【注】在堆段,我们可以想要使用内存,就随时分配多少内存
冒泡排序 和 选择排序
concat() 【格式】字符串1.concat(字符串2) 返回值:拼接成的字符串(一般使用 + ) indexOf()
【格式】字符串.indexOf(子串,开始查找的位置)
返回值:如果在字符串中查找到了子串第一次出现的位置,返回子串出现的位置,否则没有查到到返回0。 lastIndexOf()
作用:查找字符串最后一次出现的位置 search(子串/正则) 参数可以是正则表达式 replace()
【格式】字符串.replace(匹配的字符串/正则表达式,替换成的新字符串)
返回值:替换完成以后生成的新字符串(相同的字符会替换第一个),如果要替换所有的制定字符串则需要正则表达式 substring()
【格式】字符串.substring(start,end); 作用:字符串提取,在指定的范围内,提取字符串,生成新的字符串
返回值:生成新的字符串。【注】不包括结束位置的。 split() 【格式】字符串.split(分隔符,生成数组的长度)
返回值:通过分隔符,分割成装有子串的数组
toLowerCase()//变为全小写
toUpperCase()//变为全大写
ECMA5
严格模式
通过“use strict”来使用
写在哪个作用域下,这个作用域下所有 的代码都遵从严格模式
【注】不要轻易在全局范围开头增加“use strict”;建议在作用域中使用
forEach()
【格式】数组.forEach(function(item,index,array){
item 当前遍历到的元素
index 当前遍历到的下标
array 当前数组
})
功能:遍历数组
map 映射
reduce 归并
filter 过滤
some 某些
every 跟some一样,但是要求每一项都符合,才返回true,有一项不符合就返回false
Math.round(***); //四舍五入
Math.random(); //随机0~1之间的数
Math.max(); //返回最大的数
Math.min(); //返回最小的数
Math.abs(); //返回绝对值
Math.ceil(); //向上取整
Math.floor(); //向下取整
Math.pow(x,y); //求x的y次方
Math.sqrt(); //开平方
Math.sin()/cos()/tan(); //正弦/余弦/正切
setInterval(函数,毫秒数);
setInterval(function(){
//我们想要去做的代码
},毫秒数);
功能:每隔所传参数的毫秒数,就调用一次所传参数的函数。
*clearInterval()*取消定时器
参数:定时器的ID
innerHTML 标签间的所有内容
如果在innerHTML包含标签,标签会被识别,并且会解析,呈现对应的效果
confirm();
【功能】弹出一个带有确定的取消的警告框
prompt( ,);
【功能】弹出一个带输入框的提示框
【参数】第一个参数:要在提示框上显示的内容。
第二个参数:输入框内默认的值。
【返回值】点击确定:返回值是输入的内容
点击取消:返回值是null
open();
1. 要加载的URL
2. 窗口的名称或者窗口的目标
3. 一串具有特殊意义的字符串
opener 打开当前窗口的父窗口的window对象
使用工厂法创建对象
构造函数的执行过程:
原型对象 (相当于一个公共区域)
使用in检查对象中是否含有某个属性的时候,如果对象中没有而原型中有,也会返回true
//console.loge(“name un mc”)
可以使用对象的hasOwmproperty()来检查对象自身中是否含有该属性
//console.log(mc.hasOwnProperty(“age”));
argument是一个类数组对象,也可以通过索引来操作数据,也可以获取长度
在调用函数时,我们所传递的实参都会在argument中保存
argument.length可以获取实参的长度
有一个属性 callee,获取当前正在指向的函数对象
/^a/ 匹配开头的a
/a&/
可以通过对象,样式名来获取样式
如果获取的样式没有设置,获取的是实际值,而不是默认值
该方法不支持ie8
通过定义函数的方法获取当前元素的样式
参数:
obj:要获取样式的元素
name 要获取的样式名
function getStyle(obj,name){
return getComputedStyle(obj,null)[name];//正常浏览器可以获取
return obj.currentStyle[name];//ie8可以获取
}
冒泡就是事件的传递,一层层向外传。
使用.cancekBubble = ture ; 来取消冒泡
事件的委派
-将事件统一绑定给元素共同的祖先元素
addEventListener()【可以为一个函数绑定多个事件,可以按顺序一次执行】【ie8及以下不支持】
- 参数
1. 事件的字符串,不要on
2. 回调函数,当事件触发时该函数会被调用
3. 是否在捕获阶段触发事件,需要一个布尔值
ie8绑定多个事件.attachEvent()【倒序执行】
.setCapture()
捕获接下来一次的所有点击事件。(流氓广告的来源)
JSON.parse()
-将字符串转为对象
JSON.stringify()
-将对象转为字符串
evel()
-用于执行一串字符串形式的代码