# javascript 总结
## 语法
1. 区分大小写2. 命名规范1. 首字母必须是 字母 _ $2. 其他字符可以是 数字 字母 下划线 $3. 避开系统的关键字4. 单词和单词连接方式推荐驼峰命名3. 注释1. 单行注释 //注释的内容2. 多行注释 /*注释内容*/4. 语句1. 要用;结尾(推荐做法)2. 如果不写; 那么系统默认以换行作为语句的结尾## 变量/常量
1. 变量声明 var2. 常量声明 const## 数据类型
1. typeof 检测数据类型 a=null;typeof a 可能是object 对于比较老的浏览器是function2. undefined3. null4. Boolean1. true/false5. Number1. 数字(正/负/整/小/0/Infinity/-Infinity)2. NaN NaN==NaN 返回false6. String1. 使用单引号或者双引号来定义2. 转义字符\ \n \t \r \' \"3. 字符串可以通过数组下标的方式来调用字符串对应位置的字符## 运算符
1. 算术运算符: + - * / % ++ -- +(正) -(反)2. 字符串: +3. 比较运算符: > < == === != !== >= <= 4. 逻辑运算符: && || !5. 位运算符: & | ^ XOR << >> <<< >>>6. 三元运算符: 条件? 语句1:语句27. 赋值: = 带操作赋值: += -= *= /= %= |= &= ^= <<= >>= <<<= >>>=8. 其他运算符: . , typeof delete instanceof void## 流程控制语句
### 分支#### if语句```
1. if(条件){执行.....}2. if(条件){...}else{...}3. if(条件){...}else if(条件){}4. if(条件){...}else if(条件){}else{}5. if语句可以嵌套多层```#### switch语句
```
switch(传入值){ case 值: 执行内容...; break; case 值: .... break; default: 执行..... }```
### 循环
#### for```
//语句1只执行1次//执行语句2 当语句2返回true 继续执行 for(语句1;语句2;语句4){ 语句3 }```
#### while
```
while(条件){...} //条件为真 执行 do{...}while() //先执行一次 再判断条件是否为真 为真继续执行```
#### for...in
```
//遍历数组或者对象 for(var i in obj){ //i表示 obj 的 下标 键名 obj[i] //obj 下标i对应的 值 }```## 函数(作用域)
```
function 函数名(){ } var 变量名 = function(){} //调用 函数名() 变量名() (function(形参){})(实参) (function(形参){}(实参))函数里边内部有个arguments 表示 实参对象
```## 对象
1. 对象声明```
//数组 var arr = []; var arr = new Array(); //对象 var obj = {}; var obj1 = new Object(); var obj2 = new 自定义构造方法(); var obj = {"name1":"zhangsan",name2:"lisi"}```2. 构造方法
```
//构造方法 function Person(n){ this.name = n||'小白'; this.say = function(){ alert(this.name) } }```## 内置对象
### Boolean### Date```
getFullYear()//年getMonth()//月 0-11 当前月份需要+1getDate()//日getDay()//星期 0~6 0星期日getHours()//时getMinutes()//分getSeconds()//秒getMilliseconds()//毫秒getTime()//时间戳 毫秒级toString() //以字符串形式输出
valueOf() //内部存的值```### Number
```
toString(进制) toFixed(n) 显示n位小数 toExponential(n)显示n位.后面的数 指数表示法 toPrecision(n) 显示n位```### Math
```
Math.PI //3.1415926535 Math.abs() //取绝对值 Math.ceil() //进一取整 Math.floor() //退一取整 Math.max()//最大值 Math.min()//最小值 Math.pow(x,y)//x的y次幂 Math.random() //0~1的随机数 //m~n随机整数 //Math.floor(Math.random()*(n-m+1))+m//建议使用 //Math.ceil(Math.random()*(n-m+1))+m-1 Math.round() //round 四舍五入 Math.sqrt() //求平方根```
### String
```
trim() //清空两侧的空白//查找
charAt() // 获取指定位置上的字符charCodeAt() //获取对应位置上的字符的ASCII码indexOf(“abc”) //返回子字符串abc在字符串中第一次出现的位置lastIndexOf(“abc”) //返回子字符串abc在字符串中最后一次出现的位置match(regexp) //找到一个或多个正则表达式的匹配search(regexp) //查找与正则表达式相匹配的子字符串//替换
replace(表达式,替换的字符串) //替换一个与正则表达式相匹配的子串//截取
split(正则表达式,数组最大长度) //用于把一个字符串分割成字符串的数组slice(startindex,endindex) //返回一个子字符串substring(startindex,endindex) //返回一个子字符串substr(startindex,length) //返回一个子字符串//转换
toLowerCase() //将字符串转换为小写toUpperCase() //将字符串转换为大写```
### RegExp``` exec() //返回匹配内容 test() //判断是否匹配```### Array
```//添加/删除unshift() //从数组头部添加元素shift() //从数组头部删除一个元素push() //从尾部添加pop() //从尾部弹出一个元素splice() //删除 替换 或 插入数组元素//截取
concat() //合并 数组 或 元素 为一个新数组slice() //返回数组中的一部分//格式化
toString() //以字符串形式输出数组join() //将数组元素以某个字符连接成字符串reverse() //颠倒数组中元素顺序sort() //排列数组中元素顺序```
### Function (没用)
### Global```
parseInt() //强制转换成int parseFloat() //强制换行成float isNaN() //判断是不是NaN isFinite() //判断是不是Infinity eval() //把字符串当做JS语句执行 escape() //编码 unescape() //解码```## BOM
### Location 对象 当前文档url地址对象模型```
//跳转页面 设置 location.href = ""protocal //协议
hostname //主机域名port //端口号pathname //路径加文件名search //get参数 ?后面的内容hash //锚点 #后面的href //完整url地址 assign() //跳转replace() //替换跳转reload() //刷新```
### Navigator 浏览器信息
```
appCodeName //代码名称appName //浏览器名称appVersion //浏览器版本号language //语言platform //系统userAgent //用户请求头```### screen 浏览器屏幕信息
```
width //屏幕宽度 height //屏幕高度 availWidth - 可用的屏幕宽度 availHeight - 可用的屏幕高度```
### history 访问网页历史
```
back() //后退 返回上一个 url forward() //前进 到下一个 url go(n) //跳转到 第 n 个 url```### 其他
```
alert("文本") //警告框confirm("文本") //确认框prompt("文本","默认值") //提示框setInterval()
clearInterval()setTimeout
clearTimeout()```
## DOM
```
all[] //提供对文档中所有 HTML 元素的访问。
forms[] //所有form元素images[]//所有img元素links[]//所有a元素
//节点获取
getElementById() //通过id获取节点getElementsByTagName() //通过标签名获取节点getElementsByName() //通过name属性获取节点childNodes children
firstChild firstElementChildlastChild lastElementChildnextSibling nextElementSiblingpreviousSibling previousElementSiblingparentNode parentElement//获取属性
attributes //属性集合getAttribute("属性名") //获取属性setAttribute("属性名","属性值") //设置属性node.removeAttribute("属性名") //删除属性className//节点操作
document.createElement() //创建节点document.createTextNode(); //创建文本节点parentNode.appendChild() //添加节点parentNode.insertBefore(newNode,oldNode) //在xx节点前面添加子节点parentNode.replaceChild(newNode,oldNode) //把xx节点替换上一个新节点parentNode.removeChild() //删除节点//便捷操作 获取内容
node.innerHTML //获取标签里边所有内容node.value //获取表单的值```## 事件
```
//鼠标事件* onclick //单击dblclick//双击mousedown//按下mouseup//抬起* mouseover //移入* mouseout//移出* mousemove//移动contextmenu//鼠标右键
//键盘事件
onkeydown//按下onkeyup//按起onkeypress//在用户敲击按钮时触发//文档
* onload 加载* scroll 滚动条resize //监听浏览器窗口大小改变//表单
** onsubmit 提交事件* focus 获取焦点* blur 失去焦点* change 内容改变onselect 在元素中文本被选中后触发。```### 事件对象
```
onXXX = function(ent){ //获取事件对象 var e = ent || window.event;//兼容性处理}//事件对象的属性
altKey 返回当事件被触发时,"ALT" 是否被按下。 button 返回当事件被触发时,哪个鼠标按钮被点击。 * clientX 返回当事件被触发时,鼠标指针的水平坐标。 * clientY 返回当事件被触发时,鼠标指针的垂直坐标。 * pageX 相对于页面的位置* pageY 相对于页面的位置ctrlKey 返回当事件被触发时,"CTRL" 键是否被按下。 metaKey 返回当事件被触发时,"meta" 键是否被按下。 relatedTarget 返回与事件的目标节点相关的节点。 screenX 返回当某个事件被触发时,鼠标指针的水平坐标。 screenY 返回当某个事件被触发时,鼠标指针的垂直坐标。 shiftKey 返回当事件被触发时,"SHIFT" 键是否被按下。 * keyCode 返回字符的ascii码//取消冒泡
e.cancelBubble = true||e.stopPropagation();```
## ajax