JavaScript有两种数据类型:简单数据类型(基本数据类型)和复杂数据类型(引用类型)。
简单数据类型:Nndefined,Null,Boolean,Number和String
复杂数据类型:object
undefined类型只有一个值,即特殊的undefined。在使用var和let声明变量但未对其加以初始化时,这个变量的值就是undefined。
var msg; let num; console.log(msg) // undefined console.log(num) // undefined console.log(msg == num) // true var a = undefined let b = undefined console.log(a) // undefined console.log(b) // undefined
Boolean类型是使用最多的一种类型,该类型只有两个字面值:true和false。这两个值与数字值不是一回事,因此true不一定等于1,而false也不一定等于0.(true和false是区分大小写的)
各数据类型对Boolean类型的转换:
var num1 = 100; var num2 = 0; var str1 = ‘qwer‘; var str2 = ‘‘; var bool1 = false; var bool2 = true; var und = undefined; var nul = null; var arr1 = [1,2,3]; var arr2 = []; var obj1 = {}; var obj2 = {a: 1}; console.log(Boolean(num1)) // true console.log(Boolean(num2)) // false console.log(Boolean(str1)) // true console.log(Boolean(str2)) // false console.log(Boolean(bool1)) // false console.log(Boolean(bool2)) // true console.log(Boolean(und)) // false console.log(Boolean(nul)) // false console.log(Boolean(arr1)) // true console.log(Boolean(arr2)) // true console.log(Boolean(obj1)) // true console.log(Boolean(obj2)) // true
Null类型只有一个值,即特殊值null。从逻辑角度来看,null值表示一个空对象指针,这也正是使用typeof操作符检测null值时会返回‘object’的原因。
如果定义一个空变量准备用来保存对象,那么最好将该变量初始化为null。
Number类型有两种类型的数值:整数型和浮点类型
所谓的浮点类型,就是该数值必须包含一个小数点,并且小数点后面必须至少有一位数字。
var float1 = 1.01
var float2 = 0.1
var float3 = .3 // 有效,但不推荐
由于保存浮点数值需要的内存空间是保存整数值得两倍,因此ECMAScript会将浮点数值转换为整数值。如果小数点后没有跟任何数字,那么这个数值就可以作为整数来保存。如果浮点数值本身表示的就是一个整数,那么该值也会被转换成整数。
对于那些极大或极小值,可以使用科学计数法表示(e)。用e表示法表示的数值等于e前面的数值乘以10的指数次幂(e后面的数值)
var num = 3.2345e7 // 32345000
由于内存限制,ECMAScript并不能保存世界上所有的数值,能保存的最小数值是5e-324,最大数值是1.7976931348623157e+308。如果超过最大值则会被自动转化为Infinity,小于最小值会被转化为-Infinity。他们将不再参与下一次的计算。
NaN,即非数值是一个特殊的数值,这个值用于表示一个本来要返回数值的操作数未返回数值的情况。涉及到NaN的操作都会返回NaN,其次,NaN与任何值都不相等,包括本身。
有三个函数可以把非数值转换为数值1:Number()、parseInt()和parseFloat()。第一个函数可以用于任何数据类型的转换,另外两个函数专门用于把字符串转换成数值。
Number()的转换规则:
parseInt()在转换字符串的时候,更多是看其是否符合数值模式,他会忽略字符串前面的空格,知道找到第一个非空字符。如果第一个字符不是数字字符或负号,将返回NaN,如果第一个字符是数字字符,将继续解析下面的字符,直至解析完所有的字符或者遇到一个非数字字符。
var num1 = parseInt(‘12345hjk‘); // 12345 var num2 = parseInt(‘‘); // NaN var num3 = parseInt(‘0xA‘); // 10 var num4 = parseInt(22.2); // 22 var num5 = parseInt(‘070‘); // 70 var num6 = parseInt(‘70‘); // 70 var num7 = parseInt(‘0xf‘); // 15
String类型多由0个或多个16位的Unicode字符逐层的字符序列。字符串可以有单引号或双引号表示。
字符字面量
字面量 | 含义 |
\n | 换行 |
\t | 制表 |
\b | 空格 |
\r | 回车 |
\f | 进纸 |
\\ | 斜杠 |
\‘ | 单引号 |
\" | 双引号 |
字符串特点:字符串是不可变得,字符串一旦创建,他们的值就不能改变,要改变某个变量保存的字符串,首先要销毁原来的字符串,然后在把新的字符串赋值给这个变量。
如果要把其他类型的值转换成字符串,可以使用toString()方法。null和undefined类型的值不可以使用。但是可以使用String()方法
在ECMAScript中对象就是一组数据和功能的集合。对象的创建方法有两种,第一种是通过new关键字后跟要创建的对象类型的名称来创建,第二种是直接给变量赋上一个空的对象或数组。
var o = new Object()
object的每一个实例都具有一下的方法和属性:
Symbol类型是es6新添加的一种基本类型的数据,它表示的是独一无二的值。它通过symbol函数来生成,凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。
要想检测一个变量是基本数据类型或者是复杂数据类型可以使用typeof进行检测。使用typeof检测数据类型时null、对象和数组都是返回的object
var a = null // object var b = 12 // number var c = ‘123‘ // string var d = true // boolean var e = undefined // undefined var f = new Object() // object var g = Symbol() // symbol var h = new Array() // object console.log(typeof a) console.log(typeof b) console.log(typeof c) console.log(typeof d) console.log(typeof e) console.log(typeof f) console.log(typeof g) console.log(typeof h) console.log(h instanceof Array) // true console.log(f instanceof Object) // true console.log(a instanceof Object) // false console.log(h instanceof Object) // true
原文:https://www.cnblogs.com/peiyanh/p/9558846.html