数据类型
1、数据类型
ECMAScript中有5中简单数据类型(也称为基本数据类型): Undefined、Null、Boolean、Number、String。还有1中复杂的数据类型————Object,Object本质上是由一组无序的名值对组成的。
其中Undefined、Null、Boolean、Number都属于基本类型。Object、Array和Function则属于引用类型,String(引用类型)有些特殊,具体的会在下面展开分析。
typeof 操作符
由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.
通过typeof关键字,对这5种数据类型会返回下面的值(以字符串形式显示)u ---------- 如果值未定义 Undefined
boolean ---------- 如果这个值是布尔值 Boolean
string ---------- 如果这个值是字符串 String
number ---------- 如果这个值是数值类型 Number
object ---------- 如果这个值是对象或 null Object(Array,Function....)
需要注意的是typeof null返回为object,因为特殊值null被认为是一个空的对象引用。
虽然Boolean类型的字面值只有两个,但JavaScript中所有类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以调用类型转换函数Boolean()
一般可以用来判断一个字符串是empty or null or undefined:
| 数据类型 | 转换为true的值 | 转换为false的值 |
|---|---|---|
| Boolean | true | false |
| String | 任何非空的字符串 | ""(空字符串) |
| Number | 任何非0数值(包括无穷大) | 0和NAN |
| Object | 任何对象 | null |
| Undefined | 不适用 | undefined |
使用!!操作符转换布尔值
!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false;
对null与undefined等其他用隐式转换的值,用!操作符时都会产生true的结果,所以用两个感叹号的作用就在于将这些值转换为“等价”的布尔值;
var foo; alert(!foo);//undifined情况下,一个感叹号返回的是true; console.log(!!foo);//返回false var o = null; alert(!o);//null情况下,一个感叹号返回的也是true; alert(!!o); //返回false; var o={flag:true}; var test=!!o.flag;//等效于var test=o.flag||false; alert(test);
Number:
这种类型用来表示整数和浮点数值,还有一种特殊的数值,即NaN(非数值 Not a Number)。这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,任何数值除以0都会导致错误,从而停止代码执行。但在JavaScript中,任何数值除以0会返回NaN,因此不会影响其他代码的执行。
NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括NaN本身。例如,下面的代码会返回false。
alert(NaN == NaN); //false
1.1 字符串
var str = new String('abc'); console.log(typeof str);//object var str = 'abc'; console.log(typeof str);//string
注意,typeof 变量 如果值是"string" 的话,也就是这个变量是字符串,在Javascript中,字符串是基本类型,而在C#或Java中,字符串是引用类型,但是Javascript中的String是引用类型,因为它是Javascript中定义好的基本包装类型,在C#中,String跟string其实是一样的。
- 正常字符串用单引号,双引号包裹
- 转义字符 \ \' \n \t ( \u4e2d (中) \u#### Unicode字符)(\x41 A Ascii码)
- 多行字符串编写
//tab 上面esc键下面 `
var mes = `hello
world
你好呀`
4.模板字符串
var name = 'Joyce';


1.2 数组
//检测是否为数组 // 1.instanceof 运算符,用来检测 var arr = []; console.log(arr instanceof Array); // 2. Array.isArray() console.log(Array.isArray(arr));









1.3 对象



js中对对象取值的两种方式:





调用对象的元素的两种方式:person.name/person['name']




浙公网安备 33010602011771号