今天簡單的總結了js的一些東西,梳理下整個體系,每一次的總結都會有不同的收穫;
js總結一
一、【獲取元素】:
1、通過id: var obtn=document.getelementbyid('btn1');
var odiv=document.getelementbyid('div1');
2、通過標籤:var adiv=document.getelementsbytagname('div');
操作一組元素就要用迴圈:
for(初始值;迴圈條件;自增自減條件){} 有長度的用for迴圈
初始值;while(迴圈條件) 沒有長度的用while迴圈;
for in迴圈:物件中使用:json arr arr中一般用上邊的for迴圈效能高;
3、通過class名: var adiv=document.getelementsbyclassname('div1');
有相容性的問題:通過封裝函式來解決:
getbyclass(obox,'div1');
function getbyclass(obj,sname) 出現 show();的時候執行;
2、匿名函式:functionz(){}; 加括號時執行,如封閉空間;
封閉空間:(function(index){})(i); 1)解決變數衝突;2)解決i的問題;3)不用單獨起名字;
3、事件函式:obj.onclick=function(){}; 事件觸發時執行;
注:函式的返回值:return 可寫可不寫,需要時寫,見return直接跳出函式後面的**不執行了;函式如果沒有寫返 回值;那返回的就是undefined;
函式的定義存在預解析:在if 和 for 迴圈中不能直接定義函式;
四、【流程控制】:
1、if(){}else if(){}else{}; 只有第乙個if是必須的 後邊的需要是用;
2、switch(條件) 有長度的用for迴圈; for迴圈中直接套for迴圈時注意變數不能一樣
2、初始值;while(迴圈條件) 沒有長度的用while迴圈;
3、for in迴圈:物件中使用:json arr arr中一般用上邊的for迴圈效能高;
注:迴圈中如果有事件 事件中的i有問題,用this或封閉空間來解決(i只要賦值時間與呼叫時間存在時間差就有問題)
break/continue:大多數都用在迴圈中,break 是直接跳出迴圈,continue 是跳過當次迴圈;
應用:選項卡 簡易日曆 九九乘法表
五、【操作屬性和樣式】:
./ 點能操作的中括號都能操作,點後不能跟變數,中括號中可以加變數;操作的都是行間樣式;
getattribute('屬性名')/setattribute('屬性名','屬性值');
應用:懶載入
六、【變數】:
1、宣告變數:var 變數名='變數值'; 存在預解析的問題;定義被放到作用域的最前邊;面試常考
嚴格模式下:變數的定義必須加var
2、非嚴格模式下:var a=b=c=8; 第乙個變數是區域性變數 後兩個是全域性變數;
3、變數使用時不加引號;字串加引號;
七、【資料型別】:
1、 string 字串 使用時加引號;字串的拼接 '字串'+變數+'字串'+變數;
字串的方法:
str.charat(下標):查詢下標對應的字串;
str.indexof('字串'):從左往右查詢字串所對應的下標;找不到時返回-1;
str.lastindexof('字串') 從右往左查詢字串所對應的下標;
str.split('切割方法'):將字串以括號中的方式切割成陣列;
str.substring(開始的位置,結束的位置):擷取從開始到結束位置的字串;
str.touppercase(); 字串中的字母全部轉換成大寫;
str.tolowercase(); 字串中的字母全部轉換成小寫;
字串轉數字:parseint();轉換成整數 數字後邊可以跟字串
parsefloat();轉換成小數 數字後邊可以跟字串;
number();嚴格轉換 字串中只用是數字;
轉換失敗返回nan nan代表的意思是不是乙個字母,但它的資料型別是numbernan不等於任何東西包括它自己
判斷是不是nan 用isnan();
比較大小:
1) 兩個都是數字時正常比較;
2) 乙個數字乙個數字型別的字串;先隱式型別轉換 再按數字大小進行比較
3) 兩個都是數字型別的字串則從左往右乙個乙個比較 例如 '2'>'12';
4) 兩個都是完全的字串,則從左往右乙個乙個比較 a應用:字串首字母轉大寫 判斷瀏覽器型別
2、number 數字
1)數字加數字是算數運算;數字加字串 則是字串拼接;+號沒有隱式型別轉換;
2)在運算子中除了+ = === 外其他大多數都存在隱士型別轉換
3)常用的數學方法
math.random()隨機數
math.abs() 絕對值
math.sqrt() 開方
math.pow(n,m) n的m次方
math.ceil() 向上取整
math.floor() 向下取整
math.round() 四捨五入
math.max() 最大值
math.min() 最小值
4)運算子:
算術運算子:+、-、*、/、%;
賦值運算子:=、+=、-=、*=、/=、%=;
比較運算子:==、>、>=、<、<=、===、!=、!==
邏輯運算子:&&、||、!
應用:計算器 隨機數獲取 瀑布流
3、boolean 布林值
true: 除了false都是真的;
false:false\0\''\undefined\nan\null;都是假的
4、object 物件
陣列:宣告:var arr=/ var arr=new arrey(); 陣列中可以放任何資料型別;有序、有長度
陣列項的新增、替換:arr[1]='blablabla';
陣列的方法:
arr.push() 向後新增一項;
arr.unshift() 向前新增一項;
arr.pop() 從後邊刪除一項;
arr.shift() 從前邊刪除一項;
arr.splice(開始的位置,刪除的個數,新增項);
arr.reverse() 翻轉;
arr.join('拼接方式') 將陣列中的每一項拼接成乙個字串;
arr.sort(function(n,m)); 排序 裡面引數和返回值順序相同時是從小到達,反之是從大到小
arr.concat(arr1,arr2) 陣列的拼接;
注:陣列可以用for迴圈 也可以用for in 迴圈 一般情況下用for 迴圈 效能高;
應用:字串翻轉 排序 資料儲存呼叫
json:
宣告:var json=;無序、無長度、取值用json.name;
json中新增項 json.name='val'/json['name']='val';
替換項 上述同樣的方法:用一樣的鍵名
刪除項 delete json.name/delete json['name'];
json的迴圈只能用for in for(name in json){} name 表示鍵名;
應用:json 陣列去重 json[arr[i]]='luanqibazao';
setstyle();
getpos();
資料儲存與呼叫;互動eval('('+json+')');
mysql知識體系梳理(一)
mysql從架構上看分為兩層 server層負責上層業務處理,儲存引擎層負責底層資料維護 資料儲存 mysql資料儲存在磁碟上,如何高效的對資料進行訪問,不可避免的引入了索引的概念,索引存在的意義在於如何快速的找到對應的資料 事務 事務的概念對應生產環境非常重要,將操作實體封裝在一起 日誌系統 日誌...
Zookeeper知識體系梳理
整理歸納知識,形成知識體系,是高效學習非常重要的乙個環節。高效的歸納總結,可以讓我們輕鬆統攬全域性,掌握知識。目錄1 zookeeper入門 2 安裝方式 3 zookeeper實戰 4 zookeeper內部原理 5 企業面試真題 1.1概訴 zookeeper 是乙個開源的分布式的,為分布式應用...
前端知識體系梳理
高頻考題 盒模型 動畫 css3 預處理器 sass less postcss.基礎其他題目 書籍推薦基礎 原型 繼承 事件流 事件委託 變數 作用域 閉包 this 上下文 事件迴圈 前端快取 正則 跨域 settimeout setinterval requestanimationframe 深...