对于 JavaScript
的程序员来说,闭包是一个难懂又必须征服的概念。在介绍闭包前,先来看看和闭包息息相关的变量作用域和变量的生存周期。
变量的作用域
变量的作用域无非就是两种:全局变量和局部变量。当在函数中声明一个变量的时候,如果用关键字 var
来声明此变量,那么它就是局部变量,如果没有 var
那么就会成为全局变量。一般不建议用这种方式定义全局变量。而是用 var
将变量声明在函数的外面。
1 | var name = 'bubuzou.com'; // 全局变量 |
次访问
对于 JavaScript
的程序员来说,闭包是一个难懂又必须征服的概念。在介绍闭包前,先来看看和闭包息息相关的变量作用域和变量的生存周期。
变量的作用域无非就是两种:全局变量和局部变量。当在函数中声明一个变量的时候,如果用关键字 var
来声明此变量,那么它就是局部变量,如果没有 var
那么就会成为全局变量。一般不建议用这种方式定义全局变量。而是用 var
将变量声明在函数的外面。
1 | var name = 'bubuzou.com'; // 全局变量 |
次访问
跟别的语言不同的是,JavaScript
的 this
总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑定的,而非函数被声明时的环境。
除去不常用的 eval
和 with
语句的情况,具体到实际应用中,this
的指向大致可分为以下4种:
作为对象的方法调用
当作为对象的方法进行调用的时候,this
指向该对象:
1 | var obj = { |
次访问
数组字面量提供了一种非常方便的创建数组的方法。一个数组表达式是在一对方括号内包围零个或多个用逗号分隔的值的表达式。
数组的第一个值的属性名是 0
。
1 | var empty = []; |
在大多数语言中,一个数组的所有元素都要求是相同的类型。js
允许数组包含任意混合类型的值:
1 | var misc = ['string', 98.6, true, false, null]; |
次访问
这里有一个例子,用来匹配 URL 的正则表达式。
1 | var url = 'http://bubuzou.com:80/goodparts?q#fragment' |