文章标题

变量、作用域

基本类型和引用类型

基本类型:值保存
* Undefined、Null、Boolean、Number 和 String
对象类型:引用保存,可以增加动态属性
* Object

执行环境及作用域

  • 每个函数有一个执行环境
  • 嵌套的执行环境构成作用域链
  • 标识符解析沿着作用域链一层层搜索
  • try-catch 会创建作用域
  • with会创建作用域
  • 没有块级作用域

函数

  • 函数是对象
  • 没有重载 :
    以 像传递参数一样把一个函数传递给另一个函数,而且可以将一个函数作为另一个函数的结果返回
  • 函数声明 VS 函数表达式
    解析器会率先读取函数声明,并使其在执行 9 任何代码之前可用(可以访问);至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真 正被解释执行
  • 函数内部属性
    arguments
    arguments.callee
    this:this 引用的是函数据以执行的环境对象——或者也可以说是 this 值(当在网页的全局作用域中调用函数时, this 对象引用的就是 window)
    caller:ECMAScript 5 也规范化了另一个函数对象的属性
  • 函数属性&方法
    length:希望接收的命名参数的个数
    prototype:对于 ECMAScript 中的引用类型而言,prototype 是保存它们所有实例方法的真正所在。换句话说,诸如 toString()和 valueOf()等方法实际上都保存在 prototype 名下,只不过是通过各自对象的实例访 问罢了。在创建自定义引用类型以及实现继承时,prototype 属性的作用是极为重要的(第 6 章将详 细介绍)。在 ECMAScript 5 中,prototype 属性是不可枚举的,因此使用 for-in 无法发现。
    apply()和 call():在特定的作 用域中调用函数,实际上等于设置函数体内 this 对象的值。首先,apply()方法接收两个参数:一个 是在其中运行函数的作用域,另一个是参数数组。其中,第二个参数可以是 Array 的实例

在严格模式下,未指定环境对象而调用函数,则 this 值不会转型为 window。 除非明确把函数添加到某个对象或者调用 apply()或 call(),否则 this 值将是 undefined。

  • 单体内置对象
    Global:属于任何其他对象的属性和方法,最终都是它的属性和方法。事实上,没有全 局变量或全局函数;所有在全局作用域中定义的属性和函数,都是 Global 对象的属性。encodeURI、encodeURIComponent、eval、window

面向对象

?????

函数表达式

函数声明 VS 函数表达式

函数声明

  • 函数声明提升,执行代码之前先读取函数声明

函数表达式

  • 表达式是匿名函数,结果是一个值,可以赋予变量

递归

“`javascript

““

闭包

概念

有权访问另一个函数作用域中变量的函数。
创建闭包常见的方式,是在一个函数内部创建另一个函数。

你可能感兴趣的:(javascript)