数据类型
数据类型分为两大类:
基本(值)类型:
- Number:任意数值
- String:任意字符串
- Bollean:true/false
- undefined:undefinednull
- null:null
对象(引用)类型
- Object:任意对象
- Array:特别的对象类型(内部数据有序)
- Function:特别的对象类型(可执行)
类型判断
typeof
可以区别:数值、字符串、布尔值、undefined、Function
不能区别:null与对象、一般对象与数组
注:返回的是一个字符串表达形式
instanceof
专门用来判断对象数据类型:Object、Array、Function
===
可以用来判断null与undefined
常见问题
- undefined与null的区别?
undefined代表没有赋值,null代表赋值了,只是值为null。
- 什么时候给变量赋值为null?
var a = null //表示a指向一个对象,但对象此时还没有确定。
a = null //让a指向的对象称为垃圾对象
数据、变量与内存
三者关系:内存是一个容器用来存储程序运行需要的操作;变量是内存的标识,通过变量可以找到对应的内存,进而操作内存中的数据。
常见问题
- var a = xxx,a内存中保存的是什么?
若xxx是一个基本数据,则保存的是这个数据;若xxx是一个对象,则保存的是对象的地址值;若xxx是一个变量,则保存的是xxx的内存内容(可能是基本数据,也可能是地址值)。
- 在js调用函数传递变量参数时,是值传递还是引用传递?
值传递,无论是一个基本数据类型还是对象,传递的都是变量的值,只是这个值可能是基本数据或者是地址数据。
IIFE(immediately-Invoked Function Expression,立即调用函数表达式)
作用:
- 避免向全局作用域中添加变量和函数,因此可以避免多人开发中全局变量和函数的命名冲突
- IIFE中定义的任何变量与函数,都会在执行结束时被销毁,减少闭包占用内存。