@aymax
2016-07-14T07:43:21.000000Z
字数 1571
阅读 867
高设笔记
- 基本类型值指的是简单的数据段:Undefined、Null、Boolean、Number 和 String
- 引用类型值指那些可能由多个值构成的对象
.xxx
来给对象添加属性或方法
var person = new Object();
person.name = "Nicholas";
alert(person.name); //"Nicholas"
复制变量值
- 基本类型的是复制
- 引用类型的和 java 一样
传递参数
- ECMAScript 中所有函数的参数都是按值传递的
- 可以把 ECMAScript 函数的参数当成局部变量。
检测类型
基本类型 - typeof
在在 Safari 5 及之前版本和 Chrome 7 及之前版本中使用 typeof
检测正则表达式时,会返回 function,在 IE 和 Firefox 中则返回 Object
引用类型 - instanceof
result = variable instanceof constructor
如果变量是给定引用类型的实例(是类的对象),那么 instanceof
操作符就会返回 true。例:
alert(person instanceof Object); // 变量 person 是 Object 吗?
alert(colors instanceof Array); // 变量 colors 是 Array 吗?
alert(pattern instanceof RegExp); // 变量 pattern 是 RegExp 吗 ?
新名词
执行环境(execution context)
- 执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为。每个执行环境都有一个 与之关联的变量对象变量对象(variable object)
- 环境中定义的所有变量和函数都保存在这个对象中作用域链
- 只能向上查询变量和函数名活动对象
- ``````
函数参数也被当作变量来对待,因此其访问规则与执行环境中的其他变量相同
outer();
function outer() {
var a = 5;
iner();
function iner() {
a = 4;
console.log(a); // 4
}
console.log(a); // 4
}
可以看出,通过作用域链访问参数是直接访问的
- try-catch 语句的 catch 块
创建一个新的变量对象,其中包含的是被抛出的错误对象的声明- with 语句
将指定的对象添加到 作用域链中
function buildUrl() {
var qs = "?debug=true";
with(location){
var url = href + qs;
}
return url;
}
没有块级作用域
不像其他语言,js 中 if
/with
/for
等函数没有块级作用域,他们定义的变量在父函数解析的时候会添加到父函数的活动对象里面
(关于作用域讲得很详细的文章:JavaScript作用域)