JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?
JavaScript 定义了几种数据类型?
JavaScript定义了6种数据类型:
数值(number)
、字符串(string)
、布尔值(boolean)
、undefined
、null
、对象(object)
在ES6中又新增了第七种类型
Symbol
原始类型与复杂类型
概念
- 原始类型
原始类型也称为基本类型或简单类型,原始类型包含;
数值(number)
、字符串(string)
、布尔值(boolean)
、undefined
、null
5种
对应的,他们的值也被称作原始值 - 复杂类型
复杂类型也称作引用类型,对象(object)
就是复杂类型
复杂类型的值被称为复杂值
特性
- 原始值
原始值是表示javascript中可用的数据或信息的最底层形式或最简单形式。原始类型的值被称为原始值,是因为它们是不可细化的。也就是说,数字是数字,字符是字符,布尔值则是true或false,null和undefined就是null和undefined。这些值本身很简单,不能表示由其他值组成的值
原始值明显的特征是不可更改,任何方法都无法更改一个原始值 - 复杂值
复杂值可以由很多不同类型的javascript对象组成。复杂对象其在内存中的大小是未知的,因为复杂对象可以包含任何值,而不是一个特定的已知值
对象和原始值不同,它们是可变的,它们的值是可修改的
如何判断一个变量是否是数字、字符串、布尔、函数?
使用typeof运算符
typeof是一个元运算符,放在一个运算数之前,运算数可以是任意类型
它的返回值是一个字符串,该字符串可以说明运算数的类型
==与===有什么区别
两者都是比较运算符,将会返回一个布尔值,表示是否满足比较条件
==
相等
===
严格相等
举例说明
var a = 1
var b = '1'
console.log(a == b)
返回值为true
近似相等,经过数据类型转换后,两边相等,即为true
var a = 1
var b = '1'
console.log(a == b)
返回值为false
严格相等,不仅需要值相等,还需要数据类型一直,所以为false
在日常使用中遇到需要判断是否相等,推荐尽量使用===
,严格相等运算符没有歧义,不太会因为疏忽造成意想不到的错误
以下代码的输出结果是?为什么?
console.log(1+1);
console.log("2"+"4");
console.log(2+"4");
console.log(+"4");
输出结果及原因
console.log(1+1);
2 //在两个操作数都是数字的时候,会做加法运算,1+1即为2
console.log("2"+"4");
24 //两个参数都是字符串或在有一个参数是字符串的情况下会把另外一个参数转换为字符串做字符串拼接
console.log(2+"4");
24 //两个参数都是字符串或在有一个参数是字符串的情况下会把另外一个参数转换为字符串做字符串拼接
console.log(+"4");
4 //在只有一个字符串参数的时候会尝试将其转换为数字,这里的4是数值(number)而非字符串(string)
以下代码的输出结果是?
var a = 1; //声明a是一个number,且将1赋值给a
a+++a; //此处涉及到运算符优先级?不论是`(a++)+a`还是`a+(++a)`的执行顺序,得到的返回值均为数字3
typeof a+2; //涉及到运算符优先级,优先执行了'typeof'运算符,得到的返回值是字符串‘number’,而一个字符串+数字,则进行拼接得到‘number2’
网友评论