收藏本站 收藏本站
積木網首頁 - 軟件測試 - 常用手冊 - 站長工具 - 技術社區
首頁 > JavaScript > JavaScript技巧 > 正文

首頁 - PHP - 數據庫 - 操作系統 - 游戲開發 - JS - Android - MySql - Redis - MongoDB - Win8 - Shell編程 - DOS命令 - jQuery - CSS樣式 - Python - Perl

Access - Oracle - DB2 - SQLServer - MsSql2008 - MsSql2005 - Sqlite - PostgreSQL - node.js - extjs - JavaScript vbs - Powershell - Ruby

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

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 最初實現中的一個錯誤,然后被 ECMAScript 沿用了。現在,null 被認為是對象的占位符,從而解釋了這一矛盾,但從技術上來說,它仍然是原始值。

最后一個比較奇怪,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"

對于數組和對象都返回"object",因此我們日常開發中一個常見需求就是如何判斷變量是數組還是對象。

類型判斷

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

判斷是否是數組

有數組: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判斷的變量,必須在當前頁面聲明的,比如,一個頁面(父頁面)有一個框架,框架中引用了一個頁面(子頁面),在子頁面中聲明了一個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); // "{}"通過轉換成JSON對象來判斷是否是空大括號

方法二:

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

方法三:

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

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

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

javascript瀏覽器用戶代理檢測腳本實現方法
以下是完整的用戶代理字符串檢測腳本,包括檢測呈現引擎、平臺、Windows操作系統、移動設備和游戲系統。varclient=function(){//呈現引擎varengine={ie:0,gecko:0

JavaScript模擬實現封裝的三種方式及寫法區別
前言繼承是使用一個子類繼承另一個父類,那么子類可以自動擁有父類中的所有屬性和方法,這個過程叫做繼承!JS中有很多實現繼承的方法,今天我給

Popup彈出框添加數據實現方法
本文實例為大家分享了Popup彈出框添加數據的具體代碼,供大家參考,具體內容如下邏輯窗口P1中顯示一組數據,并提供一個添加按鈕點擊按鈕,彈出新

本周排行

更新排行

強悍的草根IT技術社區,這里應該有您想要的! 友情鏈接:b2b電子商務
Copyright © 2010 Gimoo.Net. All Rights Rreserved  京ICP備05050695號
36选7走势图大全 江西十一选五遗漏数据彩乐乐 江西福彩快3走势图 彩票平台top排行榜 pc蛋蛋幸运28稳赚软件 排列5开奖结果今天晚今晚排五开奖号 天津11选5 平台 南洋股份东方财富股吧 2019正规股票配资平台 网上快3平台能作弊吗 五分pk全天免费计划 河北体彩11选五在哪买 300797股票行情 湖北十一选五前三直 甘肃十一选五任三预测 哪个软件可以买江西快3 北京快中彩号码统计器