对象由键值对组成node
键值对由逗号隔开json
键值对由属性名和属性值组成数组
属性名和属性值用冒号隔开浏览器
前面的是属性名,后面的是属性值bash
对象没有length属性app
console.log(a.length);//undefined
复制代码
var obj={a:1,b:2,c:"zhufeng",1:100}
console.log(obj.a);
console.log(obj["a"]);
复制代码
var obj={a:1,b:2,c:"zhufeng",1:100}
obj.d="培训";
obj["d"]="培训";
console.log(obj);
复制代码
var obj={a:1,b:2,c:"zhufeng",1:100}
obj.c="培训";
obj["c"]="北京";
console.log(obj);
复制代码
delete + 对象名,属性名
var obj={a:1,b:2,c:"zhufeng",1:100}
delete obj.c;
console.log(obj);
obj.a若是放在等号的左边,那么是被赋值或修改;放在等号的右边,是在获取赋值
obj.a=10;
obj.a=obj.b
复制代码
var obj={a:1,b:2,c:"zhufeng",1:100}
var d=19;
var obj={a:1,b:"zfpx",c:d};
obj.a=11;
obj.a=a;
复制代码
var a=Number("213");//213
var a=Number("213px");//NaN
var a=Number(false);//true=1 false=0
var a=Number(false);//null=0 undefined=NaN
复制代码
isNaN:用来判断是不是一个非有效数字的方法,若是是有效数字返回false,不是返回true;dom
isNaN 执行时先默认调用number方法,把值转换为number类型;而后再判断异步
console.log(isNaN(19));false;
console.log(isNaN(NaN));true;
复制代码
console.log(parseInt("12px"));12;
console.log(parseInt("12px12"));12;
console.log(parseInt("px12"));NaN;
复制代码
console.log(parseFloat("12.66px"));12.66
console.log(parseFloat("12.66.66px"));12.66
复制代码
var num =12.8998;
// number.toFixed(保留的位数)
199.22222.toFixed(3);
console.log(num.toFixed(2));//199.200
复制代码
基本数据类型: number string boolean null undefined函数
引用数据类型:对象数据类型和函数数据类型字体
对象数据类型: 对象{} 数组[] 正则 Math Date的实例...
函数数据类型: 函数类
基本和引用区别:
基本数据类型操做是值
引用数据类型操做的是空间地址
基本数据类型存储到栈内存中
引用数据类型都存储到堆内存中
var num = 100;
var obj = {};// obj 存储的是一个空间地址;
var arr = [];
复制代码
// 用typeof检测数据类型
console.log(typeof 100); // "number"
console.log(typeof "zhufeng"); //"string"
console.log(typeof true); //"boolean"
console.log(typeof null); //"object"
console.log(typeof {}); //"object"
console.log(typeof []); //"object"
console.log(typeof function); //"function"
console.log(typeof undefined); //"undefined"
复制代码
有length:属性值表明数组成员的个数
索引:表明数组成员的属性名从0开始
var arr=[1,2,3,4,100];
console.log(arr.length);
复制代码
var arr=[1,2,3,4,100];
console.log(arr[2]);
复制代码
push:在数组末尾追加元素
push方法的参数:要追加到数组后面的元素;能够是多个;用逗号隔开
须要传参
push方法的返回值:执行完成,新数组长 度
var arr =[1,2];
arr.push("a"); // [1,2,"a"]
console.log(arr);
复制代码
pop:从数组末尾去掉一个元素
pop:方法没有参数
pop:返回值;删除末尾数组元素后的数组
pop方法原数组发生变化
var arr=["a","n",1,"m"]; //length=4
var ret=arr.pop();
console.log(arr);
复制代码
unshift:在数组的前面添加元素
unshift:方法参数:要添加的值;能够为 多个参数
unshift:返回值新数组长度,lenght
var arr=[1,2,3,4];
arr.unshift(0);
console.log(arr)
复制代码
shift:从数组的前面删除一第个元素
shift方法没有参数
shift方法返回值:被删除的数组的第一项成员
var arr=[1,2,3,4,5];
arr.shift(1);
console.log(arr);
复制代码
slice:截取数组
slice:方法参数:若是是两个参数;第一个参数是开始位置的索引;
第二个参数是结束为止的索引;不包括第二个参数的位置
slice返回值:截取的那一部分数据,以数组的方式返回
若是是一个参数参数是开始位置的索引截取到整个数组的最后一位
参数若是是负数;数组的长度+负数获得的值;数组的下标
没有参数复制一份数组
原有数组不发生改变
支持负数
var arr=[1,2,3,4,5,6,7];
arr.slice(2,5);
console.log(arr);
复制代码
splice:删除原有数组的项第一个参数;开始位置的索引删除的长度;返回值是删除的项;以数组的形式返回
替换/修改第一个参数,开始位置的索引
第二个参数,是删除的长度,剩下的参数;被添加到原来开始位置索引的数组元素
添加:第二个参数为0(不删除),而后再原有的位置;添加后面参数元素的值。
原来的数组发生了变化
参数为0所有删除
var arr=["a","b","c","d","e","f"];
arr.splice(2,2);
console.log(arr);
复制代码
sort:排序 只能排相同位数的数组
对数组进行排序
参数无关紧要
没有参数 只能排相同位数
var ary=[1,23,435,46,34,653];
ary.sort(function(a,b){return a-b}) 从小到大
ary.sort(function(a,b){return b-a}) 从大到小
复制代码
reverse:将数组倒序排列
不须要参数
返回值是数组倒序以后的数组
原有数组发生改变
indexOf:用来获取当前数组成员第一次出现的索引位置
须要参数;若是数组成员不存在这一项返回-1
若是参数存在 返回当前项索引 不存在返回-1
原有数组不发生改变
0返回也是-1
lastIndexOf:用来效验数组成员最后一次出现的索引位置
须要参数 若是不存在返回-1
返回最后一次的索引或者是不存在就返回-1
原有数组不发生改变
0返回也是-1
concat:数组的拼接
须要参数 没有参数就是复制同样的参数
返回是拼接后的数组
原有数组不变
join:按照指定的字符进行拼接成一个字符串
须要参数 若是不写 默认是逗号隔开
返回一个链接后的字符串
原有数组不变
forEach:用来遍历数组每一项
须要参数 一、第一个是数组的每一项 二、数组成员的索引 三、要循环的数组
返回的是undefined
原有数组不发生改变
ary.forEach(function (a,b,c){
a:数组的每一项
b:数组成员的索引
c:要循环的数组
})
复制代码
循环数组
有返回值
map:遍历 映射
须要参数
返回是映射以后的数组
原有数组不发生变化
map里有return属性
console.log(Math);
console.log(typeof Math);
复制代码
console.log(Math.abs(3)); //3
复制代码
console.log(Math.floor(5.9999)); //5
复制代码
console.log(Math.ceil(5.0001)); //6
复制代码
console.log(Math.max(12,3,22,56,5,7,8)); //56
复制代码
console.log(Math.min(1,23,45,2,4,5)); //1
复制代码
console.log(Math.random());
复制代码
console.log(Math.round(4.756)); //5
复制代码
Math.round(Math.random()*(n-m)+m)
复制代码
console.log(Math.pow(3,3)); // 3*3*3--27
复制代码
十、Math.sqrt(16); 开16的平方---4
console.log(Math.sqrt(16)); //4
复制代码
有length
索引
字符串是不能根据索引修改的、只能用索引来获取
字符串运算
+是字符串拼接 其他转number再运算
var srr="Rocky"
var str=`ma name is ${srr}`
console.log("3px"-"3"); //NaN
复制代码
var sTc="zhufengpeix"
console.log(str.toUpperCase());//'ZHUFENGPEIX'
复制代码
console.log(sTr.toLowerCase());
复制代码
console.log(sTc.charAt[3]);
复制代码
console.log(sTr.charCodeAt(3));
97-122 a-z 65-90 A-Z
复制代码
console.log(str.substr(2));
复制代码
console.log(str.substring(2, -5));
复制代码
console.log(str.slice(2, -5))
复制代码
console.log(str.replace("e", "a"));
复制代码
console.log(str.indexOf("h"));
复制代码
console.log(str.lastIndexOf("e"));
复制代码
//支持正则
console.log(str.split(" "));
复制代码
console.log(str.concat("aaaa"));
复制代码
console.log(str.trim());
复制代码
console.log(str.trimLeft());
复制代码
console.log(str.trimRight());
复制代码
元素是个对象 元素都是对象数据类型的
获取不到 获取结果是null
名字相同 只获取第一个
上下文只能是document
var oBox= document.getElementById("id名")
//经过标签名获取元素
复制代码
获取的元素是一个元素集合
支持元素做为该方法的上下文
var oBox= document.getElementsByTagName("标签名")
经过class名获取元素
复制代码
var oBox= document.getElementsByClassName("class名")
经过name名获取元素
复制代码
<div name="boss"></div>
var oBox= document.getElementsByName("boss")
复制代码
若是是id加上#
若是是class 加上.
var oBox= document.querySelector("选择器")
复制代码
document.body
复制代码
document.documentElement
复制代码
<div></div>
<div></div>
<div></div>
console.log(document.querySelectorAll("div"))
复制代码
childNodes: 当前元素全部的子节点
children: 当前元素的全部的子元素节点
parentNode:获取当前元素的父亲节点 document是根节点;他的父亲节点是null
previousSibling:上一个哥哥节点
previousElementSibling:上一个哥哥元素节点
nextSibling:下一个弟弟节点
nextElementSibling:下一个弟弟元素节点
firstchild:第一个子节点
firstElementChild:第一个子元素节点
lastChild:最后一个子节点
lastElementChild:最后一个子元素节点
console.log(box.childNodes);
console.log(box.children);
console.log(last.parentNode);
复制代码
function getBrother(curEle) {
var pre = curEle.previousSibling;
while(pre)
{
if(pre.nodeType===1){
return pre;
}
pre = pre.previousSibling;
// pre等于哥哥节点的哥哥节点;
}
}
复制代码
var new = document.createElement("div")
复制代码
// 向容器末尾添加子节点
<div id="box"></div>
box.appendChild(元素)
复制代码
// 向容器中的某个元素前面插入新元素
容器.insertBefore(newChild,oldChild)
box.insertBefore(newDiv,firet)
复制代码
//删除子节点
容器.removeChild(oldChild)
box.removeChild(ul)
复制代码
//用新的子节点替换老的子节点
容器.replaceChild(newChild,oldChild)
box.replaceChild(newDiv,ul)
复制代码
cloneNode
克隆一样的元素
cloneNode的参数一个是true表明深度克隆将后代节点也克隆出来
false:不传就是false;浅克隆 克隆元素自己 不能克隆元素里的全部后代节点
默认状况下只能克隆元素自己 不能克隆元素里的全部后代节点
不能克隆点击事件
var divs=box.cloneNode(ture)
复制代码
// 获取行间属性所对应的属性值
<div id="box" zfpx="hui"></div>
box.getAttribute("zfpx")
复制代码
//设置行间属性对应的属性值
box.setAttribute("a",100)
复制代码
//移除行间属性
<div id="box" zfpx="hui"></div>
box.removeAttribute("zfpx")
复制代码
classList
add 新增类名
remove 移除类名
replace 改变类名(前一个旧类名,后一个新类名)
box.classList.add("a")
box.classList.replace("a","b")
//前一个参数旧的 后面是新的class
复制代码
new + 函数:建立这个函数的实例;实例是个对象数据类型
new 是个关键字:
console.log(new Date()); //获取当前电脑的系统时间
复制代码
getFullYear():返回时间年
getMonth(): 返回时间月【0-11】
getDate(): 返回当前日【1-31】
getDay(): 返回星期几 【0-6】星期日是0
getHours(): 返回小时 【0-23】
getMinutes(): 返回时间分钟数 【0-59】
getSeconds():获取时间秒
getMilliseconds():获取毫秒数
getTime(): 当前时间距离1970-1-1上午8:00 毫秒差
Date.now():常常用于产生一个时间戳:产生一个惟一的数字
setTimeout 和setInterval
定时器返回值
清除定时器 :claearInterval
alert 弹框 将参数转成字符串输出
console.log在控制台输出参数可为多个
confirm 弹框有取消按钮
document.write()在文档写入内容能够识别标签
由字母、数字、下划线、$组成;
不能以数字开头,严格区分大小写
遵循驼峰命名,第一个单词的首字母小写,其他有意义的单词首字母大写
不能使用关键字和保留字;
innerHTML 能够识别标签,innerText 不能够识别标签
= : 赋值
var a = document.getElementById("a");
a.onclick = function () {
a.innerHTML += 123
}
复制代码
isNaN : 校验是不是一个非有效数字
parseInt:把字符串转成数字,从左到右依次识别,直到遇到一个非有效数字为止把识别到的以数字形式返回
parseFloat :多识别一位小数点
toFixed : 保留小数点位数
var a = Number("18")
string
复制代码
length 索引 "" '';
字符串的运算 - * /
: 字符串的拼接
boolean : true false
Boolean :
js的内置方法;在全局做用下
0 "" NaN null undefined只有这五个值转 布尔是false
! : 先把后面的值转成布尔,再取反
console.log(![] == [])// true
console.log([]==[])// false
console.log(![]==false);//true
console.log({a:1}=="[objectobject]")//true
console.log("12px" == 12);
复制代码
! : 会先把后面的值进行去布尔,而后再取反,最后比较
null undefined: 都表示没有
var obj = {a:1};//obj=null;
var a;
console.log(a);
console.log(obj.b);// undefined
复制代码
if (若是)
else if (再者)
else (不然)
break(终止)
js中若是ID名重复,只能获取第一个id的元素
ID名不能重复、
若是经过id名获取不到内容,那么获取的结果是null
console.log()在控制台输出
常常用于调试bug 开发人员使用
console.log(100);
复制代码
alert:弹出
有且只有弹出第一个数
<script>
alert(222,333,666)
</script>
复制代码
会让代码中止到这一行
会把弹出的值转成字符串,默认调用tostring方法
console.dir:详细输出
console.table:把json数据以表格的形式输出
变量实际上是一个无心义的名字,它所表明的意义都是其存储的值
常量:值是不可变的
var + 变量 =值
变量名是本身起的
定义一个变量名是a,把这个10的值赋值给a,那么a表明这个10
var a=10;
console.log(a);
console.log(a+10);
复制代码
变量命名规范
变量名是由字每,数字,下划线,¥组成
变量名数字不能开头,严格区分大小写
遵循驼峰命名法;第一个单词首字母小写;剩余有意义的单词首字母大写;
关键字和保留字不能做为变量名
关键字:在js中有特殊意义的单词都是关键字
保留字:将来有可能成为关键字的单词
<div id="box"></div>
<script>
window.document.getElementById("box").innerHTML("改变内容")
</script>
复制代码
innerText:不能识别标签
onclick=function 鼠标点击事件
前面加元素名
var a= document.getElementById("box");
a.onclick=function() {
//点击时,此处代码运行
a.innerHTML="<ahref='http://www.baid.com'>百度</a>";};
复制代码
对象数据类型:对象 数组 正则
Dote的实例 Math
布尔数据类型
一、Boolean
在boolean只有两个值:true和false
true:正确 false:错误
true--1 false--0
boolean把其余类型转布尔类型方法;返回值只有正确和错误
在js中只有0、“”、null、undefined、NaN 这五个值转布尔值是false 其他全是true
负数也是true
console.log(Boolean(0));--false
console.log(Boolean(2));--true
复制代码
console.log(!NaN);--true
console.log(!"12px");--false
复制代码
字符串:用单引号或双引号包起来的值就是字符串类型
length:有长度,length的属性值表明字符串的个数
var str="wdaifhauohfiuahgfia"
console.log(str.length);
复制代码
console.log(str[3]);
console.log(str[str.length-1]);
复制代码
获取字符串最后一项:
console.log("18-16");2
console.log("18px"-"12");6
console.log("18px"*"12");216
console.log("18px"/"12");1.5
console.log("18px"+"12");18px+12
console.log("18"+"12");1812
复制代码
经过id获取元素若是获取不到内容,那么默认返回值是null
若是须要销毁对象的堆内存,那么会给对象赋值为null
正则进行捕获,捕获不到内容,那么返回值是null null表示对象指针
indexOf
对象;循环对象;放入新的数组中
操做原有的数组
递归:针对函数:在函数内部调用函数自己;让其执行,这种现象就是函数的递归
须要结束条件,结束当前循环
递归的时候必定要有一个结束条件 不然会一直循环下去
新建一个数组
把旧数组的第一项push到新数组中
取旧数组中的每一项和新数组中的每一项比较
= 赋值
把10赋值给变量hh
var hh=10;
复制代码
== 比较;返回一个布尔值;相等返回true,不相等返回false
容许不一样数据类型之间的比较
若是是不一样类型的数据进行,会默认进行数据类型之间的转换
console.log(1==1);//true
console.log(1=="1");//true
console.log(1=="1px");//false
console.log(1==true);//true
复制代码
console.log({}==[]);//false
console.log({}=={});//false
console.log([]=="");//true
console.log([]==0);//true
复制代码
console.log(1 === 1 );//true
console.log(1 ===true );//false
console.log(1 === "1");//false
复制代码
1.操做语句:三个判断、三个循环
浏览器从上到下进行判断、若是条件成立 就执行那块代码
只要有一处知足条件,下面即使条件成立 都不执行
小括号中的条件最后必定要转成一个布尔值
if ([])
console.log(1)
复制代码
if(20>10){
if(11<18){
}
}
复制代码
//条件?条件成立执行:条件不成立执行' 18=="18px"?console.log(18):console.log(19); 复制代码
var num =10;
switch (num){
csae "10":
console.log(1);
break; //终止不让向下进行判断
case "10px":
console.log(2);
break;
case 10:
console.log(3);
break;
default: //当以上条件都不成立时、执行此处代
码
console.log(4)
}
复制代码
&& :而且、同时知足
|| :或、只要其中一个知足
&&
if(1==1 && 1==="1"){
//当两个条件都成立、总体才成立
console.log(1);
}
||
if(isNaN("12px")||3==="3"){
//只要其中一个知足、条件成立
console.log(3);
}
复制代码
JS 是单线程的、同一时间、只能作一件事
for 循环的四步曲
定义变量i;
判断条件是否成立
执行循环体
执行i++
//执行过程1-->2-->3-->4-->2-->3-->4..
for(va i=0; i<10; i++){
console.log(1);
}
console.log(2);
continue:中止本轮循环
for(var i=0;i<10;i++){
if(i>5){
continue
}
console.log(100);
}
break:终止整个大循环
for(var i=0;i<10;i++){
if(i>5){
break;
}
console.log(100);
}
复制代码
var obj={a:1,b:3,str:"www"};
for(var key in obj){
//key:表明属性名、并且是个字符串
console.log(key);
//obj[key] 表明属性名对应的属性值
//会把属性值是数字的先输出
//输出循序会根据属性名进行排序、从小到大依次输出
console.log(obj[key]);
}
复制代码
通常用于不知道循环多少次时,用while
阻塞主线程、让代码在此处停留
同异步
var i=0;
while(i<4){
//改变while的条件通常在循环体中进行修改;
console.log(100);
i++;
}
复制代码
var i=0
do{
console.log(111)
i=i+2
}while(i<10);
复制代码