判断变量的数据类型

Object.prototype.toString.call()

判断变量类型的所有方法中,该方法可以说是判断的最完全的方法,所有的数据类型都可以判断,在使用Object.prototype.toString.call()方法判断变量类型时,需要判断的变量会放在小括号内

var str = "abc";
Object.prototype.toString.call(str); // [object String]

打印出来的字符串中第一个是call方法所在的原型实例是object,第二个就是我我们进行判断的变量的数据类型,这个方法可以判断任何的数据类型

var num= 123;
Object.prototype.toString.call(num); // [object Number]
var bool= true;
Object.prototype.toString.call(bool); // [object Boolean]
var n = null;
Object.prototype.toString.call(n); // [object Null]
var un = undefined;
Object.prototype.toString.call(un); // [object Undefined]
var func = function(){};
Object.prototype.toString.call(func); // [object Function]
var obj= {};
Object.prototype.toString.call(obj); // [object Object]

以及ES6的新变量Symbol也可以进行判断

var syb= Symbol("abc");
console.log(Object.prototype.toString.call(syb)); // [object Symbol]

typeof

typeof方法可以说是我们接触的比较早的判断变量的方法了,这个方法可以判断基本数据类型

typeof "abc" // "string"
typeof 123 // "number"
typeof true // "boolean"
typeof undefined// "undefined"

但是在判断null类型时,与其他判断结果产生了冲突

typeof null // object
typeof [] // object
typeof {} // object

结果为"function",也有冲突

typeof function(){} // "function"
typeof Symbol // "function"

Symbol虽然被称为ES6的新变量,但它本身是一个构造函数,我们在声明变量的时候可以感受到

var syb = Symbol("abc")

Symbol后面加上了一个小括号,后面带小括号只有在调用函数的时候呀才回出现,而且这个地方判断变量还有一个新的情况

typeof syb // "symbol"

当Symbol加入了参数时,typeof的结果就变成了"symbol"

constructor

通过变量的构造函数也可以得到变量的类型是什么,但是不能判断null和undefined,因为这两个数据类型不能通过实例化得到,所以不存在构造函数

[].constructor // ƒ Array() { [native code] }
{}.constructor // ƒ Object() { [native code] }
(123).constructor // ƒ Number() { [native code] }
"abc".constructor // ƒ String() { [native code] }
true.constructor // ƒ Boolean() { [native code] }
function(){}.constructor // ƒ Function() { [native code] }
Symbol.constructor // ƒ Function() { [native code] }
Symbol("abc").constructor // ƒ Symbol() { [native code] }

这里也要注意function(){}和Symbol的构造函数也都是f Function(){[native code]}

function(){}.constructor // ƒ Function() { [native code] }
Symbol.constructor // ƒ Function() { [native code] }

原文地址:https://www.cnblogs.com/Function-cnblogs/p/11904234.html

时间: 2024-10-09 10:29:46

判断变量的数据类型的相关文章

go的变量、常量以及判断变量的数据类型

1.定义变量 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } span.s1 { font: 12.0px ".PingFang SC" } var 变量名 类型 =value 或 变量名 :=123   (省略var和自动识别数据类型写法) 2.多个变量定义参数 2.1 var a,b,c int a,b,c =1,2,3 2.2 a,b

Python学习--判断变量的数据类型

1 import types 2 3 aaa = 0 4 print type(aaa) 5 if type(aaa) is types.IntType: 6 print "the type of aaa is int" 7 if isinstance(aaa,int): 8 print "the type of aaa is int" 9 10 bbb = 'hello' 11 print type(bbb) 12 if type(bbb) is types.St

type,isinstance判断一个变量的数据类型

type,isinstance判断一个变量的数据类型 import types type(x) is types.IntType # 判断是否int 类型 type(x) is types.StringType #是否string类型 ......... -------------------------------------------------------- 超级恶心的模式,不用记住types.StringType import types type(x) == types(1) # 判

JavaScript判断变量数据类型

一.JS中的数据类型 1.数值型(Number):包括整数.浮点数. 2.布尔型(Boolean) 3.字符串型(String) 4.对象(Object) 5.数组(Array) 6.空值(Null) 7.未定义(Undefined) 二.1.数值型(number) 比较常用的判断方法是: function isNumber(val){             return typeof val === 'number';         } 2.判断变量val是不是布尔类型 function

php变量的数据类型

一.类型 标量类型: 布尔型 整型 浮点型 字符串 复合类型:  数组  对象 特殊类型:  资源 null    1. 布尔型 true  false 以下值认为是false  其他值都认为是true; 布尔值false 整型值0 浮点的0 空字符串和字符串0 空数组 空对象(只适用于php4) 特殊类型null    2. 整型  正整数和负整数  0  整型的最大值  相对于32位操作系统 我们的最大值是 2147483647 整型的最小值  相对于32位操作系统 我们的最小值是 - 21

变量的数据类型

变量的数据类型 一个变量的类型,由变量的值来决定. 基本数据类型:字符型(String).数值型(Number).布尔型(Boolean).Undefined(未定义型).Null(空型) 复合数据类型:数组(Array).对象(Object).函数(Function) 注意:基本数据类型和复合数据类型的主要区别:基本数据类型的值只有一个,而复合数据类型的值可以多个 1.数值型数据(Number) 数值型数据包含整型和浮点型(小数). Var a = 100; Var a = 0; Var a

Swift基础语法(常量变量、数据类型、元组、可选、断言等)

Swift 是 iOS 和 OS X 应用开发的一门新语言.然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的. Swift 的类型是在 C 和 Objective-C 的基础上提出的,Int是整型:Double和Float是浮点型:Bool是布尔型:String是字符串.Swift 还有两个有用的集合类型,Array和Dictionary,请参考集合类型. 就像 C 语言一样,Swift 使用变量来进行存储并通过变量名来关联值.在 Sw

第二章 变量、数据类型和运算符

1 变量和数据类型 1.1 变量 电脑使用内存来记忆计算时所使用的数据 内存如何存储数据:内存像旅馆一样 开房间(单人间.双人间.总统套间);告诉内存在存放何种类型的数据 入住;存入数据 使用内存做什么:存放数据 怎么找到存入的数据? 根据内在地址可以找到内存空间的位置,但内存地址不好记 通过变量名可以简单快速地找到它存储的数据 1.2 数据类型 1.2.1 Java数据 那么Java中有哪些常用的数据类型呢? 正如前面所讲到的"根据数据的类型为其在内存中分配一块空间",不同的数据在存

JavaSE学习笔记(二)——变量和数据类型

一.  Java中的变量 1.1           字面值的概念 字面值是内存中的一块空间,这块空间存放有值,并且这个值是有类型的.如:在内存中的某个空间存放着100的值,类型是整型.在内存的另一个空间存放着true,代表真,是布尔类型. 例子:字面值举例 public class VariableTest01 { public  static void main(String[] args){ //  整型字面值 System.out.println(100); //  字符串类型字母值 S