第4、5章 JS变量相关
这一章将js的很重要的几个问题阐述清楚了。
变量分为基本类型和引用类型,分别位于栈内存和堆内存中。可以给引用类型添加属性。引用类型和Java的对象引用是一个意思,函数传递也是一样的,其实就是个地址。检测类型使用 instanceof。注意null is instanceof Object
执行环境及作用域链,这个和C/C++没什么区别,只是要注意最外部的是全局环境,在其他环境中总有一个arguments对象。 延长作用域链的两种情况: try-catch的catch中带有包含被抛出的错误对象的声明,with语句中包含添加对象。这些变量都是只读的,因此在这些语句中声明的变量都会被添加到所在执行环境中去。另外,js没有块级作用域! 如果初始化一个没有声明的变量,该变量会被添加到全局环境。js垃圾收集与java是一样的。
Object类型。
可以用构造函数 new Object()定义,也可以用 对象字面量。对象属性可以用.访问,也可以用方括号语法,方括号语法可以用将属性放在变量中。
function htmlEscape(text){return text.replace(/[<>"&]/g, function(match, pos, orginalText){switch(match) {case "<":return "<";case ">":return ">";case "&":return "&";case "\"":return """;}}}内置对象。
global对象和window对象。在全局声明的对象都会成为window的属性。
eval将传入的参数作为ECMAScript语句来解析,并将结果插入到原位置!
Math对象提供较强的计算能力