js資料型別判斷

2021-10-05 14:51:52 字數 3086 閱讀 2440

// object.prototype.tostring.call(引數).slice(8,-1)   

// let b = object.prototype.tostring;

// console.log(b.call(2));                                  // [object number]

// console.log(b.call(true).slice(8, -1));                   // boolean

// console.log(b.call('str').slice(8, -1));                  // string

// console.log(b.call().slice(8, -1));                     // array

// console.log(b.call(function () ).slice(8, -1));        // function

// console.log(b.call({}).slice(8, -1));                     // object

// console.log(b.call(undefined).slice(8, -1));              // undefined

// console.log(b.call(null).slice(8, -1));                   // null

// 1. typeof判斷

// console.log(typeof 1);               // number

// console.log(typeof true);            // boolean

// console.log(typeof 'str');           // string

// console.log(typeof );              // object     陣列的資料型別在 typeof 中被解釋為 object

// console.log(typeof function () );    // function

// console.log(typeof {});              // object

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

// console.log(typeof null);            // object     null 的資料型別被 typeof 解釋為 object

// 總結:數字number,布林值boolean,字串string,函式function,物件object,undefined 這一些資料型別在typeof 下都被精準的解釋,

// 只有陣列和null的資料型別不起作用

// 2. instanceof

// console.log(1 instanceof number);                    // false

// console.log(new number(1) instanceof number);        // true

// console.log(true instanceof boolean);                // false 

// console.log(new boolean(true) instanceof boolean);   // true

// console.log('str' instanceof string);                // false  

// console.log(new string('str') instanceof string);    // true

// console.log( instanceof array);                    // true

// console.log(function ()  instanceof function);    // true

// console.log({} instanceof object);                   // true    

// console.log(undefined instanceof undefined);         // 瀏覽器不識別

// console.log(null instanceof null);                   // 瀏覽器不識別  

// 總結:只有引用資料型別(array,function,object)被精準判斷,

// 其他(數值number,布林值boolean,字串string)字面值不能被instanceof精準判斷

// 3. constructor

// console.log((1).constructor === number);                 // true

// console.log((true).constructor === boolean);             // true

// console.log(('str').constructor === string);             // true

// console.log(().constructor === array);                 // true

// console.log((function () ).constructor === function); // true

// console.log(({}).constructor === object);                // true

// function fn() ;

// fn.prototype = new array();

// var f = new fn();

// console.log(f.constructor === fn);    // false

// console.log(f.constructor === array); // true 

// 總結:用costructor來判斷型別看起來是完美的,然而,如果我建立乙個物件,更改它的原型,這種方式也變得不可靠了

js判斷資料型別

1 typeof 形如 var x xx typeof x string 返回型別有 undefined string number boolean function object 缺點 對於object型別不能細分是什麼型別 優點 對空null的判斷 undefined 的應用 2 instanc...

js判斷資料型別

了解js的都知道,有個typeof 用來判斷各種資料型別,有兩種寫法 typeof typeof 如下例項 typeof 2 輸出 number typeof null 輸出 object typeof 輸出 object typeof 輸出 object typeof function 輸出 fu...

js判斷資料型別

1 判斷是否為陣列型別 2 判斷是否為字串型別 3 判斷是否為數值型別 isnan 變數 如果為true就是數字型別 注意這個函式一般針對數字型別來判斷是否值為nan,若變數為非數字型別,則先轉化為數字型別再做判斷,用此函式時,別忘考慮空串和空格 這倆轉化為數字是0 4 判斷是否為日期型別 5 判斷...