在 JavaScript 中,函数是一个值,所以我们可以把它当成值对待。上面代码显示了一段字符串值,即函数的源码。 的确,在某种意义上说一个函数是一个特殊值,我们可以像 sayHi() 这样调用它。 但它依然是一个值,所以我们可以像使用其他类型的值一样使用它。
我们经常需要在脚本的许多地方执行很相似的操作。 例如,当访问者登录、注销或者在其他地方时,我们需要显示一条好看的信息。 函数是程序的主要“构建模块”。函数使该段代码可以被调用很多次,而不需要写重复的代码。 我们已经看到了内建函数的示例,如 alert(message)、prompt(message, default) 和 confirm(question)。但我们也可以创建自己的函数。
我们经常需要重复执行一些操作。 例如,我们需要将列表中的商品逐个输出,或者运行相同的代码将数字 1 到 10 逐个输出。 循环 是一种重复运行同一代码的方法。
空值合并运算符(nullish coalescing operator)的写法为两个问号 ??。 由于它对待 null 和 undefined 的方式类似,所以在本文中我们将使用一个特殊的术语对其进行表示。为简洁起见,当一个值既不是 null 也不是 undefined 时,我们将其称为“已定义的(defined)”。
JavaScript 中有四个逻辑运算符:||(或),&&(与),!(非),??(空值合并运算符)。本文我们先介绍前三个,在下一篇文章中再详细介绍 ?? 运算符。 虽然它们被称为“逻辑”运算符,但这些运算符却可以被应用于任意类型的值,而不仅仅是布尔值。它们的结果也同样可以是任意类型。
在本文中,我们将进一步了解不同类型的比较,JavaScript 是如何进行比较的,包括一些重要的特殊性。在文末给出了一些秘诀,帮助你避免 “JavaScript 陷阱”相关的问题。
我们从学校里了解到过很多运算符,比如说加号 +、乘号 *、减号 - 等。 在本章中,我们将从简单的运算符开始,然后着重介绍 JavaScript 特有的方面,这些是在学校中学习的数学运算所没有涵盖的。
大多数情况下,运算符和函数会自动将赋予它们的值转换为正确的类型。 比如,alert 会自动将任何值都转换为字符串以进行显示。算术运算符会将值转换为数字。在某些情况下,我们需要将值显式地转换为我们期望的类型。