ie9无法获取未定义或 null 引用的属性“indexof”_前端JS基础篇(二)JS基本数据类型和引用数据类型及检测数据类型方法...
JS中的數據類型
(一)、基本數據類型(值類型)
1.number:數字
-12、12.5、-12.5 0這些數字都是number;
js中增加了一個number類型的數據:‘NaN’
typeof NaN ->“number”
①"NaN"
not a number:不是一個數,但是屬于number類型NaN == NaN :false NaN和任何其它值都不相等
②"isNaN() "
用來檢測當前這個值是否是有效數字,如果不是有效數字,檢測的結果是true;反之為false
isNaN(0)->false
isNaN(NaN)->trueisNaN(‘12’)–>false 當我們使用isNaN檢測值的時候,檢測的值不是number類型的,瀏覽器會默認的把值轉化為number類型,然后再去檢測
③"Number()"
把其它數據類型值轉化為number類型的值;
Number(‘12’) ->12
Number(‘12px’) ->NaN 在使用Number轉換的時候只要字符串中出現一個非有效數字字符,最后結果都是NaN;
④Number([])
把引用數據類型轉換為number,首先把引用數據類型轉換為字符串(toString),在把字符串轉換為number即可 例如:[]->’’ ‘’->0
⑤ ‘parseInt()’
把其它數據類型轉換為number,和Number方法在處理字符串的時候有區別
parseInt(‘12px13’) -->12 提取規則:從左到右依次查找有效數字字符,直到遇見非有效數字字符為止(不管后面是否還,有都不找了),把找到的轉換為數字parseInt(‘px12’) ->NaN
⑥parseFloat()
在parseInt的基礎上可以識別小數點
2. string:字符串
-'zhufeng' '珠穆朗瑪峰' ->單雙引號包裹起來的都是字符串(單雙引號沒有區別)字符串常用方法charAt charCodeAtsubstr substring slicetoUpperCase toLowerCaseindexOF lastindexOfsplitreplacereplacematch
…
3. boolean:布爾類型( 只有true 和false倆個值`)
①Boolean()
把其它數據類型的值轉換為布爾類型
只有“0,NaN,空字符串、null,undefined”這五個數據值轉換成布爾類型的false,其余的都為true
② '!'
!=;不等于
嘆號在JS中還有一個作用:取反,先把值轉換成布爾類型,再去取反
③ ‘!!’
在一個嘆號取反的基礎上在取反,取倆次反相當于沒有任何操作,但是已經把其他類型值轉換為布爾類型了,和Boolean是相同的效果
4. (null):空對象指針(null是空對象,不是(null),因為不加(),null就是個空對象,不顯示了)
現在沒有, 以后會有的, 空指針對象
5. undefined:未定義
壓根就沒有過,現在沒有以后也沒有0
(二)、引用數據類型
引用數據類型(應運而生){} [] Date RegExp fn .…
1.object對象數據類型
① 對象 是復合數據的載體, 用{}包起來, 內容是一對一對的鍵值對(屬性名: 屬性值)
② 這里的冒號相當于 等號 是賦值的意思,不同的鍵值對之間用逗號隔開③ 屬性名 對應 咱們變量名 (但是屬性名可以是數字,也不能是數字開頭的字符)④: 對應咱們的 等號⑤ /屬性值 對應咱們的 變量的值(可以是任意的數據類型)
對象的 增 刪 改 查
(1)查
如果屬性名是數字的話 我們再獲取該屬性對應的屬性值的時候只能用 [] 的這種方式(屬性名可以帶引號 也可以不帶引號(不區分單雙); 帶不帶引號,表示的都是一個屬性)
(2)給對象添加 一項()
var user = {name:'xiaoming',password:'1234'};(3)修改對象(直接給屬性名重新賦值)
user.name = 'xm1';當這個對象里邊有這個屬性的時候,我們再重新賦值時,是相當于修改這個屬性對應的屬性值
當這個對象里邊沒有這個屬性時,我們給這個屬性賦值時,就相當于給這個對象添加了這個屬性(4)對象的屬性的刪除
1、真刪除 2、假刪除
2. [] 數組
數組的每一項都有一個屬性名(數組本身就是一個對象,他只是對象的一個細分)跟他對應。這里的屬性名(依次遞增的數字) 我們叫做索引
數組對象的作用是:使用單獨的變量名來存儲一系列的值。
3. 正則
正則:就是用來處理字符串的一種規則
處理字符串的兩種方式
一種是匹配 test; 編寫了一個正則;用這個正則去查看這個字符串是否滿足你的規則;
另一種是捕獲 exec;編寫一個正則;然后去字符串中獲取滿足你規則的字符串
-/^-?(d|([1-9]d+))(.d+)?$/ /*匹配有效數的正則*/
4. function函數數據類型
//我們要用函數的原因// 1、 節省代碼// 2、 高內聚(把東西縮到一塊,這一塊就是為了實現某個功能,跟其他代碼沒有任何聯系) 低耦合(跟其他代碼沒關聯)// 函數的 語法/** 1、function 函數名(){* 函數體* }** 2、var 函數名 = function [函數名-可寫可不寫](){* 函數體* }** 第一種聲明方式, 我們在聲明的代碼的之前調用這個函數* 第二種聲明方式, 我們只能在聲明的代碼之后調用** 函數聲明之后 可以無限次調用** return //返回的意思** */clearRoom();//函數的調用 --> 函數名()function clearRoom() {console.log('收拾桌子');console.log('收拾臥室');console.log('出門');}// clearRoom();// clearPer();var clearPer = function (){console.log('洗臉');console.log('刷牙');console.log('穿鞋');return '出門';// return 什么 那函數執行完 返給外界的就是啥};var a = clearPer();//把函數執行的結果賦值給 aconsole.log(a);// clearPer();檢測數據類型方法
1. typeof: 檢測數據類型的運算符
使用typeof檢測,返回的結果是一個字符串,字符串中包含的內容證明了值是屬于什么類型的;【局限性】
①.typeof null 不是‘null’而是’object’,因為null雖然是單獨的一個數據類型,但是它原本意思就是空對象指針,瀏覽器使用typeof檢測的時候會把它按照對象來檢測;
②.使用typeof無法具體細分出到底是數組還是正則,因為返回的結果都是’object’
課外擴展(騰訊面試題)
console.log(typeof typeof [])
typeof [] ->‘object’
typeof “object” -> “string”
2. instanceof:檢測某個實例是否屬于這個類
3. constructor 獲取當前實例的構造器
4. Object.prototype.toString.call:獲取當前實例的所屬類信息
作者:志若鴻鵠,尺步寸微
鏈接:前端JS基礎篇(二)JS基本數據類型和引用數據類型及檢測數據類型方法_志若鴻鵠,尺步寸微的博客-CSDN博客_前端基本數據類型
來源:CSDN
總結
以上是生活随笔為你收集整理的ie9无法获取未定义或 null 引用的属性“indexof”_前端JS基础篇(二)JS基本数据类型和引用数据类型及检测数据类型方法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 藏得太深!女子裆部藏2415张SD卡入境
- 下一篇: 李想列出五位值得学习的企业家:包括任正非