最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于javascript中的typeof和類型判斷(詳解)

 更新時間:2017年10月27日 08:20:09   作者:熊仔其人  
下面小編就為大家?guī)硪黄趈avascript中的typeof和類型判斷(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

typeof

ECMAScript 有 5 種原始類型(primitive type),即 Undefined、Null、Boolean、Number 和 String。我們都知道可以使用typeof運算符求得一個變量的類型,但是對引用類型變量卻只會返回object,也就是說typeof只能正確識別基本類型值變量。

var a = "abc";
console.log(typeof a); // "string"
var b = 123;
console.log(typeof b); // "number"
var c = true;
console.log(typeof c); // "boolean"
var d = null;
console.log(typeof d); // "object"
var f = undefined;
console.log(typeof f); // "undefined"
var g;
console.log(typeof g); // "undefined"

console.log(typeof x); // "undefined"

您也許會問,為什么 typeof 運算符對于 null 值會返回 "object"。這實際上是 JavaScript 最初實現(xiàn)中的一個錯誤,然后被 ECMAScript 沿用了。現(xiàn)在,null 被認(rèn)為是對象的占位符,從而解釋了這一矛盾,但從技術(shù)上來說,它仍然是原始值。

最后一個比較奇怪,typeof一個不存在的變量x居然返回了"object"而不是"undefined"。

我們在來如下代碼:

var a = function() { };
console.log(typeof a); // "function"
var b = [1,2,3]; 
console.log(typeof b); // "object"
var c = { };
console.log(typeof c); // "object"

對于數(shù)組和對象都返回"object",因此我們?nèi)粘i_發(fā)中一個常見需求就是如何判斷變量是數(shù)組還是對象。

類型判斷

類型判斷,一般就是判斷是否是數(shù)組,是否是空對象。這是針對這個需求,我日常用過或見過的判斷方法

判斷是否是數(shù)組

有數(shù)組:var a = [1,2,3,4,5];

方法一:

toString.call(a); // "[object Array]"方法二:

a instanceof Array; //true方法三:

a.constructor == Array; //true 第一種方法比較通用,也就是Object.prototype.toString.call(a)的簡寫。

instanceof和constructor判斷的變量,必須在當(dāng)前頁面聲明的,比如,一個頁面(父頁面)有一個框架,框架中引用了一個頁面(子頁面),在子頁面中聲明了一個a,并將其賦值給父頁面的一個變量,這時判斷該變量,Array == object.constructor會返回false;

var a = [1,2,3,4,5];
console.log(toString.call(a)); // "[object Array]"      
console.log(a instanceof Array); //true
console.log(a.constructor == Array); //true

判斷是否是空對象

有變量:var obj = {};

方法一:

JSON.stringify(obj); // "{}"通過轉(zhuǎn)換成JSON對象來判斷是否是空大括號

方法二:

