Javascript 数据类型(Symbol数据类型的介绍)

Javascript 数据类型(Symbol数据类型的介绍)

  • Javascript中,数据类型有 2 种,一类是基本数据类型储存在栈中(也称为简单数据类型或原始值):Undefined、Null、Boolean、Number和 String(ES6中新引入了一种值Symbol)。还有一类是引用数据类型,储存在堆中。

基本数据类型

  1. number类型 :数字类型,这种类型使用 IEEE754 格式来表示整数和浮点数值(浮点数值在某些语言中也被称为双精度数值)。
var num = 123;
console.log(typeof num);//number
  1. string 类型:字符串类型,字符串可以由双
    引号(")或单引号(’)表示,字符串是不可变的,一旦创建,值就不能改变。
var str = "我是字符串";
console.log(typeof str);//string
  1. boolean 类型:布尔类型,有两个值,true和false,表示真和假。
var flag = true;
console.log(typeof flag);//boolean
  1. null 类型:从逻辑角度来看,null 值表示一个空对象指针,而这也正是使用 typeof 操作符检测 null 值时会返回"object"的原因。
var obj = null;
console.log(typeof obj);//object
  1. undefined 类型:在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined。
var a;
console.log(typeof a);//undefined

实际上,undefined 值是派生自 null 值的,因此 ECMA-262 规定对它们的相等性测试要返回 true;

alert(null == undefined); //true
  1. 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版权协议,转载请附上原文出处链接和本声明。