这篇文章属于是一点大杂烩。,因为我整理了一下JavaScript的一些语法,我发现有几个知识点是很散的,我原本想每个知识点都整理成一篇文章,但是后来发现没多少可写的,所以我就打算将这些大杂烩的知识点放到这里来。
语句和表达式
JavaScript 程序是一行一行执行的。一般情况下,每一行就是一个语句。
语句(statement)是为了完成某种任务而进行的操作,比如下面就是一行赋值语句。
var a = 1 + 3;
这条语句先用var命令,声明了变量a,然后将1 + 3的运算结果赋值给变量a。
1 + 3叫做表达式(expression)。语句和表达式的区别在于,语句主要为了进行某种操作,一般情况下不需要返回值;表达式则是为了得到返回值,一定会返回一个值。凡是 JavaScript 语言中预期为值的地方,都可以使用表达式。比如,赋值语句的等号右边,预期是一个值,因此可以放置各种表达式。
区块
JavaScript 使用大括号,将多个相关的语句组合在一起,称为“区块”(block)。
在 JavaScript 语言中,区块往往用来构成其他更复杂的语法结构,比如for、if、while、function等。
标识符
标识符指的是用来识别各种值的合法名称。最常见的标识符就是变量名,以及后面要提到的函数名。
this关键字
介绍
this关键字是一个非常重要的语法点。毫不夸张地说,不理解它的含义,大部分开发任务都无法完成。反正我在看代码的时候,基本上都是有this关键字的,如果不懂this关键字,对于很多变量的值你都不知道,那如果你连变量的值你都不知道,那肯定是不行的,基本你就看不懂代码了。
this关键字可以用在很多地方,但不管是什么地方,this都有一个共同点:它总是返回一个对象。
简单说,this就是属性或方法“当前”所在的对象。
this.property
上面代码中,this就代表property属性当前所在的对象。
下面是一个实际的例子。
var person = {
name: '张三',
describe: function () {
return '姓名:'+ this.name;
}
};
person.describe()
// "姓名:张三"
上面代码中,this.name表示name属性所在的那个对象。由于this.name是在describe方法中调用,而describe方法所在的当前对象是person,因此this指向person,this.name就是person.name。
本质
由于函数是一个单独的值,所以它可以在不同的环境(上下文)执行。
现在问题就来了,由于函数可以在不同的运行环境执行,所以需要有一种机制,能够在函数体内部获得当前的运行环境(context)。所以,this就出现了,它的设计目的就是在函数体内部,指代函数当前的运行环境。
var f = function () {
console.log(this.x);
}
var x = 1;
var obj = {
f: f,
x: 2,
};
// 单独执行
f() // 1
// obj 环境执行
obj.f() // 2
上面代码中,函数f在全局环境执行,this.x指向全局环境的x;在obj环境执行,this.x指向obj.x。