javascript变量松散类型:特定时间用于保存特定值的一个名字。
全局变量和局部变量:
var message="hi";//当前作用域中的局部变量
function test(){
message="hi";//全局变量
}
}
基本类型值:可操作保存在变量中的值
- undefined:使用var声明当未初始化
- null:空对象指针
- boolean:true,false
- number:整数,浮点数;parseInt() 将字符串转换成整数
- string:16位Unicode字符组成的字符序列,js中字符串是不可变的,改变某个变量保存的字符串,需先销毁原来字符串,然后用另一个包含新值的字符串填充该变量。
引用类型值:复制时只是复制指针,这两个变量实际引用一个对象
- object:其它所有实例的基础(相当于java.lang.Object)
- 构造函数Constructor
- hasOwnProperty(propertyName):用于检查给定属性在当前对象实例中是否存在
- isPrototypeOf(object):检查传入的对象是否是另一个对象的原型
- 。。。
- Array:提供一些有趣方法,例如实现栈,队列或者排序,迭代等。
- Data
- RegExp:支持正则表达式
- Function
- 基本包装类型
- 单体内置对象:有EMCAScript实现提供的,不依赖宿主环境的对象,这些对象在程序执行前已经存在了,不需要显式的实例化内置对象。
- global全局对象:eval()方法,将传入的参数当作实际的js语句来解析,然后把执行结果插入原位置。
- math对象
js中函数参数传递按值传递,参数在内部是用一个数组来表示的,在函数体中通过arguments对象来访问此数组,从而获取传递个函数的每一个参数。由于参数是数组的原因,函数不能实现重载。
执行环境与作用域:
执行环境execution context----关联----变量对象ariable object:定义变量或函数有权访问的其他数据
- 全局执行环境:window对象,浏览器退出时被销毁
- 函数执行环境:执行流进入一个函数时,函数的环境被推入一个环境栈中,函数执行之后,栈将环境弹出,将控制权返回给之前执行环境
作用域链scope chain:保证对执行环境有权访问的所有变量和函数的有序访问。
作用域链的前端始终是当前执行的代码所在环境的变量对象。
js中不存在块级作用域:即{}