日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

ie9无法获取未定义或 null 引用的属性“indexof”_前端JS基础篇(二)JS基本数据类型和引用数据类型及检测数据类型方法...

發布時間:2023/12/15 HTML 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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對象數據類型

① 對象 是復合數據的載體, 用{}包起來, 內容是一對一對的鍵值對(屬性名: 屬性值)
② 這里的冒號相當于 等號 是賦值的意思,不同的鍵值對之間用逗號隔開③ 屬性名 對應 咱們變量名 (但是屬性名可以是數字,也不能是數字開頭的字符)④: 對應咱們的 等號⑤ /屬性值 對應咱們的 變量的值(可以是任意的數據類型)

var per = { c"name":'zfpx',1:'wwww',age:9,bol: true,hobby:{hobby1:'play',hobby2: 'read'},fn: function () {}};var per2 = {name:'小明','name':'小紅',age:12,age: 15,2:13,'2':18};console.log(per2["name"],per2.name);

對象的 增 刪 改 查

(1)查
如果屬性名是數字的話 我們再獲取該屬性對應的屬性值的時候只能用 [] 的這種方式(屬性名可以帶引號 也可以不帶引號(不區分單雙); 帶不帶引號,表示的都是一個屬性)

// 1、 打點的方式 (從屬關系)per.name;console.log(per2[2]);//當屬性名是數字的時候 我們只能用 [] 的方式獲取//2、中括號的方式console.log(per['name']);var name1 = 'age';console.log(per[name1],per.name1,per["name1"],per[1],per["1"]);var name2 = 'hobby';console.log(per[name2].hobby1,per.name,per["bol"]);console.log(per[name2][12222222]);console.log(per[name2]['hobby1']);per[name] //--> per['age'] -- > 9 per.age//定義屬性時,屬性名的引號可帶可不帶//調用時,若是通過打點的方式獲取某個屬性對應的值,我們不能給這個屬性加引號//若是通過 [] 的方式獲取某個屬性對應的值,我們必須用引號把這個屬性名包起來//如果不用引號包起來,則 [] 內代表的是變量對應的值;//若屬性名是數字的時候, 我們必須用 [] 的方式獲取該屬性對應的值,這時的數字屬性名的引號可加可不加

(2)給對象添加 一項()

var user = {name:'xiaoming',password:'1234'};

(3)修改對象(直接給屬性名重新賦值)

user.name = 'xm1';

當這個對象里邊有這個屬性的時候,我們再重新賦值時,是相當于修改這個屬性對應的屬性值
當這個對象里邊沒有這個屬性時,我們給這個屬性賦值時,就相當于給這個對象添加了這個屬性(4)對象的屬性的刪除
1、真刪除 2、假刪除

2. [] 數組

數組的每一項都有一個屬性名(數組本身就是一個對象,他只是對象的一個細分)跟他對應。這里的屬性名(依次遞增的數字) 我們叫做索引
數組對象的作用是:使用單獨的變量名來存儲一系列的值。

[12,23,34]var ary = [1,true,'qqq',null,undefined,{q:1},function(){console.log(2)},sum,sum()];var ary2 = [sum,sum()];// [sum,NaN]var t = sum();//NaNvar ary3 = [sum,t,'t'];//[sum,NaN,'t']// 數組里的變量,我們是要把對應的變量值放到相應的位置// obj[name]//對象中的查看 打點 ['']// 數組本身也因該有打點和 [''] 兩種方式 ,但是 對象中 數字的屬性名,我們只能用 [''][]的方式,所以數組中的查看我們只能用 [''][]// console.log(ary['8'],ary[8]);

3. 正則

正則:就是用來處理字符串的一種規則
處理字符串的兩種方式
一種是匹配 test; 編寫了一個正則;用這個正則去查看這個字符串是否滿足你的規則;
另一種是捕獲 exec;編寫一個正則;然后去字符串中獲取滿足你規則的字符串
-/^-?(d|([1-9]d+))(.d+)?$/ /*匹配有效數的正則*/

var reg = /-/;//字面量的聲明定義方式var reg2 = new RegExp('-');// 構造函數式的定義方式console.log(reg, reg2);console.log(reg == reg2);//false//用上邊字面量方式 生成的正則 ;兩個斜杠中的內容叫做 元字符var reg = / /;// 元字符 修飾符// 修飾符// i ignoreCase : 忽略大小寫// m multiline : 多行匹配// g global : 全局匹配//特殊意義的元字符// :轉義的意思; 把在正則里有特殊意義的字符 轉成 字符本身// . :除了換行以外的所有字符;// d: 代表 0~9 之間的數字// D: 代表除了0~9以外的字符// w: 數字 字母 下劃線// |W: 除了 數字 字母 下劃線 以外的字符//[a-z]:a到z之間的任意字母//[A-Z]://[A-z]//[abc]: a,b,c中的任意一個// a|b : a或者b//[^abc]: 除了 abc 以外的任意字符//[^a-z]: 除了 小寫字母 以外的任意字符// 量詞元字符var reg = /d+/;// + : 代表前邊的字符出現一次或者多次// * :代表前邊的字符出現零次或者多次// ? : 代表前邊的字符出現零次或者一次//{n}: 代表前邊的字符出現n次//{n,}:代表前邊的字符最少出現n次//{n,m}:代表前邊的字符出現 n到m次//^ $var reg = /^d+$/; //23424253//^ 代表字符串以什么開頭//$ 代表字符串以什么結尾// () 在正則里邊代表分組// ?: -–> 代表只匹配 不捕獲// ?= -–> 正向預查// ?! -–> 負向預查// s : 空白符// n : 換行符

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’

typeof 12 => 'number'var num =12; typeof num => 'number'

課外擴展(騰訊面試題)

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基本数据类型和引用数据类型及检测数据类型方法...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。