數(shù)據(jù)類型
檢測數(shù)據(jù)類型 --- typeof 數(shù)據(jù)
數(shù)據(jù)類型:number(數(shù)字/NaN) 偷卧、 string(字符) 溉苛、 bollean(布爾) 搞隐、 object(對象 / null) 讼庇、 underfined(沒定義) 姻采、 function
數(shù)據(jù)類型分2大類:基本(不可分) -- number / string / boolean / underfined 崇堵、復合(可分) -- object? / function
-------
類型轉換
parseInt(數(shù)據(jù)) --> 整數(shù)
-轉換失敗 返回 NaN
-NaN的數(shù)據(jù)類型是number
NaN加上任何數(shù)都等于NaN
NaN不等于任何數(shù)型诚,包括他自己
NaN == 非法數(shù)字
isNaN(數(shù)據(jù)) --> 判斷數(shù)據(jù)是不是非法數(shù)字 返 true / false
a.顯示轉換
-parseInt
1.干掉小數(shù),字符 --> 整數(shù)
2.從左到右找能轉的轉
3.忽略字符的前導0鸳劳,后導0
4.做進制轉換 --> 10
-parseFloat
1.轉小數(shù)
2.同上
-Number
1.轉數(shù)
2.嚴格型轉換(先看一下有不能轉的就返回NaN)
b.隱式轉換(Number)
-? *? /? ==
' ' + 數(shù)字 -->? '110'? 數(shù)字到字符
注意: === 不隱轉
-------
取反? ? !數(shù)據(jù)(數(shù)字狰贯、字符、布爾) -- 把狀態(tài)顛倒
-------
字符的方法
strObj.charAt(下標)? ? ? ? ? 給:下標? ? ? 返:字符/null
strObj.indexOf(字符)? ? ? ? 給:字符? ? ? 返:下標/-1(-->)
strObj.lastIndexOf(字符)? 給:字符? ? ? 返:下標/-1(<--)
strObj.substring(開始位置赏廓,結束位置)? ? 不包含結束位置涵紊,只有開始位置就默認從開始位置-結尾
strObj.split(規(guī)則) 切割? ? ? 給:規(guī)則? ? ? 返:數(shù)組(找不到規(guī)則返回數(shù)組長度1就本身)
規(guī)則--在字符里找
strObj.toLowerCase()? ? ? ? 小寫
strObj.toUpperCase()? ? ? ? 大寫
*** 字符一旦創(chuàng)建無法修改,除非銷毀
例子:判斷瀏覽器幔摸、判斷文件后綴
a.判斷瀏覽器
Chrome(谷歌) /? Firefox(火狐) / rv:11 or MSIE7-10(IE)
if(window.navigator.userAgent.indexOf('Chrome')!=-1){alert("谷歌")}
b.判斷文件后綴名
var file = "xxx.png";
document.write(file.substring(file.lastIndexOf(".")+1,file.length));
-------
數(shù)組
var arr = [] / new Array()
arr.length=0;? //清空數(shù)組 獨有
數(shù)組內最好放相同數(shù)據(jù)
數(shù)組方法
修改原數(shù)組:arrObj.push(數(shù)據(jù))? 返回-數(shù)組長度
arrObj.pop()? ? 返回-刪除的數(shù)據(jù)/underfind
arrObj.unshift(數(shù)據(jù))? ? 返回-數(shù)組長度
arrObj.shift()? ? 返回-刪除的數(shù)據(jù)/underfind
arrObj.splice(其實位置摸柄,要刪除的個數(shù),要插入的元素)
arrObj.join(規(guī)則) --- 規(guī)則自個發(fā)明
arrObj.reverse()? 反轉數(shù)組
arrObj.sort(n1,n2){return n1-n2}? 排序
不會修改原數(shù)組:arr1.concat(arr2) 連接數(shù)組? 返回-新數(shù)組
-------
JSON
理解:給變量打了個包既忆,屬性和值配對兒驱负,鍵值對兒
*** 屬性都是字符
json沒有l(wèi)ength
循環(huán)json? 用 for in(枚舉)
數(shù)據(jù)解析? string: "{}"? "[]"
a. substring --> split --> for in
b. eval("("+str+")")
c. JSON.parse(str)? ? json-->string
d. JSON.stringify(json)? string-->json
-------
Function
參數(shù):個數(shù) 沒有限制
參數(shù)和變量一樣沒有數(shù)據(jù)類型
函數(shù)定義在哪里不重要 重要的是在哪里執(zhí)行嗦玖!
***變量的值以調用為準
返回值:函數(shù)可以返回一個東西(沒有類型)!
-function 函數(shù)名 (參數(shù)列表){return 值跃脊;}
-注意:函數(shù)沒有執(zhí)行一次都會復制一份宇挫!
-特性:a.返回值沒有明確類型
b.return 后面的代碼不執(zhí)行
c.return;? 返回一個underfined
d.沒有return 默認會返回一個 underfined
e.只有函數(shù)才有返回值
封閉空間:閉包 自執(zhí)行函數(shù)
-( function( index ){ js代碼 } )( i );
-原理:函數(shù)每執(zhí)行一次都會復制一份,包括里面參數(shù)酪术!
-好處:省了一個函數(shù)名器瘪、防止重名、解決i的問題(事件里面的i 定時器的i)
-------
underfined:
1.定義了沒有賦值 var a;
2.真的沒有定義 typeof a;
3.訪問一個不存在的屬性? aBtn[i].index;
4.沒有明確的返回值;
5.使用一個underfined;
-------
日期對象
var d = new Date();? ? 創(chuàng)建日期對象绘雁,取的是系統(tǒng)時間
d.getFullYear();? number 年
d.getMonth();? 月? 月從0開始算
d.getMonth()+1;? 為了顯示正確
d.getDate();? 日
d.getHours();? 小時 24小時制
d.getMinutes();? 分鐘
d.getSeconds();? ? 秒
d.getMilliseconds();? 毫秒
d.getDaty()? 星期? 星期天==0
d.setFullYear(年橡疼,月,日)
d.setHours(小時庐舟,分衰齐,秒,毫秒)
d.getTime()? 返回 時間戳(number)
***設置日期是继阻,時間會順忒
獲取本月有多少天:月+1耻涛,日設0,取日
d.setMonth(d.getMonth()+1)
d.setDate(0)
-------
定時器
setInterval(函數(shù)瘟檩,多少時間走一次)? -- 永遠執(zhí)行
setTimeout(函數(shù)抹缕,多少時間后執(zhí)行)? --只執(zhí)行一次
開定時器? var timer = setInterval(fn,time) / var timer = setTimeout(fn,time)
關定時器? clearInterval(timer) / clearTimeout(timer)
***定時器在開之前,先關一下
-------
Math
Math.random()? 0-1 包括0 但不包括1
Math.ceil(數(shù)據(jù))向上墨辛,大卓研,右
Math.floor(數(shù)據(jù))? 向下,小睹簇,左
Math.round(數(shù)據(jù))? 4小舍5大入
Math.abs(數(shù)據(jù)) 絕對值
Math.sqrt(數(shù)據(jù)) 開平方--負數(shù)不能開平方返NaN
Math.pow(基數(shù)奏赘,冪)? 基數(shù)的冪次方
Math.max/min(數(shù)據(jù))? 最大、最小
-------
select
***option的value不可以省
oSel.value? 返回的是選中的option的value值
oSel.selectedIndex? 返回選中的option的索引
oSel.options[oSel.selectedIndex].text? 返回是選中的option的內容
onchange事件? 當選擇發(fā)生改變--伴隨獲取太惠、失去焦點
new Option(text,value)? 創(chuàng)建option對象
oSel.options.add(oPt)? options才有添加的方法
oSel.options.remove(索引)? 刪除