JavaScript-基础入门.0008.JavaScript作用范围
基本类型值:
说明: 基本类型变量主要在栈内存中保存变量名+变量值,变量赋值时解析器如果认定此值为基本类型,则分配固定大小的空间,基本类型包括Undefined, Null, Boolean, Number, String的字面值对象,称为基本类型对象
1 2 3 4 5 6 |
|
引用类型值:
说明: 引用类型变量由于内存大小不固定,但是内存地址固定,所以将变量名+数据所在堆内存地址保存在栈内存中,变量值保存在堆内存中,当查询引用类型变量时,先从栈中读取内存地址,然后通过地址找到堆内存中的值,引用类型包括Object,Array,Date,RegExp,Function,基本包装类型(String, Boolean, Number)对象和[]/{}生成的数组与对象等,称为引用类型对象
1 2 3 4 5 6 7 8 |
|
传递参数:
说明: Js中所有函数的参数都是按值传递,传递引用参数和引用传参不是一个概念,函数支持传递基本参数和引用参数,但是参数不会按引用传递,如果是引用传递,则函数里的变量将会是全局变量,在外部可以访问
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
检测类型:
说明: 检测基本类型对象可用typeof表达式,此表达式会打印对应类型对象的类型字符串表示,但是引用类型对象如果使用typeof检测基本返回的都是object,而我们更希望知道引用类型对象的原始类型,可使用instanceof表达式来判断
1 2 3 4 |
|
注意: instanceof只支持引用类型对象类型检测,对于检查基本类型的值时,会返回false
作用环境:
说明: 执行环境定义了变量或函数有权访问的其它数据,每个执行环境都关联一个对象,全局执行环境被认为是window对象,因此所有的全局变量和函数都是作为window对象的属性和方法创建,而局部变量也有一个类似window的变量对象,环境中定义的变量和函数都保存在这个对象中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
说明: 每个函数在调用时都会创建自己的执行环境,当执行到这个函数时,函数的环境就会被推到环境栈中去执行,然后执行后又在栈中弹出,把控制权交给上一级的执行环境,而且在函数被调用的时候会自动创建如上图的作用域链,作用域中查询变量时由作用域前端开始查找,逐步向外查询,因此强烈不建议不使用var初始化变量,因为这种方法可能导致各种意外
注意: 当执行环境中所有代码执行完毕,该环境被销毁,保存在其中的所有变量和函数也随之销毁,如全局变量环境下,需要程序执行完毕或网页被关闭才会销毁
技巧: try-catch语句和catch块和with语句都有延长作用域的功能,它们会将指定的对象添加到离自己最近的作用域链中,如下简单演示一个with构建url函数
1 2 3 4 5 6 7 8 9 |
|
内存问题:
说明: JavaScript具有自动垃圾收集机制,但是垃圾回收机制是周期运行的,一般来说确保占用最小内存可以获得更好性能,那么优化内存的最佳方案就是一旦数据不再有用,就标记删除(设置为null)
1 2 3 |
|
登录乐搏学院官网http://www.learnbo.com/
或关注我们的官方微博微信,还有更多惊喜哦~
本文出自 “满满李 - 运维开发之路” 博客,请务必保留此出处http://xmdevops.blog.51cto.com/11144840/1851415
转载于:https://my.oschina.net/learnbo/blog/858151