携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情
1️⃣前言
大家好,我是翼同学。今天笔记的内容是:
- 记录各类表达式
2️⃣内容
2.1、概述
在JavaScript中,表达式就相当于一个短语,JavaScript解释器会将其计算出一个结果。
最简单的表达式一般包含了关键字、变量、直接量以及常量等,也叫作原始表达式。而由若干简单表达式就可以组成复杂表达式。
现简单记录一些常见的表达式。
2.2、初始化表达式
2.2.1、数组初始化表达式
数组初始化表达式是由一对方括号和其内部由逗号隔开的列表构成的。注意,初始化的结果是新创建的数组。
数组中的元素是由逗号分隔的表达式的值。
举个例子:
[] // 空数组,无任何元素
[19, 3+5] // 元素为 19 和 8 的数组
也就是说,JavaScript对数组初始化表达式的值进行求解时,会计算数组中的元素表达式。
另外,如果数组中的不写上具体的元素表达式,而是只写一个逗号,此时省略的空位就会填充上undefined。
举个例子
let myArray = [1, , ,4];
上述这个数组有四个元素,其中有两个元素是undefined。
2.2.2、对象初始化表达式
与数组初始化表达式类似,对象初始化表达式是由花括号包围起来,其中每个子表达式都包含了一个键值对,也就是属性名与冒号加上属性值。
比如:
let test = {}; // 空对象
let test2 = { a:1, b:9 }; // 拥有两个属性的对象
2.3、函数定义表达式
函数定义表达式定义了一个JavaScript函数,表达式的值就是这个新定义的函数。
一个完整的函数定义表达式包含了关键字function,以及一对圆括号,圆括号内是一个以逗号分隔的参数列表,最后就是由花括号包裹而成的JavaScript代码块(也就是函数体)。
举个例子:
let myFunc = function(val) { return val*6+1; }
当然,关于函数的内容在后续的笔记中记录。
2.4、属性访问表达式
通过属性访问表达式,我们可以得到对象的属性值或者数组的元素值。
并且属性访问有两种方法,如下所示:
表达式 . 标识符 // 方式一
表达式 [表达式] // 方式二
- 方式一:对象表达式后跟句点和标识符,此时会返回标识符所指定的属性的值。
- 方式二:对象表达式后跟一对方括号,此时会计算方括号内的表达式的值,并将其转换为字符串。
举个例子:
let oop = { x:1, y:{z:0}};
let arr = [ 6, [20, 40], oop ];
oop.x //=> 1
oop.y.z //=> 0
oop["x"] //=> 1
arr[0] //=> 6
arr[1]["1"] //=> 40
arr[2].x //=> 1
当然,如果表达式本身的计算结果是null或undefined,则会抛出一个类型错误异常,这是因为null和undefined是不能包含任意属性的。
2.5、调用表达式
调用表达式就是一种调用函数(执行方法)的语法表示。具体是由函数表达式以及圆括号组成。函数表达式指定了要调用的函数,圆括号内可以参数列表,不同参数由逗号隔开,当然也可以没有参数。
举个例子:
func(a,b) // func是一个函数表达式,a,b 是参数列表
arr.sort() // arr.sort()是一个函数,并且没有参数
当调用表达式被运行求值时,首先会计算函数表达式,如果函数表达式的值不是一个可调用的对象,则会抛出一个类型错误异常。接着会计算参数表达式,得到一组参数值,将实际参数的值赋给形参(形参是定义函数时指定的),最后就可以执行函数体中的代码。
如果函数体内使用了return语句,则该返回值就是整个调用表达式的值,否则该调用表达式的值就是undefined。
2.6、对象创建表达式
对象创建表达式创建一个对象,并调用构造函数,进而可以初始化新对象的属性。对象创建表达式和函数调用表达式很相似,只不过对象创建表达式多了一个new关键字。
举个例子:
new Object(1,9)
当然,如果对象创建表达式不用传入参数给构造函数,此时圆括号是可以省略的。比如new Object()是可以省略称new Object.
3️⃣写在最后
好了,今天的笔记就记到这里。