变量类型及检测

Posted 纸 飞机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量类型及检测相关的知识,希望对你有一定的参考价值。

基本数据类型(7个)

又称简单数据类型,在内存中以固定的大小存储在栈中,按值访问。

number 数值

var x1 = 34.00;
var x2 = 34;
var x3 = 123e5;

String 字符串

var a = 'hello'; 
var b = "world";

boolean 布尔值

var x = true;
var y = false;

null 空值

var person = null;
//Null类型的值只有一个,就是null,专门用来表示为一个空的对象

undefined 未定义 

var b;
//Undefined类型的值只有一个,就是 undefined,表示未定义,即声明了未赋值

Symbol ES6新增,表示独一无二的值

let s1 = Symbol('foo'); 
let s2 = Symbol('foo'); 
s1 === s2// false

bigint ES10新增,表示任意精度的整数

//不受 Number类型的安全值范围的限制。生成一个 BigInt类型的值只需在任意整数后加上n做后缀,或通过全局函数Bigint(number)将 Number类型转化为Bigint类型。 
console.log(BigInt(123) === 123n)//true

复杂数据类型(3个)

又称引用类型或对象类型。常见有array、 function、object等。存储在堆中,且大小不固定,同时在栈中会存储其指向堆地址的指针,按引用来访问。

Object 类型

var obj = new Object();

Array 类型

var arr = new Array();

Function 类型

function add(a,b)) return a+b;
var add = new Function("a","b","return a+b");

注意:

为了便于操作基本类型值,ECMAScript提供了3个特殊的引用类型(基本包装类型): Boolean、Number和String。它们不是new出来的,而是在读取基本类型值的时候,js自动创建的对应包装对象,其能够调用一些方法来操作基本类型。它们只存在于一行代码的执行瞬间,然后立即被销毁,所以不能在运行时为其添加属性和方法

'1,2'.split();//["1,2"]

typeof 检测

typeof对于nul/和Array不起作用

console.log(typeof "");//string 
console.log(typeof 1);//number 
console.log(typeof true); //boolean 
console.log(typeof null);//object
console.log(typeof undefined);//undefined 
console.log(typeof []);//object 
console.log(typeof Function());//function
console.log(typeof {});//object
console.log(typeof Symbol());//Symbol

instanceof 检测

console.log([] instanceof Array);//true
console.log({} instanceof Object);//true
console.log(Function() instanceof Function);//true

Object.prototype.toString.call() 检测

var a = Object.prototype.toString; 
console.log(a.call("aaa"));//[object String]
console.log(a.call(1));//[object Number]
console.log(a.call(true));//[object Boolean]
console.log(a.call(null));//[object Null]
console.log(a.call(undefined));//[object Undefined]
console.log(a.call([]));//[object Array]
console.log(a.call(Function())); //[object Function]
console.log(a.call({}));//[object object]

以上为 “变量类型及检测” 的全部总结!

以上是关于变量类型及检测的主要内容,如果未能解决你的问题,请参考以下文章

十条实用的jQuery代码片段

Bash的变量类型

(转) Java中的负数及基本类型的转型详解

C++用来检测数据类型的声明工具源码

使用 Pygments 检测代码片段的编程语言

Android - 检测投射设备的类型