起因
基于自己个人对于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中的新功能。