js中判斷是什麼型別的資料,js中判斷是什麼型別的資料typeof

時間 2021-07-08 22:21:27

1樓:泡泡糖

typeof算是最常見的了,使用它會返回一個字串,適合函式物件和基本型別(js中的基本型別:number、string、boolean、null、undefined、object[物件])的判斷。

console.log("測試number:"+typeof 1);  console.log("測試string:"+typeof "str");

console.log("測試false:"+typeof false);  console.log("測試null:"+typeof null);

console.log("測試undefined:"+typeof undefined);  console.

log("測試object:"+typeof new object());

console.log("測試object:"+typeof new array());

console.log("看看typeof nan是啥:"+typeof nan);

console.log("我想看看陣列[1,2,3]型別:"+typeof [1,2,3]);

console.log("看看function是啥:"+typeof function(){});

2樓:奔跑的窩牛的家

如何判斷js中的資料型別:typeof、instanceof、 constructor、 prototype方法比較

如何判斷js中的型別呢,先舉幾個例子:

var a = "iamstring.";

var b = 222;

var c= [1,2,3];

var d = new date();

var e = function();

var f = function();

最常見的判斷方法:typeof

alert(typeof a) ------------> string

alert(typeof b) ------------> number

alert(typeof c) ------------> object

alert(typeof d) ------------> object

alert(typeof e) ------------> function

alert(typeof f) ------------> function

其中typeof返回的型別都是字串形式,需注意,例如:

alert(typeof a == "string") -------------> true

alert(typeof a == string) ---------------> false

另外typeof 可以判斷function的型別;在判斷除object型別的物件時比較方便。

判斷已知物件型別的方法: instanceof

alert(c instanceof array) ---------------> true

alert(d instanceof date)

alert(f instanceof function) ------------> true

alert(f instanceof function) ------------> false

注意:instanceof 後面一定要是物件型別,並且大小寫不能錯,該方法適合一些條件選擇或分支。

根據物件的constructor判斷: constructor

alert(c.constructor === array) ----------> true

alert(d.constructor === date) -----------> true

alert(e.constructor === function) -------> true

注意: constructor 在類繼承時會出錯

eg,function a(){};

function b(){};

a.prototype = new b(); //a繼承自b

var aobj = new a();

alert(aobj.constructor === b) -----------> true;

alert(aobj.constructor === a) -----------> false;

而instanceof方法不會出現該問題,物件直接繼承和間接繼承的都會報true:

alert(aobj instanceof b) ----------------> true;

alert(aobj instanceof b) ----------------> true;

言歸正傳,解決construtor的問題通常是讓物件的constructor手動指向自己:

aobj.constructor = a; //將自己的類賦值給物件的constructor屬性

alert(aobj.constructor === a) -----------> true;

alert(aobj.constructor === b) -----------> false; //基類不會報true了;

通用但很繁瑣的方法: prototype

alert(object.prototype.tostring.call(a) === ‘[object string]’) -------> true;

alert(object.prototype.tostring.call(b) === ‘[object number]’) -------> true;

alert(object.prototype.tostring.call(c) === ‘[object array]’) -------> true;

alert(object.prototype.tostring.call(d) === ‘[object date]’) -------> true;

alert(object.prototype.tostring.call(e) === ‘[object function]’) -------> true;

alert(object.prototype.tostring.call(f) === ‘[object function]’) -------> true;

大小寫不能寫錯,比較麻煩,但勝在通用。

通常情況下用typeof 判斷就可以了,遇到預知object型別的情況可以選用instanceof或constructor方法,簡單總結下,挖個坑,歡迎補充!

js如何判斷變數的資料型別

3樓:匿名使用者

檢測簡單的資料型別的方法

typeof方法用於檢測簡單的資料型別如typeof 12instanceof的例項方法檢測如 instanceof array // true

arr.constructor == array判斷arr的建構函式是否為陣列,如果是則arr是陣列

array.isarray()判斷是否是陣列精確判斷資料型別object.prototype.tostring.call(arr)

4樓:一年孤獨

使用typeof關鍵字, 可以得到資料型別的字串表示(全部為小寫):

var  a = 0, b=  true, c="text", d = , e=[1,2];

var f = function(){}, h = null, i

if(typeof a === "number") a = a*2;

typeof a; // "number"

typeof b; // "boolean"

typeof c; // "string"

typeof d; // "object"

typeof e; // "object"

typeof f; // "function"

typeof h; // "object"

typeof i; // "undefined"

可以看出對於null, , 返回的型別都是"object", 可進一步判斷:

var o = {};

if(typeof o === "object")else if(array.isarray(o))else

}一般情況下, 我們不需要全面判斷資料型別, 例如往往只要判斷是否為***資料型別, 用以上方法足夠, 但顯然上面的方法在判斷object物件時有點繁瑣, 所以大多數js類庫中提供有擴充套件方法, 這些庫一般採用的方法如下:

object.prototype.tostring.call(100);    //"[object number]"

object.prototype.tostring.call('100');   //"[object string]"

object.prototype.tostring.call(undefined);    //"[object undefined]"

object.prototype.tostring.call(true);    //"[object boolean]"

object.prototype.tostring.call(null);    //"[object null]"

object.prototype.tostring.call({});    //"[object object]"

object.prototype.tostring.call();    //"[object array]"

object.prototype.tostring.call(function () );    //"[object function]"

在js中是什麼意思,js中 是什麼意思

東東程式猿 本身沒有意思,jquery的裡面定義過 所以可以用,這就好比,你定義了一個function,寫法如下 function id 這樣你的js 中也可以用類似jquery中的寫法,id 嘿嘿,如果沒有引入jquery,自己這樣定義一個function,其實是很方便的。 jquery裡才有 原...

js中和的區別是什麼,js 中“ ”是什麼意思

大野瘦子 1 比較結果上的區別 返回同型別值比較結果。不同型別不比較,且無結果,同型別才比較。2 比較過程上的區別 比較時,若型別不同,會償試轉換型別。只有相同型別才會比較。3 用法 都是用來比較值的。js中的!的用法 var num 1 var str 1 var test 1 test num ...

js是什麼意思,JS是什麼意思

js就是指lol中的劍聖,js有兩個流派,乙個是adjs,乙個是apjs。 懶羊羊 js 翻譯過來就是奸商 大部分指 奸商!網路用語 js,劍聖,無極劍聖,lol吧 雨花石 也可以是賈斯汀比伯唱never say never 的搭檔賈登史密斯的簡稱啊 js什麼意思 全球一體化,語言一致化,學習一律化...