代码中,数据处理是非常重要的一环,如数值的计算、日期和时间的获取和推算、字符串的处理、逻辑关系的处理等;本文介绍JavaScript数据处理的基础知识,包括变量、常量、各种数据类型的字面量和类型判断,以及如何在代码中添加注释等内容。
数值在计算机中处理时又分为整数(integer)和浮点数(float)。JavaScript中的整数,除了使用十进制数据,还可以使用0b为前缀的二进制数据,使用数字0为前缀的八进制数据,使用0x为前缀的十六进制数据。如下面的数值都表示十进制数11:
可以使用alert()函数显示它们,结果都会显示11。
浮点数可以处理包含小数部分的的数据,但需要注意,在计算机中处理浮点数时都会有精度限制,JavaScript中使用64位浮点数标准,数值的处理范围在Number.MIN_VALUE和Number.MAX_VALUE值之间,一般处理精度在15到17位,建议在实际应用中使用小于15位的数据;对于浮点数,可以截取固定的小数位进行处理。
字符串用于处理文本内容,在JavaScript代码中,字符串字面量可以使用一对单引号(')、一对双引号(")或者一对反单引号(`)定义。
单引号和双引号定义的字符串并没有本质区别,如果文本内容包含单引号,可以使用双引号定义,如"I'm a worker.";相对的,如果文本内容中包含双引号,则可以使用单引号定义,如'字符串可以使用双引号(")定义'。
在字符串中还可以使用\符号定义转义字符,如下表所示。
使用单引号或双引号定义的字符串中,如果内容过长,可以使用\符号说明下一行代码是本行代码的继续,如下面的代码。
<script> let s = "文本一 \ 文本二"; alert(s); </script>
本例,虽然文本一和文本二写在两行,但其中并不包含换行符(\n),执行代码显示效果如下图所示。
在单引号和双引号中如果需要换行,则必须使用\n转义字符。
反单引号定义的字符串称为“模板字符串”,其中的换行符可以保留,不必使用\n转义字符定义;同时可以使用“${<变量名>}”格式将变量的值合并到字符串中,简化了字符串的组合操作。
布尔类型(boolean),也称为逻辑类型,只处理true和false两个值,其运算包括:
变量(variant)是在代码中处理数据和对象的标识符,其要素包括变量名称和数据,如果没有赋予数据或对象实例,则为空值(null)。在早期的JavaScript中,使用var关键字声明变量,这种变量会自动提升作用域,先来看下面的代码。
<script> function fn() { for (var i = 0; i < 10; i++) { } alert(i); } // fn(); </script>
代码中使用function关键字定义了函数fn(),然后调用它。fn()函数的for语句结构中使用var关键字定义了循环控制变量i,此时,变量i的作用域会提升到fn()函数,而不只是在for语句结构中;for语句结构结束后,使用alert(i)语句显示i的值,此时会显示循环结束后的值10。
在ES6标准中增加了let关键字定义变量,此关键字定义的变量作用域只限于定义它的结构中,如下面的代码。
<script> function fn() { for (let i = 0; i < 10; i++) { } alert(i); } // fn(); </script>
执行此代码并不会显示信息,因为在for语句结构外并没有定义变量i,所以,由于变量i不存在而出错,在Chrome浏览器中,可以使用Ctrl+Shift+I组合键查看错误信息,如下图所示。
传统的JavaScript中,变量名可以使用字母、美圆符号($)或下画线(_)开始,然后由字母、下画线和数字组成。实际上,JavaScript已全面支持Unicode字符,在代码中可以使用有效的Unicode字符作为变量名,如中文,下面的代码演示了相关应用。
<script> let 拾 = 10; alert(拾); </script>
打开页面会通过消息对话框显示变量“拾”的值10,如下面所示。
在ES6标准中,新增了const关键字来定义常量。常量是在代码执行过程中,数据不会改变的标识符,如下面的代码。
<script> const BUFFER_SIZE = 255; alert(BUFFER_SIZE); </script>
常量名习惯上由大写字母、下画线(_)和数字组成,执行本例代码会显示BUFFER_SIZE常量的值255。
请注意,如果常量指定的是一个对象的实例,虽然不能修改常量指向的对象,但可以修改对象中的数据,在面向对象编程中会有详细讨论。
JavaScript代码中有几个特殊的值需要注意,包括:
前面的示例中,并没有出现数据类型的关键字;JavaScript代码中,变量和常量的数据类型由其值的类型来确定。判断数据字面量、变量或常量数据的类型,可以使用typeof运算符,此运算符会返回一个表示数据类型名称的字符串,如:
下面的代码演示了typeof运算符的应用。
<script> let x = "abc"; alert(typeof x); </script>
本例会显示string,可以修改变量x的值来观察运行结果。
实际上,JavaScript中的字面量、变量、常量都可以作为对象来操作,不同类型的对象会有不同的操作方法,如数值可以使用toFixed()方法确定保留的小数位数,下面的代码演示了相关应用。
<script> alert(12.34567.toFixed(2)); </script>
执行代码会显示浮点数12.34567保留两位小数的形式,即12.35;这里,多余的数据位会四舍五入。
通过变量名和常量名也可以调用相应的方法,如下面的代码。
<script> let x = 12.345; const PI = 3.1415926; alert(x.toFixed(2)); // 12.35 alert(PI.toFixed(4)); // 3.1416 </script>
执行代码会显示12.35和3.1416。
注释是代码中的说明内容,并不是真正的执行代码,可以用于添加开发者、版本、代码的功能等信息。JavaScript中可以使用行注释和块注释。
行注释使用//定义,从//到本行结束的内容都作为注释处理。请注意,包含在字符串中的//并不是行注释的标识,如下面代码中变量s的内容就不是行注释。
<script> let s = "//不是行注释"; alert(s); // 行注释,显示变量s的内容 // 这也是行注释 </script>
块注释使用/*开始,使用*/结束,在此之间的内容都作为注释,无论这些内容是在一行还是在多行。同样的,块注释的开始和结束标识不应在字符串中。如下面的代码。
<script> let s = `/*不是块注释 */`; alert(s); /* 块注释 显示变量s的内容 */ </script>
代码执行结果如下图所示。