变量、作用域、内存---part3

231 阅读2分钟

确定数据类型(检测类型) 我们之前提过了要检测目前的数据类型究竟是哪一种js中已经提供了typeof操作符

但是我们也看到了有两种数据类型用这种简单的方式貌似无法区分就,就是我们黑框中勾出来的类型这两种array类型和object类型,js也为了这两个单独提供了一个方法isArray

typeof是我们比较有利的助手,但是在检测引用类型的值得时候我们更希望简单明了的可以得到,而不是一次一次的去判断,我们再介绍一种方式instanceof,这种方式是根据原型链来识别(接下来会提到什么叫原型链)

我们现在已经介绍了三种方式去鉴定变量的类型,总有一款适合你

执行环境和作用域

我们这一章先开一个头,执行环境又称为执行上下文是js中最为重要的一个概念,执行环境决定了所有的变量和函数访问其他变量的权力,每一个执行环节都有一个变量对象,环境中所有可以访问到的变量都会在变量对象的这个{}中产生,我们的代码是无法直接访问到这个变量对象的,但是解析器会在之后的代码解析的环节利用到这个变量对象,如果变量对象中没有的对象说明你没法在当前的执行环节中获取到
每一个函数都有一个变量对象(执行环境),当开始解析一个函数的时候,函数的变量对象就会被推入一个执行栈中,当函数的变量对象被利用完(函数解析完毕)的时候栈内的环境会被弹出,说了这么多大家有没有晕,简单的画一下图