當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JavaScript学习笔记(一)—— 数据类型
生活随笔
收集整理的這篇文章主要介紹了
JavaScript学习笔记(一)—— 数据类型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、基本數據類型: 1、js中基本數據類型:String、Boolean、Number、Null、undefined; 復合數據類型:object對象類型、Array數組類型 特殊對象:function函數類型
基本數據類型 ① String ?—字符串。 ? ? 若使用var聲明變量,var x =?“Andy”?,x 為字符串。將一個值轉換成字符串:toString( )方法 ? ② Boolean—布爾值。 ? ? 只有兩個值:true或者false;?但true不一定等于1,false也不一定等于0; ? ? 要將一個值轉換為其對應的Boolean值,可以調用類型轉換函數Boolean( ) ? ③?Number —整數、浮點數、NaN. ? ? 其中:任何數值除以0會返回NaN,而NaN除以任何數值也返回NaN; ? ? isNaN( )函數可以確定一個參數是否 “不是數值”。 ? ? 例如:alert(isNaN(“Andy”))// “Andy”不是數值,返回true; ? ? ? ? ? ? alert(isNaN(25))//25是數值,返回false; ? ? ? ? ? ? alert(isNaN(NaN ))//返回true; ps: ??Number()函數的轉換規則: ? ? ? ?字符串:可用parseIn( )和parseFloat( )來轉換成數值。 ? ? ? ?Boolean值:true和false將分別替換為1和0 ? ? ? ?null值:返回0 ? ? ? ?undefined:返回NaN; ? ? ? ?對象:可調用valueOf( )方法,toString()方法 ? ④ Null— 空。 ? ? 如果定義的變量在未來用于保存對象,最好將變量初始化為null; ? ? 例:var a = null; ? ⑤ undefined—一個值:undefined。 ? ? 使用var聲明變量但未對其加以初始化時,這個變量的值就是undefined。 ? ? 例:var a; ? ? ? ? ?alert(a);//undefined ? PS:① null與undefined的區別: ? ? ? ? ?undefined沒有必要顯示設置值,即變量不含有值; ? ? ? ? ?null需要被初始化,用于、保存清空變量 ? ?? ②布爾值、數值、對象、字符串都有toString( )方法,null和undefined沒有此方法。 ?
復合數據類型 ① object類型— 例:var a = new object( ) ? ? ? ? ? ? ? ? ? ? ?屬性和方法: ? ? ? ? ? ? ? ? ? ? ?constructor( )—保存著用于創建當前對象的函數 ? ? ? ? ? ? ? ? ? ? ?hasOwnProperty( )—檢查該屬性是否在當前對象實例中,是 返回 true;若在原型中則返回 false ? ? ? ? ? ? ? ? ? ? ?isPropertyOf( )—檢查傳入的對象是否是另一個對象的原型 ? ? ? ? ? ? ? ? ? ? ?propertyIsEnumberable( )—檢查給定的屬性是否能夠使用for-in語句來枚舉 ? ? ? ? ? ? ? ? ? ? ?toString( )—對象轉換為字符串表示 ? ? ? ? ? ? ? ? ? ? ?valueOf( )—對象轉換為字符串、布爾值、數值表示 ② Array類型— ?例:var a = new Array(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? a[0] = "123"; ? ? ? ? ? ? ? ? ? ? ? ? ? ? a[1] = "456"; ? ? ? ? ? ? ? ? ? ? ? ? ? ? alert(a.length); //打印出 2
特殊對象 function函數類型 — ?可寫成 var test = function(){}或?function test(){}; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?函數沒有重載,總是指向最后定義的function; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?內部特殊對象:arguments: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?①?callee?對函數對象本身的引用,用于匿名函數的遞歸 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?②?caller?只有在函數執行時才有定義,functionName.caller ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??this: ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?全局環境中this指向window ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?事件處理函數中this指向綁定事件的節點 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?構造函數中this指向被創建的對象 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?call()?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?apply()? ? ?
判斷JS中的數據類型 typeof、instanceof、constructor、prototype方法 ? ① typeof: ? ? ? ? ? ? ?例 var a = 123; ? ? ? ? ? ? ? ? ?var b = function(){ ? ? ? ? ? ? ? ? ? ?this.name = "Andy"; ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? alert(typeof a);// number ? ? ? ? ? ? ? ? alert(typeof b); //function ? ? ? ? ? ? ? ? alert(typeof a == "number" );//true ? ? ? ? ? ? ? ? alert(typeof b == "boolean");//false ? ② instanceof (判斷已知對象類型的方法,instanceof 后面一定是對象類型,區分大小寫): ? ? ? ? ? ? ? ? ?例 ?alert(a instanceof Array);//false ? ? ? ? ? ? ? ? ? ? ? alert(b instanceof Function );//true ? ③ constructor (根據對象的constructor判斷): ? ? ? ? ? ? ? ? 例 ?alert(a.constructor === Array);//false ? ? ? ? ? ? ? ? ? ? ?alert(b.condtructor === Function);//true ? ④ prototype : ? ? ? ? ? ? ? ? 例 ? ? alert(Object.prototype.toString.call(a)==="[object Number]");//true ? ? ? ? ? ? ? ? ? ? ? ? alert(Object.prototype.toString.call(b)==="[object String]"); ?//false 擴展: 原文鏈接?http://www.xiabingbao.com/javascript/2015/07/04/javascript-type/ typeof方法: ? ? ? ? ? ①number,?string,?boolean,?function, undefined可以被正確檢測出; ? ? ? ? ? ? ? ? ?②null,array,json,date,reg,error 全部被檢測為 object類型; ? ? ? ? ? ? ? ? ?③typeof 區分不出 json和array類型,輸出都是 object; instanceof 方法: ? ? ? ? ? ? ? ? ?①array、function、json、date、reg、error可以檢測為true; ? ? ? ? ? ? ? ? ?②number、string、boolean、undefined、null檢測為false; ? ? ? ? ? ? ? ? ?③null 和 undefined 檢測不成object或其他類型 ? ? ? ? ? ? ? ? ?因此,要用instanceof 方法,首先判斷 是否為null和undefined類型。 constructor 方法: ? ? ? ? ? ? ? ? ? ? ? ? ? 除了null和undefined ,其他類型均能使用constructor判斷 ? ? ? ? ? ? ? ? ? ? ? ? ? 但被判斷的array必須在當前頁面聲明,例如對應子頁面的Array 用父頁面來判斷,會返回false。 prototype 方法: ? ? ? ? ? ? ? ? ? ? ? ?Object.prototype.toString.call(變量) 可以檢測出所有類型; ? ? ? ? ? ? ? ? ? ? ? ?例如?Object.prototype.toString.call(date); //返回[object Date]
基本數據類型 ① String ?—字符串。 ? ? 若使用var聲明變量,var x =?“Andy”?,x 為字符串。將一個值轉換成字符串:toString( )方法 ? ② Boolean—布爾值。 ? ? 只有兩個值:true或者false;?但true不一定等于1,false也不一定等于0; ? ? 要將一個值轉換為其對應的Boolean值,可以調用類型轉換函數Boolean( ) ? ③?Number —整數、浮點數、NaN. ? ? 其中:任何數值除以0會返回NaN,而NaN除以任何數值也返回NaN; ? ? isNaN( )函數可以確定一個參數是否 “不是數值”。 ? ? 例如:alert(isNaN(“Andy”))// “Andy”不是數值,返回true; ? ? ? ? ? ? alert(isNaN(25))//25是數值,返回false; ? ? ? ? ? ? alert(isNaN(NaN ))//返回true; ps: ??Number()函數的轉換規則: ? ? ? ?字符串:可用parseIn( )和parseFloat( )來轉換成數值。 ? ? ? ?Boolean值:true和false將分別替換為1和0 ? ? ? ?null值:返回0 ? ? ? ?undefined:返回NaN; ? ? ? ?對象:可調用valueOf( )方法,toString()方法 ? ④ Null— 空。 ? ? 如果定義的變量在未來用于保存對象,最好將變量初始化為null; ? ? 例:var a = null; ? ⑤ undefined—一個值:undefined。 ? ? 使用var聲明變量但未對其加以初始化時,這個變量的值就是undefined。 ? ? 例:var a; ? ? ? ? ?alert(a);//undefined ? PS:① null與undefined的區別: ? ? ? ? ?undefined沒有必要顯示設置值,即變量不含有值; ? ? ? ? ?null需要被初始化,用于、保存清空變量 ? ?? ②布爾值、數值、對象、字符串都有toString( )方法,null和undefined沒有此方法。 ?
復合數據類型 ① object類型— 例:var a = new object( ) ? ? ? ? ? ? ? ? ? ? ?屬性和方法: ? ? ? ? ? ? ? ? ? ? ?constructor( )—保存著用于創建當前對象的函數 ? ? ? ? ? ? ? ? ? ? ?hasOwnProperty( )—檢查該屬性是否在當前對象實例中,是 返回 true;若在原型中則返回 false ? ? ? ? ? ? ? ? ? ? ?isPropertyOf( )—檢查傳入的對象是否是另一個對象的原型 ? ? ? ? ? ? ? ? ? ? ?propertyIsEnumberable( )—檢查給定的屬性是否能夠使用for-in語句來枚舉 ? ? ? ? ? ? ? ? ? ? ?toString( )—對象轉換為字符串表示 ? ? ? ? ? ? ? ? ? ? ?valueOf( )—對象轉換為字符串、布爾值、數值表示 ② Array類型— ?例:var a = new Array(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? a[0] = "123"; ? ? ? ? ? ? ? ? ? ? ? ? ? ? a[1] = "456"; ? ? ? ? ? ? ? ? ? ? ? ? ? ? alert(a.length); //打印出 2
特殊對象 function函數類型 — ?可寫成 var test = function(){}或?function test(){}; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?函數沒有重載,總是指向最后定義的function; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?內部特殊對象:arguments: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?①?callee?對函數對象本身的引用,用于匿名函數的遞歸 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?②?caller?只有在函數執行時才有定義,functionName.caller ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??this: ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?全局環境中this指向window ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?事件處理函數中this指向綁定事件的節點 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?構造函數中this指向被創建的對象 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?call()?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?apply()? ? ?
判斷JS中的數據類型 typeof、instanceof、constructor、prototype方法 ? ① typeof: ? ? ? ? ? ? ?例 var a = 123; ? ? ? ? ? ? ? ? ?var b = function(){ ? ? ? ? ? ? ? ? ? ?this.name = "Andy"; ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? alert(typeof a);// number ? ? ? ? ? ? ? ? alert(typeof b); //function ? ? ? ? ? ? ? ? alert(typeof a == "number" );//true ? ? ? ? ? ? ? ? alert(typeof b == "boolean");//false ? ② instanceof (判斷已知對象類型的方法,instanceof 后面一定是對象類型,區分大小寫): ? ? ? ? ? ? ? ? ?例 ?alert(a instanceof Array);//false ? ? ? ? ? ? ? ? ? ? ? alert(b instanceof Function );//true ? ③ constructor (根據對象的constructor判斷): ? ? ? ? ? ? ? ? 例 ?alert(a.constructor === Array);//false ? ? ? ? ? ? ? ? ? ? ?alert(b.condtructor === Function);//true ? ④ prototype : ? ? ? ? ? ? ? ? 例 ? ? alert(Object.prototype.toString.call(a)==="[object Number]");//true ? ? ? ? ? ? ? ? ? ? ? ? alert(Object.prototype.toString.call(b)==="[object String]"); ?//false 擴展: 原文鏈接?http://www.xiabingbao.com/javascript/2015/07/04/javascript-type/ typeof方法: ? ? ? ? ? ①number,?string,?boolean,?function, undefined可以被正確檢測出; ? ? ? ? ? ? ? ? ?②null,array,json,date,reg,error 全部被檢測為 object類型; ? ? ? ? ? ? ? ? ?③typeof 區分不出 json和array類型,輸出都是 object; instanceof 方法: ? ? ? ? ? ? ? ? ?①array、function、json、date、reg、error可以檢測為true; ? ? ? ? ? ? ? ? ?②number、string、boolean、undefined、null檢測為false; ? ? ? ? ? ? ? ? ?③null 和 undefined 檢測不成object或其他類型 ? ? ? ? ? ? ? ? ?因此,要用instanceof 方法,首先判斷 是否為null和undefined類型。 constructor 方法: ? ? ? ? ? ? ? ? ? ? ? ? ? 除了null和undefined ,其他類型均能使用constructor判斷 ? ? ? ? ? ? ? ? ? ? ? ? ? 但被判斷的array必須在當前頁面聲明,例如對應子頁面的Array 用父頁面來判斷,會返回false。 prototype 方法: ? ? ? ? ? ? ? ? ? ? ? ?Object.prototype.toString.call(變量) 可以檢測出所有類型; ? ? ? ? ? ? ? ? ? ? ? ?例如?Object.prototype.toString.call(date); //返回[object Date]
jquery中$.type的實現
? ?檢測出所有類型,和?Object.prototype.toString.call(date)方法很像,輸出結果為prototype方法輸出的第二個參數,即:
? ?$.type(num); ?//number
? ?$.type(nul); ?// null
轉載于:https://www.cnblogs.com/emory/p/5008482.html
總結
以上是生活随笔為你收集整理的JavaScript学习笔记(一)—— 数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式 - 依赖倒置原则
- 下一篇: JavaScript开发中几个常用知识点