1、JavaScript的世界里一切皆对象
JavaScript变量的两种类型:基本类型(string、number、undefined、null、boolean)及引用类型。在JavaScript里一切引用类型皆对象。
2、JavaScript作用域链
当一个变量在当前作用域下找不到该变量的定义,则JavaScript引擎会沿着作用域链往上直到找到全局作用域.及就近赋值.
3、JavaScript变量在内存的存储
栈区变量标识符 | 栈区变量值 | 堆区变量标识符 | 堆区变量值 |
---|---|---|---|
str | ‘hello world’ | XX | XX |
number | 4 | XX | XX |
obj | 堆地址 | obj1 | {name:’hello world’} |
4、null对象
null对象是一个空对象,在堆区有值,只是值为空
5、JavaScript传递参数是按照值传递的
函数传参实质:外部的变量复制到函数参数的变量里.归根于变量复制:基本类型的复制与引用对象的复制.
基本类型的复制是值的复制,不会影响变量本身。引用对象的复制是堆地址的复制,会影响变量本身.
6、执行环境栈
JavaScript的每一个要被执行的函数都会先把函数的执行环境压入到执行环境栈里,函数执行完毕后,这个函数的执行环境会被执行环境栈弹出.
函数执行步骤:
函数执行环境被压入执行环境栈–>在上下文变量里构造一个作用域链,保证执行环境里有权访问的变量和函数是有序的–>执行函数
参考文章:
<a href=”http://www.codeceo.com/article/javascript-problems.html”>JavaScript语法里一些难点问题汇总</a>