if(obj.id){ //如果屬性id存在....}這個方法比較土,大多數(shù)人都能想到,前提是得知道對象中有某個屬性。

方法三:

function isEmptyObject(e) { 
var t; for (t in e) return !1; return !0 } //trueisEmptyObject(obj);
//falseisEmptyObject({ "a":1, "b":2});

這個方法是jQuery的isEmptyObject()方法的實現(xiàn)方式。

以上這篇基于javascript中的typeof和類型判斷(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • js實現(xiàn)日期天數(shù)、時分秒的倒計時完整代碼

    js實現(xiàn)日期天數(shù)、時分秒的倒計時完整代碼

    這篇文章主要給大家介紹了關(guān)于js實現(xiàn)日期天數(shù)、時分秒的倒計時的相關(guān)資料,實現(xiàn)倒計時功能首先是得到目標(biāo)時間,然后用當(dāng)前時間減去目標(biāo)時間,最后將時間差傳化為天數(shù)、時、分、秒,需要的朋友可以參考下
    2023-11-11
  • async/await實現(xiàn)Promise.all()的方式

    async/await實現(xiàn)Promise.all()的方式

    Promise.all() 方法接收一個 promise 的 iterable 類型的輸入,并且只返回一個Promise實例,并且輸入的所有 promise 的 resolve 回調(diào)的結(jié)果是一個數(shù)組,對async/await實現(xiàn)Promise.all()相關(guān)知識感興趣的朋友一起看看吧
    2022-12-12
  • 使用requestAnimationFrame實現(xiàn)精準(zhǔn)倒計時功能

    使用requestAnimationFrame實現(xiàn)精準(zhǔn)倒計時功能

    實現(xiàn)精準(zhǔn)倒計時對于活動預(yù)告、限時優(yōu)惠和賽事計時等場景非常重要,常用的倒計時方法包括使用JavaScript的setInterval和setTimeout,但這些方法精度有限,為提高精度,本文介紹使用requestAnimationFrame實現(xiàn)精準(zhǔn)倒計時功能,感興趣的朋友一起看看吧
    2024-09-09
  • JS的時間格式化和時間戳轉(zhuǎn)換函數(shù)示例詳解

    JS的時間格式化和時間戳轉(zhuǎn)換函數(shù)示例詳解

    這篇文章主要介紹了JS的時間格式化和時間戳轉(zhuǎn)換函數(shù),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • 關(guān)于javascript原型的修改與重寫(覆蓋)差別詳解

    關(guān)于javascript原型的修改與重寫(覆蓋)差別詳解

    下面小編就為大家?guī)硪黄P(guān)于javascript原型的修改與重寫(覆蓋)差別詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • 原生js實現(xiàn)彈出層登錄拖拽功能

    原生js實現(xiàn)彈出層登錄拖拽功能

    這篇文章主要為大家詳細(xì)介紹了使用原生JavaScript實現(xiàn)彈出層登錄拖拽功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 使用BootStrap實現(xiàn)用戶登錄界面UI

    使用BootStrap實現(xiàn)用戶登錄界面UI

    本文給大家介紹使用BootStrap實現(xiàn)用戶登錄界面UI,布局風(fēng)格采用左右各一半的風(fēng)格設(shè)計,非常不錯,具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • 教你用javascript實現(xiàn)隨機(jī)標(biāo)簽云效果_附代碼

    教你用javascript實現(xiàn)隨機(jī)標(biāo)簽云效果_附代碼

    下面小編就為大家?guī)硪黄棠阌胘avascript實現(xiàn)隨機(jī)標(biāo)簽云效果_附代碼。小編覺得很實用,現(xiàn)在分享給大家。給大家一個參考
    2016-03-03
  • JavaScript實現(xiàn)年歷效果

    JavaScript實現(xiàn)年歷效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)年歷效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 在JavaScript中對字符串進(jìn)行索引、拆分和操作的示例代碼

    在JavaScript中對字符串進(jìn)行索引、拆分和操作的示例代碼

    字符串是一個包含一個或多個字符的序列,可以由字母、數(shù)字或符號組成,在本教程中,我們將學(xué)習(xí)字符串原始值和String對象之間的區(qū)別,字符串的索引方式,如何訪問字符串中的字符,以及字符串常用的屬性和方法,需要的朋友可以參考下
    2024-06-06

最新評論

昭觉县| 北流市| 六安市| 杭锦后旗| 凌海市| 苍山县| 霍邱县| 丰顺县| 宕昌县| 徐州市| 遂昌县| 香河县| 渑池县| 横山县| 深州市| 淳化县| 商河县| 岗巴县| 庆阳市| 北京市| 湘西| 永仁县| 双峰县| 广元市| 兴业县| 承德县| 宿迁市| 五常市| 申扎县| 保靖县| 溧阳市| 枣庄市| 赞皇县| 公安县| 金乡县| 沙洋县| 山东| 石门县| 和硕县| 旌德县| 红原县|