起因

 基于自己个人对于js的不太熟练的的原因,重新学习了js,在js数据类型这里,因此想深挖一下,一门语言的深度,是无论学多少遍都不会到底的,所以只能不断的总结和归纳.

JS数据类型:基础概念

首先明确一下观点

JS的数据类型有8种。

在ES5的时候,我们认知的基础数据类型确实是 5种。:Number、String、Boolean、undefined、Null。
外加1种。复杂数据类型:object。

但随着学习时间和学习深度的增加

了解到ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。

谷歌67版本中还出现了一种 bigInt

以上,是我能了解到就是着8种数据类型,以至于未来会不会出现新的数据类型,那只能未来可期!

JS数据类型:详细介绍

JS数据类型:JS 的数据类型有几种?

  8种。Number、String、Boolean、Null、undefined、object、symbol、bigInt。

JS数据类型:Object 中包含了哪几种类型?

 其中包含了Data、function、Array等。这三种是常规用的。

1.Number类型

Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)两种值。
浮点数将会自动转换为整数。

var num = 1.00;
console.log(num);//1,自动转换为整数

浮点数的最高精度是17位(关于浮点数计算会产生舍入误差问题,其他有些编程语言也会出现类似情况。)

var num1 = 0.1;
var num2 = 0.2;
console.log(num1 + num2);//0.30000000000000004

NaN:非数字类型。特点:① 涉及到的 任何关于NaN的操作,都会返回NaN ② NaN不等于自身。

var ab = "a1";
console.log(ab/10);// NaN
console.log(NaN == NaN);// false;

isNaN()函数,用于判断是否是一个非数字类型。如果传入的参数是一个非数字类型,那么返回true;否则返回false;

数值转换

Number()//转型函数,可以用于任何数据类型;

parseInt()//将值转换为整型,用的比较多;

parseFloat()//将值转换为浮点型。

2.String类型

字符串类型中的单引号与双引号的作用效果完全一样。

字符串有length属性。可以取得字符串的长度。var str = “hello”;console.log(str.length);//5

字符串的值是不可变的。要改变一个字符串的值,首先要销毁原来的字符串,再用另一个包含新值的字符串去填充该字符串。

var lang = “java”;
lang += “script”;

字符串转换

String();//将数据转换程字符串型

tostring();//将数据转换程字符串型

3.Boolean类型

该类型只有两个值,true和false

fasle:0," ", ' ',null,undefined NaN;
true:除了以上数据以外其他情况都是true;

Boolean类型转换

转换为boolean值: 转型函数Boolean(),将某个值转换为Boolean类型。

4.null类型

null类型被看做空对象指针,null类型也是空的对象引用。只有一个值,即null值,所以,在你 用typeof 操作符去检测null类型的值时,结果是object类型。

如果你定义了一个变量,但是想在以后把这个变量当做一个对象来用,那么最好将该对象初始化为null值。

5.Undefined类型

只有一个值,即undefined值。使用var声明了变量,但未给变量初始化值,那么这个变量的值就是undefined

引用数据类型

ECMAjavascript中的对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。创建object类型的实例并为其添加属性(或)方法,就可以自定义创建对象。
object 的每个实例都有下列属性和方法:

constructor:保存着用于创建当前对象的函数。(构造函数)constructor就是object();

hasOwnProperty(propertyName):用于检查给定的当前属性在当前对象实例中)而不是在实例原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字稚串形式指定(例如:o.hasOwnProperty(“name”))。

isPrototypeOf(object):用于检查传入的对象是否是传入对象原型。

propertyIsEnumerable(propertyName):用于检查给定属性是否能够用for-in语句。与hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定。

toLocaleString( ):返回对象的字符串表示,该字符串与执行环境的地区对应。

toString( ):返回对象的字符串表示。

valueOf( ):返回对象的字符串、数值或者布尔值表示。通常与toString( )方法的返回值得相同。

ECMAJS中object是所有对象的基础,因些所有对象都具有这些基本的属性和方法。

7、 Symbol 类型

Symbol 类型的对象永远不相等,即便创建的时候传入相同的值。因此,可以用解决属性名冲突的问题(适用于多少编码),做为标记。

typeof Symbol() === 'symbol'//true
Symbol('key')!== Symbol('key')//true
Symbol('key')=== Symbol('key')//false

8、BigInt 类型

Javascript 中的任意精度整数,可以安全存储和操作大整数。即始超出 Number 能够表示的安全整数范围。是 chrome 67中的新功能。