Javascript 数据类型(Symbol数据类型的介绍)
- Javascript中,数据类型有 2 种,一类是基本数据类型储存在栈中(也称为简单数据类型或原始值):Undefined、Null、Boolean、Number和 String(ES6中新引入了一种值Symbol)。还有一类是引用数据类型,储存在堆中。
基本数据类型
- number类型 :数字类型,这种类型使用 IEEE754 格式来表示整数和浮点数值(浮点数值在某些语言中也被称为双精度数值)。
var num = 123;
console.log(typeof num);//number
- string 类型:字符串类型,字符串可以由双
引号(")或单引号(’)表示,字符串是不可变的,一旦创建,值就不能改变。
var str = "我是字符串";
console.log(typeof str);//string
- boolean 类型:布尔类型,有两个值,true和false,表示真和假。
var flag = true;
console.log(typeof flag);//boolean
- null 类型:从逻辑角度来看,null 值表示一个空对象指针,而这也正是使用 typeof 操作符检测 null 值时会返回"object"的原因。
var obj = null;
console.log(typeof obj);//object
- undefined 类型:在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined。
var a;
console.log(typeof a);//undefined
实际上,undefined 值是派生自 null 值的,因此 ECMA-262 规定对它们的相等性测试要返回 true;
alert(null == undefined); //true
- Symbol 类型:表示独一无二的值。一般作为对象的键(key),使用Symbol类型的属性 取值时 用 obj[xm] 不能用obj.xm
var sym = Symbol();
var obj = {
'name': 'zm',
[sym]: 'xh',
[Symbol('age')]: 23
}
对象的Symbol属性不会被遍历出来(可以用来保护对象的某个属性),Object.getOwnPropertySymbols 方法会返回当前对象的所有 Symbol 属性,返回数组
let id = Symbol( "id" );
let obj = {
[id]: '110',
[Symbol( 'name' )]: 'zm'
};
let arr = Object.getOwnPropertySymbols( obj );
console.log( arr ); //结果:[Symbol( id ),Symbol( name )]
虽然这样保证了Symbol的唯一性,但我们不排除希望能够多次使用同一个symbol值的情况。
let s1 = Symbol('name');
let s2 = Symbol('name');
console.log( s1 === s2 ); // false
官方提供了全局注册并登记的方法:
let name1 = Symbol.for('name'); //检测到未创建后新建
let name2 = Symbol.for('name'); //检测到已创建后返回
console.log(name1 === name2); // true
通过symbol对象获取到参数值:
let a1 = Symbol.for('name1');
let a2 = Symbol.for('name2');
console.log(Symbol.keyFor(a1)); // 'name1'
console.log(Symbol.keyFor(a2)); // 'name2'
更详细的信息可看 >>> Symbol
引用数据类型
又称为对象类型,主要有三种 ” Array、Object、function “,这里暂不过多介绍,后面有空再更新
var arr = [];//数组
var obj = {};//对象
var fn = function(){};//函数
typeof操作符
鉴于 ECMAScript 是松散类型的,因此需要有一种手段来检测给定变量的数据类型——typeof 就是负责提供这方面信息的操作符。对一个值使用 typeof 操作符可能返回下列某个字符串:
- “undefined”——如果这个值未定义;
- “boolean”——如果这个值是布尔值;
- “string”——如果这个值是字符串;
- “number”——如果这个值是数值;
- “object”——如果这个值是对象或 null;
- “function”——如果这个值是函数。
版权声明:本文为qq572069832原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。