# javascript 總結javascript
## 語法
1. 區分大小寫
2. 命名規範
1. 首字母必須是 字母 _ $
2. 其餘字符能夠是 數字 字母 下劃線 $
3. 避開系統的關鍵字
4. 單詞和單詞鏈接方式推薦駝峯命名
3. 註釋
1. 單行註釋 //註釋的內容
2. 多行註釋 /*註釋內容*/
4. 語句
1. 要用;結尾(推薦作法)
2. 若是不寫; 那麼系統默認以換行做爲語句的結尾java
## 變量/常量
1. 變量聲明 var
2. 常量聲明 constnode
## 數據類型
1. typeof 檢測數據類型 a=null;typeof a 多是object 對於比較老的瀏覽器是function
2. undefined
3. null
4. Boolean
1. true/false
5. Number
1. 數字(正/負/整/小/0/Infinity/-Infinity)
2. NaN NaN==NaN 返回false
6. String
1. 使用單引號或者雙引號來定義
2. 轉義字符\ \n \t \r \' \"
3. 字符串能夠經過數組下標的方式來調用字符串對應位置的字符ajax
## 運算符
1. 算術運算符: + - * / % ++ -- +(正) -(反)
2. 字符串: +
3. 比較運算符: > < == === != !== >= <=
4. 邏輯運算符: && || !
5. 位運算符: & | ^ XOR << >> <<< >>>
6. 三元運算符: 條件? 語句1:語句2
7. 賦值: = 帶操做賦值: += -= *= /= %= |= &= ^= <<= >>= <<<= >>>=
8. 其餘運算符: . , typeof delete instanceof void正則表達式
## 流程控制語句
### 分支
#### if語句數組
```
1. if(條件){執行.....}
2. if(條件){...}else{...}
3. if(條件){...}else if(條件){}
4. if(條件){...}else if(條件){}else{}
5. if語句能夠嵌套多層
```瀏覽器
#### switch語句app
```
switch(傳入值){
case 值:
執行內容...;
break;
case 值:
....
break;
default:
執行.....
}dom
```函數
### 循環
#### 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 當前月份須要+1
getDate()//日
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 firstElementChild
lastChild lastElementChild
nextSibling nextElementSibling
previousSibling previousElementSibling
parentNode 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