在JavaScript中不需要提前声明变量的类型,在程序运行过程中,变量类型会自动定义。
其中,包括了6中原始数据类型与3种引用数据类型,原始数据类型包括:字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol;引用数据类型包括:对象(Object)、数组(Array)、函数(Function)。
原始数据类型
String:JavaScript的字符串类型用于表示文本数据。在字符串中的每个元素占据了字符串的位置,与java中的字符串定义相同。字符串被引号包围,可使用单引号或双引号。
(1)JavaScript中的字符串一经创建,是不可修改的;
(2)使用String.substr()获取字符串的子串;
(3)通过“+”或者String.concat()连接两个字符串;
Number:JavaScript 中只有一种数字类型:基于 IEEE 754 标准的双精度 64 位二进制格式的值(-(263-1) 到 263-1)。能够表示整数、浮点数,包括一些带符号的值如:+Infinity,-Infinity和NaN(非数值,Not-a-Number);极大或极小的数字可以通过科学(指数)计数法来书写如var y=123e5;(相当于12300000)
Boolean:布尔表示一个逻辑实体值,包括true和false
null:Null 类型只有一个值,即null,值null特指对象的值未设置,可以通过将变量的值设置为 null 来清空变量
undefined:一个没有被赋值的变量会有个默认值undefined,是全局对象的一个属性,全局作用域的一个变量;
Symbol:Symbol值通过Symbol函数生成,表示独一无二的值,在Symbol函数前不可以使用new命令;
(1)每一个Symbol值都是不相等的,这意味着Symbol值可以作为标识符,用于对象的属性名,就能保证不会出现同名的属性;
(2)有一个Object.getOwnPropertySymbols方法,可以获取指定对象的所有 Symbol 属性名;
(3)Symbol.for()帮助重新使用同一个Symbol值,它接受一个字符串作为参数,然后搜索有没有以该参数作为名称的Symbol值。如果有,就返回这个Symbol值,否则就新建并返回一个以该字符串为名称的Symbol值;Symbol.keyFor()返回一个已登记的 Symbol 类型值的key;
引用数据类型
Object:Object构造函数为给定值创建一个对象包装器。如果给定值是null或undefined,将会创建并返回一个空对象,否则,将返回一个与给定值对应类型的对象。当以非构造函数形式被调用时,Object等同于new Object();Object包括了Function、Array、date等。
常见的对象常量如下所示:
var student= {
name:"Reet",
lastName:"Chen" ,
whatsName:function(){
alert(this.name+" "+this.lastName);
},
}
实际上在JS中的对象就是一个以键值对形式存储属性的一个集合,每一个属性有一个特定的名称,并与名称相对应的值。
Object构造函数常用方法:
Object.assign() :通过复制一个或多个对象来创建一个新的对象。
Object.create() : 使用指定的原型对象和属性创建一个新对象。
Object.defineProperty() : 给对象添加一个属性并指定该属性的配置
Object.freeze() : 冻结对象,其他代码不能删除或更改任何属性
使用 typeof 操作符判断对象类型
如
var a = 'dog';
<script type="text/javascript">
document.write(typeof(a));
</script>
上述返回string.